Một thay thế mã hóa nóng cho các giá trị phân loại lớn?


12

Xin chào có khung dữ liệu với các giá trị phân loại lớn trên 1600 danh mục, có bất kỳ cách nào tôi có thể tìm thấy các lựa chọn thay thế để tôi không có hơn 1600 cột.

Tôi tìm thấy liên kết thú vị dưới đây http://amunargetui.github.io/feature-hashing/#sourcecode

Nhưng họ đang chuyển đổi sang lớp / đối tượng mà tôi không muốn. Tôi muốn đầu ra cuối cùng của mình dưới dạng một khung dữ liệu để tôi có thể thử nghiệm với các mô hình học máy khác nhau? hoặc có cách nào để tôi có thể sử dụng ma trận genetrated để huấn luyện các mô hình học máy khác ngoài hồi quy Logistic hay XGBoost không?

Có cách nào tôi có thể thực hiện?


Đây thực sự là một vấn đề? Giả sử bạn đang sử dụng biểu diễn ma trận thưa thớt, mã hóa onehot sẽ không phải là vấn đề thực sự.
Louis T

@LouisT Tôi có hàng triệu hồ sơ hơn 500 triệu hồ sơ
vinaykva

Tuy nhiên, nếu nó nóng, sẽ không có vấn đề gì nếu sử dụng ma trận thưa thớt
Louis T

@LouisT Độ phức tạp sẽ tăng lên và thời gian đào tạo cũng sẽ tăng lên và dữ liệu của tôi sẽ trở nên quá thưa thớt
vinaykva

1
bài viết của bạn là khoảng 1 năm trước, và có lẽ không còn quan tâm nữa, nhưng trong trường hợp vẫn quan tâm bạn đã nghe nói về Entity Nhúng bằng cách sử dụng Mạng lưới thần kinh? Medium.com/@satnalikamayank12/
TwinPenguins

Câu trả lời:


10

Một tùy chọn là ánh xạ các giá trị hiếm tới 'khác'. Điều này thường được thực hiện trong ví dụ xử lý ngôn ngữ tự nhiên - trực giác là các nhãn rất hiếm không mang nhiều sức mạnh thống kê.

Tôi cũng đã thấy mọi người ánh xạ các giá trị phân loại 1 nóng sang các vectơ có chiều thấp hơn, trong đó mỗi vectơ 1 nóng được biểu diễn lại dưới dạng rút ra từ một Gaussian đa biến. Xem ví dụ như bài viết Kiến thức sâu, trong đó nói rằng phương pháp này được thúc đẩy bởi ý tưởng về cảm biến nén:

BARaniUK, R. Cảm biến nén. Tạp chí xử lý tín hiệu IEEE 24, 4 (2007).

Cụ thể, họ ánh xạ mỗi vectơ có độ dài N thành một vectơ ngắn hơn có độ dài log2 (N). Tôi đã không làm điều này bản thân mình nhưng tôi nghĩ nó sẽ đáng để thử.


Tôi đang tự hỏi làm thế nào để tính khoảng cách với mã hóa như vậy?
eric2323223

1

Bạn có thể đọc dữ liệu và trước tiên nhận danh sách tất cả các giá trị duy nhất của các biến phân loại của bạn. Sau đó, bạn có thể điều chỉnh một đối tượng bộ mã hóa nóng (như sklearn.pre Processing.C sorticalEncoder) trong danh sách các giá trị duy nhất của bạn.

Phương pháp này cũng có thể giúp trong một khung kiểm tra đào tạo hoặc khi bạn đang đọc dữ liệu của mình theo từng khối. Tôi đã tạo ra một mô-đun python tự làm tất cả điều này. Bạn có thể tìm thấy nó trong kho GitHub này - dummyPy

Một hướng dẫn ngắn về điều này - Làm thế nào để một biến mã hóa phân loại nóng trong Python?


0

Bạn có thể thực hiện khóa các giá trị tương tự, để các giá trị (hoặc cột) giữ mẫu giá trị gần nhất (hoặc có nhiều giá trị tương tự) có thể được thay thế bằng một giá trị (hoặc cột) và do đó 1600 giá trị của bạn có thể giảm xuống còn 400 (hoặc thậm chí ít hơn).

Ví dụ. đối với các giá trị như (mây như - Mây Nimbus, mưa phùn, mưa nhẹ, mưa, mưa lớn có thể được chuyển đổi thành (mưa nhẹ, mưa, mưa lớn).


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.