Bài 2: Thấu hiểu dữ liệu

🎯 Mục tiêu học tập

Sau khi hoàn thành bài này, bạn sẽ có thể:

  • Hiểu được khái niệm KYD (Know Your Data) và tầm quan trọng của nó
  • Áp dụng 9 câu hỏi cơ bản để đánh giá dữ liệu
  • Sử dụng công cụ Know Your Data của Google
  • Thực hiện KYD với Python

📖 Giới thiệu

Nếu trong lĩnh vực tài chính thuần, ta đã quen thuộc với khái niệm "thấu hiểu khách hàng" (KYC, viết tắt của Know Your Customer), thì dưới góc nhìn kĩ thuật, khi xử lý dữ liệu tài chính, ta có một thuật ngữ tương tự, đó là "thấu hiểu dữ liệu" (KYD, viết tắt của Know Your Data). Đây là một bước quan trọng trong quá trình xử lý dữ liệu, đặc biệt là khi ta xử lý dữ liệu phi và bán cấu trúc. Vậy làm thế nào để chúng ta có thể thấu hiểu dữ liệu?

1. Thấu hiểu dữ liệu

Để thực hiện bước KYD này, ta cần phải hiểu được kiểu dữ liệu mà ta đang xử lý là gì, các đặc điểm cũng như những vấn đề cần phải được xử lý với kiểu dữ liệu đó. Dưới đây là 9 câu hỏi cơ bản về dữ liệu bạn thu thập và dự định sử dụng để có thể thấu hiểu dữ liệu của mình.

Nhóm 1: Cấu trúc và Định dạng (Câu hỏi 1-3)

Nhóm 2: Tính chất và Ràng buộc (Câu hỏi 4-6)

Nhóm 3: Nguồn gốc và Chất lượng (Câu hỏi 7-9)

#Câu hỏiGiải thích
1Dữ liệu có các trường thông tin định nghĩa trước không?Khi dữ liệu có các cột được định nghĩa trước, cấu trúc dữ liệu dễ xác định và duy trì hơn.
2Dữ liệu có cần biến đổi không?Một số dữ liệu tốt nhất nên để ở dạng thô, trong khi một số dữ liệu khác cần được biến đổi (thay đổi khoảng giá trị về một khoảng đặc biệt, ví dụ [0,1]) và chuẩn hoá (thay đổi phân phối của dữ liệu, ví dụ phân phối Gaussian) để giúp chúng ta dễ dàng tìm ra các tri thức ẩn bên trong.
3Dữ liệu có ràng buộc gì không?Ví dụ nếu ta tính xác suất, ta sẽ kì vọng không có giá trị nào âm và không có giá trị nào lớn hơn 1. Đây chính là ràng buộc của dữ liệu.
4Dữ liệu có quan sát được không?Nhiều chuỗi dữ liệu tài chính có thể quan sát trực tiếp - như giá cổ phiếu, khối lượng cổ phiếu, phát hành trái phiếu, v.v. Tuy nhiên, không phải tất cả dữ liệu đều có thể quan sát trực tiếp - mô hình rủi ro tín dụng ảnh hưởng lớn tới xác suất vỡ nợ tuy nhiên kết quả dự đoán của mô hình ta không quan sát được.
5Dữ liệu là định lượng, định tính hay là dữ liệu lai?Dữ liệu định lượng là dữ liệu có thể được đo lường trong khi dữ liệu định tính thì không. Rõ ràng, dữ liệu định tính cần được xử lý và diễn giải, thông qua khai thác văn bản, phân tích tình cảm hoặc một số phương tiện khác.
6Dữ liệu chứa giá trị liên tục hay phân loại?Phần lớn các chuỗi dữ liệu tài chính thực sự mang tính phân loại. Ví dụ: chênh lệch tín dụng cũng được phân loại và theo thứ tự. Những thứ khác chỉ mang tính phân loại, chẳng hạn như phân loại ngành. Rất dễ nhầm lẫn giữa hai loại khi các danh mục được liệt kê dưới dạng số.
7Nếu dữ liệu không ở dạng số, có vấn đề về ngôn ngữ không?Dữ liệu không chuẩn rất phức tạp vì nó có thể ở các ngôn ngữ khác nhau. Phân tích cảm xúc cần phải tính đến các phần của ngôn ngữ, chẳng hạn như ẩn dụ, hình ảnh của lời nói, biểu thức, thành ngữ, nhiều phủ định, châm biếm và thậm chí cả biểu tượng cảm xúc.
8Dữ liệu có được thu thập ở tần suất mà nó được tạo ra không?Đối với các sàn giao dịch, thường có rất nhiều dữ liệu được cung cấp. Nếu bạn là một nhà giao dịch không thường xuyên, chẳng hạn trong tài khoản hưu trí của chính bạn, bạn có thể bị ngập bởi dữ liệu tần suất cao, cung cấp quá nhiều thông tin và sẽ yêu cầu xử lý rất lớn chỉ để có ý nghĩa ở quy mô phù hợp hơn với các quyết định giao dịch mà bạn sẽ làm. Ngược lại, dữ liệu hàng ngày sẽ không phù hợp với một nhà tạo lập thị trường. Các nhà tạo lập thị trường phải chịu sự biến động trong ngày vì họ phải tạo ra thị trường hai mặt trong suốt cả ngày. Sự biến động ở cấp độ hàng ngày là tần suất quá thấp để có thể nắm bắt được những gì có thể là một sự kiện quan trọng.
9Dữ liệu có được làm sạch hoặc kiểm tra từ nhà cung cấp không?Nếu bạn cho rằng dữ liệu được làm sạch từ nhà cung cấp, thì bạn sẽ mời các lỗ hổng, sơ suất, sai sót của nhà cung cấp trộn lẫn vào dữ liệu của bạn, cũng như các lỗi trong việc chuyển và nhập dữ liệu từ phía họ sang của bạn. Một cách để làm sạch dữ liệu là có các nguồn dự phòng. Hãy tưởng tượng bạn có bốn nguồn để cho bạn biết giá cổ phiếu. Bất kỳ sự khác biệt nào có thể được xác định và xử lý theo cách thủ công; thậm chí, bạn có thể đưa ra các quy tắc và bộ lọc để đảm bảo dữ liệu thống nhất với chính nó.

2. Công cụ

Một trong số những công cụ thú vị các bạn có thể sử dụng để có thể thấu hiểu dữ liệu dễ dàng hơn, đó chính Know Your Data. Được phát triển bởi Google, Know Your Data là một công cụ giúp các nhà nghiên cứu, kỹ sư, nhà phân tích dữ liệu, và khoa học dữ liệu có thể dễ dàng khám phá bộ dữ liệu, cải thiện chất lượng dữ liệu và giảm thiểu các vấn đề từ dữ liệu.

Know Your Data

Đây là một công cụ mã nguồn mở, nên các bạn có thể tham khảo và sử dụng cho các dự án của mình. Các bạn có thể tìm hiểu thêm về công cụ này thông qua mã nguồn tại đây.

Bên cạnh đó, chúng ta cũng có thể thực hiện các bước Thấu hiểu dữ liệu với Python. Đây cũng sẽ là nội dung mà chúng ta sẽ cùng nhau tiếp cận trong những phần tiếp theo.

3. Checklist KYD với Python

Dưới đây là một số code Python để thực hiện KYD:

import pandas as pd
import numpy as np
 
def know_your_data(df):
    """Thực hiện KYD cơ bản trên DataFrame"""
    print("=" * 50)
    print("KNOW YOUR DATA (KYD) REPORT")
    print("=" * 50)
 
    # 1. Kiểm tra cấu trúc
    print("\n1. CẤU TRÚC DỮ LIỆU:")
    print(f"   - Số dòng: {len(df)}")
    print(f"   - Số cột: {len(df.columns)}")
    print(f"   - Các cột: {list(df.columns)}")
 
    # 2. Kiểm tra dữ liệu khuyết
    print("\n2. DỮ LIỆU KHUYẾT:")
    missing = df.isnull().sum()
    missing_pct = (missing / len(df)) * 100
    for col in df.columns:
        if missing[col] > 0:
            print(f"   - {col}: {missing[col]} ({missing_pct[col]:.2f}%)")
 
    # 3. Kiểm tra kiểu dữ liệu
    print("\n3. KIỂU DỮ LIỆU:")
    print(df.dtypes)
 
    # 4. Thống kê mô tả
    print("\n4. THỐNG KÊ MÔ TẢ:")
    print(df.describe())
 
    # 5. Kiểm tra ràng buộc
    print("\n5. KIỂM TRA RÀNG BUỘC:")
    for col in df.select_dtypes(include=[np.number]).columns:
        if df[col].min() < 0:
            print(f"   - {col}: Có giá trị âm (min: {df[col].min()})")
        if col in ['probability', 'rate'] and df[col].max() > 1:
            print(f"   - {col}: Có giá trị > 1 (max: {df[col].max()})")
 
    # 6. Kiểm tra duplicates
    print(f"\n6. DỮ LIỆU TRÙNG LẶP: {df.duplicated().sum()} dòng")
 
    return {
        'shape': df.shape,
        'missing': missing.to_dict(),
        'dtypes': df.dtypes.to_dict()
    }
 
# Sử dụng
# kyd_report = know_your_data(your_dataframe)

✅ Tóm tắt

Trong bài này, chúng ta đã tìm hiểu:

  • KYD (Know Your Data): Tương tự như KYC trong tài chính
  • 9 câu hỏi cơ bản được chia thành 3 nhóm:
    • Nhóm 1: Cấu trúc và định dạng
    • Nhóm 2: Tính chất và ràng buộc
    • Nhóm 3: Nguồn gốc và chất lượng
  • Công cụ: Know Your Data của Google và Python

💡 Lưu ý quan trọng

  • Luôn thực hiện KYD trước khi bắt đầu phân tích
  • 9 câu hỏi này giúp bạn hiểu rõ dữ liệu và tránh các lỗi phổ biến
  • Sử dụng checklist trên để tự động hóa quá trình KYD

🧪 Thực hành

Hãy thử áp dụng 9 câu hỏi KYD vào một dataset tài chính của riêng bạn và sử dụng hàm know_your_data() ở trên để tạo báo cáo!

➡️ Bước tiếp theo

Sau khi đã thấu hiểu dữ liệu, bước tiếp theo là đánh giá chất lượng dữ liệu. Hãy tiếp tục với Bài 3: Đánh giá chất lượng dữ liệu!

Chúc các bạn học tập vui vẻ!

Một số tài liệu tham khảo: