Nhà khoa học dữ liệu · Bước 3/8 · 10 phút
Khám phá dữ liệu trước khi tin nó
Làm một phân tích khám phá cơ bản và phát hiện những vấn đề có thể đánh lừa mô hình.
Nhìn trước, mô hình sau
Phân tích dữ liệu khám phá, gọi tắt là EDA (exploratory data analysis), là làm quen với bộ dữ liệu trước khi rút ra kết luận. Có bao nhiêu hàng? Mỗi cột nghĩa là gì? Giá trị thường gặp là bao nhiêu, giá trị nào lạ? Đây là công việc thám tử, và là nơi bạn tìm ra phần lớn những vấn đề sau này sẽ âm thầm phá hỏng mô hình.
Hãy ghi ra điều bạn kỳ vọng trước khi nhìn. Điều bất ngờ mới là phần thú vị, và bạn chỉ nhận ra nó khi đã có kỳ vọng từ trước.
Phân phối và giá trị ngoại lai
Phân phối (distribution) cho thấy các giá trị trải ra thế nào. Biểu đồ histogram giá nhà có thể cho thấy phần lớn căn nằm ở khoảng giữa, kèm một cái đuôi dài gồm những căn rất đắt. Số trung bình che mất điều này, nên hãy xem cả trung vị và các phân vị: df['price'].describe() cho bạn tất cả trong một dòng.
Giá trị ngoại lai (outlier) là những giá trị nằm xa phần còn lại. Có cái là thật, như một biệt thự thật sự. Có cái là lỗi, như tuổi bằng 999. Đừng tự động xóa. Hãy tìm hiểu xem nó thuộc loại nào và ghi lại quyết định của bạn.
Dữ liệu thiếu luôn có lý do
df.isna().sum() đếm số giá trị thiếu trong từng cột. Con số đó ít quan trọng hơn lý do. Nếu thu nhập bị thiếu chủ yếu ở khách hàng trẻ, việc bỏ những hàng đó sẽ làm thay đổi đối tượng mà phân tích của bạn nói đến. Điền chỗ trống bằng số trung bình cũng có thể che giấu chính vấn đề ấy.
Đôi khi “thiếu” tự nó đã là thông tin. Ô “ngày hủy” để trống có thể chỉ đơn giản là khách chưa hủy. Hãy hỏi người thu thập dữ liệu trước khi quyết định.
Vẽ ra, và cảnh giác với rò rỉ dữ liệu
matplotlib là thư viện vẽ biểu đồ cơ bản của Python, còn seaborn xây trên nó để vẽ nhanh các biểu đồ thống kê. Vài dòng code là có histogram, box plot hay scatter plot. Một biểu đồ thường cho thấy điều mà mười con số tóm tắt che mất.
Trong lúc khám phá, hãy để ý rò rỉ dữ liệu (leakage): một cột mà vào thời điểm cần dự đoán, bạn chưa thể biết. Cột “đã hoàn tiền” trong bộ dữ liệu dùng để dự đoán khiếu nại là ví dụ kinh điển. Nếu một cột dự đoán tốt đến mức khó tin, hãy hỏi xem nó được điền vào lúc nào.
Thử ngay
EDA mười phút trên một bộ dữ liệu công khai
- 1.Trên Colab hoặc Kaggle notebook, nạp một bộ dữ liệu công khai nhỏ, ví dụ file giá nhà California ở bước trước.
- 2.Chạy df.describe() và df.isna().sum().
- 3.Vẽ một histogram và một scatter plot bằng seaborn: import seaborn as sns, rồi sns.histplot(df['median_house_value']).
- 4.Viết ba câu: một điều bất ngờ, một lỗi dữ liệu có thể có, một câu hỏi dành cho người quản lý dữ liệu.