EDA (Exploratory Data Analysis – Phân tích Khám phá Dữ liệu) là một bước quan trọng trước khi làm bất kỳ một bài toán ML với dữ liệu dạng bảng nào. Show Trước khi xây dựng mô hình, bạn cần xây dựng đặc trưng. Trước khi xây dựng đặc trưng, bạn phải làm bước khám phá dữ liệu. EDA (Exploratory Data Analysis – Phân tích Khám phá Dữ liệu) là một bước quan trọng trước khi làm bất kỳ một bài toán ML với dữ liệu dạng bảng nào. Nội dung chính
Trước khi xây dựng mô hình, bạn cần xây dựng đặc trưng. Trước khi xây dựng đặc trưng, bạn phải làm bước khám phá dữ liệu. Trong một bài toán Machine Learning thông thường, có thể nói Feature Engineering là bước quan trọng nhất quyết định đến chất lượng của mô hình dự đoán. Nếu coi mô hình là một cỗ máy, thì dữ liệu nguyên bản (raw data) giống như là dầu thô. Việc đổ "dầu thô" vào thẳng "cỗ máy dự đoán" chắc chắn sẽ mang lại kết quả không tốt. Vì vậy, attributes của dữ liệu nguyên bản cần được tinh lọc thành features trước khi đưa vào thuật toán Machine Learning. Việc tinh lọc này gọi là Feature Engineering. Quy trình thực hiện Feature Engineering gồm những bước nhỏ sau:
Tuy nhiên, để có thể chọn lọc ra features từ dữ liệu, chúng ta cần có một cái nhìn toàn cảnh về bộ dữ liệu đó.
Việc khó nhất trong Data Science/Machine Learning là hiểu được dữ liệu. Có rất nhiều kỹ thuật để phân tích dữ liệu, một trong số đó là EDA. 1. EDA là gì?Exploratory Data Analysis (EDA) là một phương pháp phân tích dữ liệu chủ yếu sử dụng các kỹ thuật về biểu đồ, hình vẽ. Khác với statistical graphics, EDA không chỉ tập trung vào một phương diện đặc trưng nào của dữ liệu mà trực tiếp làm dữ liệu tự khám phá ra cấu trúc của nó, đồng thời giúp chúng ta có cơ sở để chọn mô hình trong các bước tiếp theo. Những kỹ thuật biểu đồ được sử dụng trong EDA thường khá đơn giản, bao gồm một vài kỹ thuật sau:
2. Phân tích bộ dữ liệu Ames House Prices (Link)Trong bài tutorial này, chúng ta sẽ áp dụng phương pháp EDA lên bộ dữ liệu Ames House Prices. Đây là bộ dữ liệu về giá nhà ở tại Ames, Iowa, USA dựa trên rất nhiều những tiêu chí đánh giá. Bộ dữ liệu này cũng được sử dụng cho một cuộc thi về Advanced Regression Techniques trên Kaggle. Trước tiên, chúng ta tiến hành import những thư viện sẽ sử dụng (numpy, pandas, seaborn, scikit-learn). Tutorial này được chạy trên môi trường Python 3.
Bộ dữ liệu Ames bao gồm 1460 mẫu trong tập training và 1460 mẫu trong tập testing. Mỗi mẫu có 79 attributes, trong đó 43 attributes là định tính (qualitative) và 36 attributes là định lượng (quantitative). Ngoài ra còn có thêm 2 trường là Id và SalePrice (giá bán nhà cần dự đoán). Đoạn code sau thực hiện việc phân loại attributes.
2.1. SalePriceTrước khi đi vào phân tích attributes của bộ dữ liệu, ta cần phân tích biến SalePrice. Đây chính là giá trị mà mô hình cần dự đoán. Theo tinh thần của EDA, SalePrice sẽ được mô tả qua histogram.
Dễ thấy, phân bố của biến SalePrice không phải là phân bố chuẩn (normal) mà giống với phân bố log-normal. Vì vậy, trước khi đưa vào thuật toán Machine Learning, biến SalePrice cần được biến đổi bằng log transformation. 2.2. Quantitative AttributesTương tự, chúng ta kiểm tra phân bố của tất cả các biến định lượng (quantitative) trong bộ dữ liệu.
Có thể thấy, có một vài biến cần phải biến đổi log transformation như: TotalBsmtSF, KitchenAbvGr, LotFrontage, LotArea, ... Tiếp theo, chúng ta quan sát quan hệ giữa giá nhà với các giá trị định lượng thông qua biểu đồ scatter plot.
Qua phân tích các scatter plot, các biến như LotFrontage, LotArea, OverallQual, TotalBsmtSF, ... có quan hệ tuyến tính (linear) với SalePrice. Một số biến khác như BsmtFullBath, HalfBath, Fireplaces, ... lại có thể biễu diễn SalePrice thông qua phương trình bậc hai (quadratic equation). 2.3. Qualitative AttributesĐối với các biến định tính, box plot sẽ được sử dụng để phân tích phân bố của SalePrice đối với từng attribute.
Một số biến thể hiện sự đa dạng rõ rệt của SalePrice so với các biến còn lại, ví dụ như: Neighborhood, SaleCondition, ... 2.4. CorrelationsCuối cùng, chúng ta xem xét mối tương quan giữa các biến của dữ liệu.
Trong Corretion Matrix trên, chúng ta thấy có một số biến có tương quan rõ rệt với nhau như họ các biến Garage hay họ các biến Bsmt. Do đó, có thể lược bỏ một số biến để làm giảm độ phức tạp của mô hình mà không làm ảnh hưởng quá nhiều đến hiệu suất. 3. Kết luậnThông qua bài viết và ví dụ trên, chúng ta đã phần nào hiểu được tầm quan trọng cũng như quy trình thực hiện phân tích dữ liệu EDA trước khi đưa dữ liệu vào Feature Engineering. Việc lựa chọn features đúng và tốt sẽ giúp chất lượng mô hình dự đoán được cải thiện đáng kể. 4. Tài liệu tham khảo
|