Mã hóa các tính năng phân loại thành số cho máy học


14

Nhiều thuật toán học máy, ví dụ như mạng nơ ron, sẽ xử lý các con số. Vì vậy, khi bạn có một dữ liệu phân loại, bạn cần chuyển đổi nó. Ý tôi là phân loại, ví dụ:

Thương hiệu xe hơi: Audi, BMW, Chevrolet ... ID người dùng: 1, 25, 26, 28 ...

Mặc dù id người dùng là số, nhưng chúng chỉ là nhãn và không có nghĩa là liên quan đến tính liên tục, như tuổi hoặc tổng tiền.

Vì vậy, cách tiếp cận cơ bản dường như sử dụng các vectơ nhị phân để mã hóa các danh mục:

Audi: 1, 0, 0 ... BMW: 0, 1, 0 ... Chevrolet: 0, 0, 1 ...

Sẽ ổn khi có một vài danh mục, nhưng ngoài ra nó có vẻ hơi kém hiệu quả. Ví dụ: khi bạn có 10 000 id người dùng để mã hóa, đó là 10 000 tính năng.

Câu hỏi là, có cách nào tốt hơn không? Có lẽ một liên quan đến xác suất?


3
Tại sao bạn muốn đưa ID người dùng vào mô hình dự đoán? Đối với các biến phân loại khác có số lượng thẻ lớn hơn bạn muốn khi bạn sử dụng mã hóa biến giả như bạn mô tả, trước tiên tôi chạy chúng qua cây quyết định như là công cụ dự đoán duy nhất - để thu gọn các mức. Cũng có thể tái bin bằng cách nhóm các cấp độ "hiếm", v.v.
B_Miner

Điều này nghe có vẻ thú vị - giống như các hiệu ứng ngẫu nhiên trong một mô hình thống kê nơi bạn quan tâm đến các hiệu ứng cụ thể cho một cá nhân cụ thể. Tôi có thể tưởng tượng các tình huống sẽ hữu ích, ví dụ nếu bạn gặp lại những cá nhân tương tự và muốn dự đoán những gì cá nhân cụ thể đó sẽ làm. Xin vui lòng chia sẻ thêm về kế hoạch của bạn nếu bạn có thể. Ngoài ra, bạn có thể xem mô hình đa cấp, mặc dù điều đó thường được sử dụng trong các cài đặt suy luận hơn là học máy.
Anne Z.

Tôi nhớ đã đọc về một cuộc thi ML, nơi một số nhà nghiên cứu thông minh phát hiện ra rằng id người dùng trong dữ liệu đã được đưa ra tại thời điểm tạo tài khoản người dùng. Do đó, tem thời gian, đã bị xáo trộn, đã được tiết lộ (ảnh hưởng tích cực đến dự đoán đáp ứng). Bên cạnh những trường hợp như vậy và những trường hợp được đề cập bởi Anne (hệ thống đề xuất) tôi sẽ không bao gồm userID.
steffen

Anne - Không phải là một mô hình hiệu ứng ngẫu nhiên thực sự KHÔNG quan tâm đến các cá nhân - do đó chúng được coi là một mẫu từ dân số?
B_Miner

Tôi không hiểu, nếu vấn đề học tập là dự đoán loại nhị phân giàu có / không giàu có, tại sao nó lại có ý nghĩa đối với thương hiệu xe hơi của một người dùng cụ thể. ID người dùng có thể được sử dụng nếu mạng xã hội của cá nhân được biết đến: ví dụ: để chứng minh rằng bạn bè của người dùng X có xu hướng giàu có hơn. Có điều gì sai với dòng suy nghĩ này?
Vladtn

Câu trả lời:


6

Bạn luôn có thể đối xử với id người dùng của bạn như túi lời: hầu hết các phân loại văn bản có thể đối phó với hàng trăm ngàn các yếu tố khi dữ liệu là thưa thớt (nhiều số không mà bạn không cần phải lưu trữ một cách rõ ràng trong bộ nhớ, ví dụ nếu bạn sử dụng dòng nén thưa thớt đại diện cho ma trận dữ liệu của bạn).

Tuy nhiên, câu hỏi đặt ra là: nó có ý nghĩa gì khi bạn gặp vấn đề cụ thể để coi id người dùng là các tính năng? Sẽ không có ý nghĩa hơn khi không chuẩn hóa dữ liệu quan hệ của bạn và sử dụng các tính năng của người dùng (tuổi, vị trí, ký tự của biệt hiệu trực tuyến, lịch sử giao dịch ...) thay vì id của họ?

Bạn cũng có thể thực hiện phân cụm các vectơ người dùng thô của mình và sử dụng N id trung tâm gần nhất hàng đầu làm các tính năng được kích hoạt thay cho id người dùng.


OK, trong khi đây là một câu hỏi chung chung, tôi thấy hầu hết các bạn tập trung vào vấn đề id người dùng, vì vậy đây là lý do tại sao tôi muốn sử dụng chúng. Hãy xem một trong những cuộc thi của Kaggle, về Grockit: kaggle.com/c/WhatDoYouKnow . Mục tiêu là để dự đoán liệu người dùng sẽ trả lời chính xác một câu hỏi. Theo tôi, đây là một vấn đề tương tự đối với các hệ thống đề xuất, bạn chỉ nhận được câu hỏi thay vì phim và sửa / không chính xác thay vì xếp hạng, cộng với một số dữ liệu khác. Dấu thời gian có sẵn :)
Nucular

1
Trong trường hợp đó, bạn có thể đưa ra giả định rằng người dùng là độc lập và bạn có thể xây dựng một trình phân loại cho mỗi người dùng chỉ được đào tạo về lịch sử của riêng họ.
ogrisel

1

Mã hóa bằng nhau có lẽ là những gì bạn đang tìm kiếm khi cố gắng mã hóa các lớp vào mạng thần kinh. Nó có xu hướng hoạt động tốt hơn mã hóa "1 trong n" được tham chiếu trong các bài viết khác. Để tham khảo tôi có thể đề xuất: http://www.heatonresearch.com/wiki/Equilonymous


Điều này dường như có liên quan đến mã hóa giá trị đầu ra, không phải mã hóa phân loại cho các giá trị đầu vào, đó là những gì OP đang yêu cầu.
Alex
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.