Tập huấn luyện thưa thớt có ảnh hưởng xấu đến SVM không?


12

Tôi đang cố gắng phân loại tin nhắn thành các loại khác nhau bằng cách sử dụng một SVM. Tôi đã biên soạn một danh sách các từ / ký hiệu mong muốn từ tập huấn luyện.

Đối với mỗi vectơ đại diện cho một thông báo, tôi đặt hàng tương ứng thành 1nếu từ đó hiện diện:

"kho" là: [mary, little, lamb, star, twinkle]

tin nhắn đầu tiên: "mary had a little lamb" -> [1 1 1 0 0]

tin nhắn thứ hai: "ngôi sao nhỏ lấp lánh" -> [0 1 0 1 1]

Tôi nghĩ rằng đây là thiết lập khá phổ biến với SVM, nhưng câu hỏi của tôi là, với hàng ngàn từ trong tập hợp, nếu chỉ có 1-2 từ cho mỗi tin nhắn thực sự hiển thị thì sao? Là sự phụ thuộc tuyến tính của tập các vectơ đào tạo của tôi sẽ ảnh hưởng xấu đến khả năng hội tụ của thuật toán?


1
Bạn có nhiều dữ liệu, nhưng ít dữ liệu được dán nhãn? Nếu vậy bạn có thể muốn nhìn vào việc học bán giám sát. Sử dụng một số dữ liệu chưa được gắn nhãn của bạn sẽ giúp tăng độ chính xác và giảm nguy cơ thừa.
nơ-ron

@neuron Mình đã nghĩ đến việc đó. Một ví dụ về kiến ​​trúc bán giám sát là gì?
jonsca

1
Tôi chỉ sử dụng các phương pháp "hackish" của giám sát bán giám sát (còn gọi là mô hình đào tạo trên trainingset, sử dụng mô hình để dự đoán dữ liệu, kéo tất cả dữ liệu với xác suất dự đoán> 0,5 và hợp nhất với trainingset và tạo moel trên tập huấn mới). Nhưng tôi đã thấy flexmix đề cập đến một vài nơi (xem cran.r-project.org/web/packages/flexmix )
nơ ron

@neuron Được rồi, tốt, bởi vì những bài báo tôi đã xem (mặc dù với một tìm kiếm nhanh như wikipedia) không cụ thể về kiến ​​trúc. Tôi sẽ kiểm tra flexmix- mặc dù, tôi đã có "Tìm hiểu R" trên lịch của mình trong một vài năm nay!
jonsca

Làm điều đó, R là TUYỆT VỜI, các thư viện trở nên có sẵn cho bạn chỉ là tâm trí bogg. Những thứ như caret, sqldf / rmysql, foreach (song song), ggplot2 và googlevis chỉ là những công cụ hữu ích đáng kinh ngạc. Ban đầu tôi không phải là một người hâm mộ ngôn ngữ, nhưng nó đã phát triển trong tôi và tôi hoàn toàn thích sử dụng nó ngay bây giờ.
nơ-ron

Câu trả lời:


9

Độ thưa thớt và sự phụ thuộc tuyến tính là hai điều khác nhau. Sự phụ thuộc tuyến tính ngụ ý rằng một số vectơ đặc trưng là bội số đơn giản của các vectơ đặc trưng khác (hoặc được áp dụng tương tự cho các ví dụ). Trong thiết lập mà bạn đã mô tả, tôi nghĩ rằng sự phụ thuộc tuyến tính là không thể (nó ngụ ý hai thuật ngữ có cùng tần số (hoặc bội số của chúng) trên tất cả các tài liệu). Đơn giản chỉ cần có các tính năng thưa thớt không gây ra bất kỳ vấn đề nào cho SVM. Một cách để thấy điều này là bạn có thể thực hiện một vòng quay ngẫu nhiên của các trục tọa độ, điều này sẽ không thay đổi vấn đề và đưa ra giải pháp tương tự, nhưng sẽ làm cho dữ liệu hoàn toàn không thưa thớt (đây là một phần trong cách các phép chiếu ngẫu nhiên hoạt động ).

Ngoài ra, có vẻ như bạn đang nói về SVM trong nguyên hàm . Lưu ý rằng nếu bạn sử dụng kernel SVM, chỉ vì bạn có bộ dữ liệu thưa thớt không có nghĩa là ma trận kernel sẽ thưa thớt. Nó có thể, tuy nhiên, là thứ hạng thấp. Trong trường hợp đó, bạn thực sự có thể tận dụng lợi thế của thực tế này để đào tạo hiệu quả hơn (xem ví dụ Đào tạo svm hiệu quả bằng cách sử dụng các biểu diễn hạt nhân cấp thấp ).


1
Đúng, tôi đã hơi nhanh và lỏng lẻo với thuật ngữ của mình. Có ý nghĩa.
jonsca
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.