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ỏi | Giải thích |
|---|---|---|
| 1 | Dữ 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. |
| 2 | Dữ 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. |
| 3 | Dữ 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. |
| 4 | Dữ 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. |
| 5 | Dữ 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. |
| 6 | Dữ 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ố. |
| 7 | Nế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. |
| 8 | Dữ 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. |
| 9 | Dữ 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.

Đâ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:
- Machine Learning for Financial Risk Management with Python, Abdullah Karasan, 7 December 2021.
- WoldQuant University. “MscFe 600 Financial Data.” WoldQuant University, https://learn.wqu.edu/my-path/courses/financial-data/. Accessed 22 August 2022.
- Boutin, Chard. "Stock Performance Tied to Ease of Pronouncing Company’s Name." https://www.princeton.edu/news/2006/05/29/study-stock-performance-tied-ease-pronouncing-companys-name. Accessed 22 August 2022.
- Know Your Data. Accessed 22 August 2022.