Bây giờ tôi đã xây dựng các mô hình với dữ liệu phân loại và trong tình huống này, về cơ bản tôi mặc định sử dụng hàm LabelEncoder của scikit-learn để chuyển đổi dữ liệu này trước khi xây dựng mô hình. Tôi hiểu sự khác biệt giữa OHE, LabelEncodervà DictVectorizorvề những gì họ đang làm để các dữ liệu, nhưng những gì không phải là rõ ràng với tôi là khi bạn có thể chọn để sử dụng một kỹ thuật hơn người khác. Có những thuật toán hoặc tình huống nhất định trong đó một cái có ưu điểm / nhược điểm so với những cái khác không? Có một số trường hợp mà LabelEncoder hoặc DictVectorizor hữu ích, nhưng theo tôi thì khá hạn chế do thông thường. LabelEncoder có thể biến [chó, mèo, chó, chuột, mèo] thành [1,2,1,3,2], nhưng sau đó, quy tắc áp đặt có nghĩa là trung bình của chó và chuột là mèo. Tuy nhiên, vẫn có các thuật toán như cây quyết định và rừng ngẫu nhiên có thể hoạt động với các biến phân loại tốt và LabelEncoder có thể được sử dụng để lưu trữ các giá trị sử dụng ít không gian đĩa hơn. One-Hot-Encoding có lợi thế là kết quả là nhị phân chứ không phải thứ tự và mọi thứ nằm trong một không gian vectơ trực giao. Nhược điểm là đối với cardinality cao, không gian tính năng thực sự có thể nổ tung nhanh chóng và bạn bắt đầu chiến đấu với lời nguyền của chiều. Trong những trường hợp này, tôi thường sử dụng mã hóa một nóng theo sau là PCA để giảm kích thước. Tôi thấy rằng sự kết hợp khôn ngoan của một PCA nóng cộng có thể hiếm khi bị đánh bại bởi các chương trình mã hóa khác. PCA tìm thấy sự chồng chéo tuyến tính, do đó, đương nhiên sẽ có xu hướng nhóm các tính năng tương tự thành cùng một tính năng. Trong khi AN6U5 đã đưa ra một câu trả lời rất hay, tôi muốn thêm một vài điểm để tham khảo trong tương lai. Khi xem xét Một mã hóa nóng (OHE) và Mã hóa nhãn , chúng tôi phải thử và hiểu mô hình nào bạn đang cố gắng xây dựng. Cụ thể là hai loại mô hình chúng tôi sẽ xem xét là:
Chúng ta hãy xem xét khi nào nên áp dụng OHE và khi nào nên áp dụng Mã hóa nhãn trong khi xây dựng các mô hình dựa trên cây. Chúng tôi áp dụng OHE khi:
Chúng tôi áp dụng mã hóa Nhãn khi:
Trong trường hợp bạn muốn tiếp tục với OHE, như @ AN6U5 đã đề xuất, bạn có thể muốn kết hợp PCA với OHE. Hãy xem xét khi nào nên áp dụng Mã hóa OHE và Nhãn trong khi xây dựng các mô hình không dựa trên cây. Để áp dụng mã hóa Nhãn, sự phụ thuộc giữa tính năng và mục tiêu phải là tuyến tính để Mã hóa nhãn được sử dụng hiệu quả. Tương tự, trong trường hợp sự phụ thuộc là phi tuyến tính, bạn có thể muốn sử dụng OHE cho cùng. Lưu ý: Một số lời giải thích đã được tham khảo từ Cách giành chiến thắng trong Cuộc thi khoa học dữ liệu từ Coursera. LabelEncoder dành cho dữ liệu thứ tự, còn OHE dành cho dữ liệu danh nghĩa. |