Hợp nhất dữ liệu thưa thớt và dày đặc trong học máy để cải thiện hiệu suất


17

Tôi có các tính năng thưa thớt mang tính dự đoán, tôi cũng có một số tính năng dày đặc cũng mang tính dự đoán. Tôi cần kết hợp các tính năng này với nhau để cải thiện hiệu suất tổng thể của trình phân loại.

Bây giờ, điều là khi tôi cố gắng kết hợp những thứ này lại với nhau, các tính năng dày đặc có xu hướng chiếm ưu thế hơn so với các tính năng thưa thớt, do đó chỉ cải thiện 1% trong AUC so với mô hình chỉ có các tính năng dày đặc.

Có ai đó gặp phải vấn đề tương tự? Thực sự đánh giá cao các đầu vào, loại bị mắc kẹt. Tôi đã thử rất nhiều phân loại khác nhau, kết hợp các phân loại, biến đổi tính năng và xử lý với các thuật toán khác nhau.

Xin được cảm ơn trước về sự giúp đỡ.

Chỉnh sửa :

Tôi đã thử các đề xuất được đưa ra trong các ý kiến. Những gì tôi đã quan sát là, đối với gần 45% dữ liệu, các tính năng thưa thớt hoạt động rất tốt, tôi nhận được AUC khoảng 0,9 chỉ với các tính năng thưa thớt, nhưng đối với các tính năng dày đặc còn lại hoạt động tốt với AUC khoảng 0,75. Tôi đã cố gắng tách các bộ dữ liệu này, nhưng tôi nhận được AUC là 0,6, vì vậy, tôi không thể đơn giản đào tạo một mô hình và quyết định sử dụng các tính năng nào.

Về đoạn mã, tôi đã thử rất nhiều thứ, mà tôi không chắc chính xác những gì để chia sẻ :(


Làm thế nào thưa thớt các tính năng của bạn? Chúng có đầy 1% hay thậm chí ít hơn?
João Almeida

2
Ngoài ra, bạn nên lưu ý rằng nếu các tính năng của bạn thưa thớt thì chúng chỉ nên giúp phân loại một phần nhỏ trong tập dữ liệu của bạn, điều đó có nghĩa là tổng thể độ chính xác không nên thay đổi đáng kể. Đây là một phỏng đoán, vì tôi không biết đặc điểm của bộ dữ liệu của bạn là gì.
João Almeida

@ JoãoAlmeida Họ không thưa thớt. Họ được lấp đầy khoảng 5%. Vấn đề là khi tôi nhìn vào sự khác biệt trong các dự đoán từ hai mô hình, trong đó các dự đoán khác nhau, mô hình với các tính năng thưa thớt có xu hướng hoạt động tốt hơn, đó là lý do tại sao tôi mong đợi nó sẽ thấy sự tăng cường trong AUC khi tôi kết hợp chúng với các tính năng dày đặc . Tôi đang nhận được một sự thúc đẩy, nhưng có vẻ rất thấp.
Sagar Waghmode

hum ... Tôi không có ý tưởng nào cho bạn sau đó
João Almeida

Tôi đã gặp vấn đề tương tự, có thể chỉ đơn giản là đặt tính năng dày đặc và thưa thớt trong một mô hình duy nhất không phải là một lựa chọn tốt. có lẽ bạn có thể thử mô hình rộng và sâu. rộng cho các tính năng thưa thớt và sâu cho các tính năng dày đặc, nếu bạn đã thử phương pháp này, xin vui lòng cho tôi biết câu trả lời.
Jianye Ji

Câu trả lời:


6

Đây có vẻ như là một công việc cho Phân tích thành phần chính. Trong Scikit là PCA được triển khai tốt và nó đã giúp tôi rất nhiều lần.

PCA, theo một cách nào đó, kết hợp các tính năng của bạn. Bằng cách giới hạn số lượng thành phần, bạn tìm nạp mô hình của mình với dữ liệu không có tiếng ồn (trong trường hợp tốt nhất). Bởi vì mô hình của bạn tốt như dữ liệu của bạn.

Hãy xem xét dưới đây một ví dụ đơn giản.

from sklearn.pipeline import Pipeline
pipe_rf = Pipeline([('pca', PCA(n_components=80)),
                    ('clf',RandomForestClassifier(n_estimators=100))])
pipe_rf.fit(X_train_s,y_train_s)

pred = pipe_rf.predict(X_test)

Tại sao tôi chọn 80? Khi tôi vẽ phương sai tích lũy, tôi đã nhận được điều này dưới đây, điều này cho tôi biết rằng với ~ 80 thành phần, tôi đạt được gần như tất cả các phương sai. phương sai tích lũy

Vì vậy, tôi sẽ nói hãy thử nó, sử dụng nó trong các mô hình của bạn. Nó sẽ giúp.


4

Cách tốt nhất để kết hợp các tính năng là thông qua các phương pháp tập hợp. Về cơ bản có ba phương pháp khác nhau: đóng bao, tăng tốc và xếp chồng. Bạn có thể sử dụng Adabbost tăng cường với lựa chọn tính năng (trong trường hợp này xem xét cả tính năng thưa thớt và dày đặc) hoặc dựa trên xếp chồng (tính năng ngẫu nhiên - không gian con ngẫu nhiên) Tôi thích tùy chọn thứ hai bạn có thể đào tạo một nhóm người học cơ sở (quyết định. tập hợp con và tính năng ngẫu nhiên (giữ cho người học cơ sở đào tạo cho đến khi bạn bao quát toàn bộ bộ tính năng) Bước tiếp theo là kiểm tra tập huấn luyện để tạo dữ liệu meta. Sử dụng dữ liệu meta này để đào tạo một trình phân loại meta. Trình phân loại meta sẽ chỉ ra tính năng nào quan trọng hơn và loại mối quan hệ nào nên được sử dụng


Bạn có thể vui lòng chia sẻ các tài liệu liên quan? Không chính xác bạn có nghĩa là gì?
Sagar Waghmode

Bạn có thể đọc một bài viết về đặt cược "các vấn đề trong kỹ thuật xếp chồng, 1999" đọc về xếp chồng. Điều rất quan trọng để biết rằng tôi đang nói về toàn bộ vectơ (ví dụ 1x36 trong trường hợp Hog) là một tính năng, nhưng không phải là kích thước bên trong nó. Bạn cần theo dõi tính năng nào được sử dụng với người học cơ sở nào. Hãy cẩn thận về vấn đề quá mức
Bashar Haddad

Nếu bạn cung cấp thêm chi tiết về cơ sở dữ liệu, số lớp, số mẫu, mã, những gì bạn đã thử, những gì bạn nhận thấy, bạn có vấn đề mất cân bằng dữ liệu, mẫu ồn ào, v.v. Tất cả những chi tiết này đều quan trọng và có thể giúp lựa chọn phương pháp tốt nhất. Cung cấp cho tôi thêm chi tiết nếu điều này ổn và tôi có thể giúp đỡ theo cách tốt hơn
Bashar Haddad

1

Các nhóm biến có thể là đa hướng hoặc chuyển đổi giữa thưa thớt và dày đặc có thể sai. Bạn đã nghĩ về việc sử dụng một phân loại bỏ phiếu / phân loại hòa tấu? http://scikit-learn.org/urdy/modules/ensemble.html Bằng cách đó bạn có thể giải quyết cả hai vấn đề trên.


Tôi đã thử các kỹ thuật tập hợp cũng như phân loại bỏ phiếu. Vẫn không có may mắn.
Sagar Waghmode

Vì vậy, bạn có thấy rất nhiều sự trùng lặp sau đó giữa các dự đoán từ hai bộ dữ liệu? Có thể thực sự không có thông tin mới? Tức là dữ liệu kể cùng một câu chuyện.
Diego

vâng, tôi đã làm chính xác điều đó Mặc dù các dự đoán không hoàn toàn khác nhau, số lượng mẫu dự đoán khác nhau khá cao (khoảng 15-20%) dữ liệu. Đối với các mẫu này, mô hình có các tính năng thưa thớt hoạt động tốt hơn so với mô hình có các tính năng dày đặc. Quan điểm của tôi là nếu các tính năng thưa thớt hoạt động tốt hơn, tại sao chúng không trở thành các tính năng quan trọng trong bất kỳ mô hình nào mà tôi đã thử cho đến nay.
Sagar Waghmode

Bạn sử dụng thuật toán dự đoán nào?
Diego

Tôi đã thử khá nhiều thuật toán và giải quyết trên Gradient Boosted Model, tôi cũng sử dụng Random Forests khá nhiều cho vấn đề của mình.
Sagar Waghmode

1

Ngoài một số gợi ý ở trên, tôi khuyên bạn nên sử dụng phương pháp mô hình hóa hai bước .

  1. Sử dụng các tính năng thưa thớt đầu tiên và phát triển mô hình tốt nhất.
  2. Tính xác suất dự đoán từ mô hình đó.
  3. Đưa ước tính xác suất đó vào mô hình thứ hai (như một tính năng đầu vào), sẽ kết hợp các tính năng dày đặc. Nói cách khác, sử dụng tất cả các tính năng dày đặc ước tính xác suất để xây dựng mô hình thứ hai.
  4. Việc phân loại cuối cùng sau đó sẽ dựa trên mô hình thứ hai.

0

Chỉ thử PCA trên các tính năng thưa thớt và kết hợp đầu ra PCA với các tính năng dày đặc.

Vì vậy, bạn sẽ nhận được tập hợp dày đặc các tính năng (bản gốc) + bộ tính năng dày đặc (ban đầu thưa thớt).

+1 cho câu hỏi. Hãy cập nhật cho chúng tôi với kết quả.


Ồ, điều này thực sự đã làm giảm AUC :( Không chắc, ý nghĩa của nó là gì, cần kiểm tra tầm quan trọng của tính năng và tất cả. Nhưng triết lý của tôi là, trong số khoảng 2,3k tính năng thưa thớt, tôi đã sử dụng các tính năng 1k giải thích tỷ lệ phương sai 0,97, sự mất thông tin này có thể đã hạ bệ AUC.
Sagar Waghmode

Hấp dẫn. Cám ơn vì đã chia sẻ. Chúng tôi có bộ dữ liệu rất giống với dữ liệu của bạn (tính năng thưa thớt 1k-2k). Vì tò mò, bạn đã tạo ra bao nhiêu thành phần chính? Nếu con số đó quá thấp, điều này có thể giải thích tại sao AUC đi xuống.
Tagar

Như tôi đã nói, tôi đã tạo ra 1k thành phần chính đang giải thích về phương sai 0.97.
Sagar Waghmode
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.