Độ chính xác phân loại thấp, phải làm gì tiếp theo?


16

Vì vậy, tôi là người mới trong lĩnh vực ML và tôi cố gắng thực hiện một số phân loại. Mục tiêu của tôi là dự đoán kết quả của một sự kiện thể thao. Tôi đã thu thập một số dữ liệu lịch sử và bây giờ cố gắng đào tạo một bộ phân loại. Tôi đã nhận được khoảng 1200 mẫu, trong đó 0,2 mẫu tôi đã tách ra cho mục đích thử nghiệm, những mẫu khác tôi đưa vào tìm kiếm dạng lưới (bao gồm xác thực chéo) với các phân loại khác nhau. Tôi đã thử SVM với các hạt nhân tuyến tính, rbf và đa thức và Rừng ngẫu nhiên cho đến thời điểm hiện tại. Thật không may, tôi không thể có được độ chính xác lớn hơn đáng kể 0,5 (giống như lựa chọn ngẫu nhiên của lớp). Có nghĩa là tôi không thể dự đoán kết quả của một sự kiện phức tạp như vậy? Hoặc tôi có thể nhận được ít nhất 0,7-0,8 độ chính xác? Nếu nó khả thi, thì tôi nên xem xét điều gì tiếp theo?

  • Lấy thêm dữ liệu? (Tôi có thể phóng to dữ liệu lên đến 5 lần)
  • Hãy thử phân loại khác nhau? (Hồi quy logistic, kNN, v.v.)
  • Đánh giá lại bộ tính năng của tôi? Có công cụ ML nào để phân tích, tính năng nào hợp lý và không có công cụ nào không? Có lẽ, tôi nên giảm bộ tính năng của mình (hiện tại tôi có 12 tính năng)?

Độ chính xác đào tạo của bạn là gì? Và bạn có bao nhiêu mẫu trong mỗi lớp?
Leo

1
Môn thể thao này là gì và bạn nghĩ gì về phân loại "đúng"? Nếu bạn chỉ đơn giản là cố gắng dự đoán kết quả thắng / thua trong hầu hết các môn thể thao chính thì gần như không thể tin được rằng ngay cả những người phân loại đơn giản nhất cũng không dự đoán tốt hơn 0,5. Nếu bạn đang cố gắng dự đoán thắng / thua trước chênh lệch hoặc một số kết quả bị khuyết tật khác, thì tốt hơn nhiều so với 0,5 có thể khó khăn.
Đức hồng y

@Leo Độ chính xác đào tạo là khoảng 0,5. Các lớp học được phân bổ đều, tôi có các lớp 0 và 1.
fsprite

@cardinal Có, tôi cố gắng dự đoán kết quả thắng / thua, không có điểm chấp. Có khả thi để đạt được, giả sử, độ chính xác 0,8 trên bộ thử nghiệm không?
fsprite

1
@fspirit: Điều đó phụ thuộc vào môn thể thao và sự bất bình đẳng về khả năng giữa những người tham gia, vì một điều. Chỉ cần biết ai đang tham gia vào mỗi cuộc thi thường có thể là một người dự đoán mạnh mẽ. Đâyđây là một vài bài viết liên quan.
Đức hồng y

Câu trả lời:


17

Trước hết, nếu trình phân loại của bạn không làm tốt hơn một lựa chọn ngẫu nhiên, có một rủi ro là đơn giản là không có kết nối giữa các tính năng và lớp. Một câu hỏi hay để tự hỏi mình ở vị trí như vậy, là thời tiết bạn hoặc một chuyên gia tên miền có thể suy ra lớp (với độ chính xác lớn hơn phân loại ngẫu nhiên) dựa trên các tính năng nhất định. Nếu không, sau đó nhận thêm hàng dữ liệu hoặc thay đổi trình phân loại sẽ không giúp ích. Những gì bạn cần làm là nhận được nhiều dữ liệu hơn bằng cách sử dụng các tính năng khác nhau.

Mặt khác, nếu bạn nghĩ rằng thông tin cần thiết để suy ra lớp đã có trong nhãn, bạn nên kiểm tra xem trình phân loại của bạn có gặp phải vấn đề sai lệch cao hay sai lệch cao hay không.

Để làm điều này, hãy vẽ biểu đồ lỗi xác thực và lỗi tập huấn luyện, như là một hàm của các ví dụ đào tạo.

Nếu các dòng dường như hội tụ đến cùng một giá trị và ở gần cuối, thì trình phân loại của bạn có độ lệch cao và thêm nhiều dữ liệu sẽ không giúp ích. Một ý tưởng tốt trong trường hợp này là thay đổi bộ phân loại cho một loại có phương sai cao hơn hoặc đơn giản là hạ thấp tham số chính quy của cái hiện tại của bạn.

Mặt khác, nếu các dòng cách nhau khá xa và bạn có lỗi tập huấn luyện thấp nhưng lỗi xác thực cao, thì bộ phân loại của bạn có phương sai quá cao. Trong trường hợp này nhận được nhiều dữ liệu hơn rất có thể giúp đỡ. Nếu sau khi nhận được nhiều dữ liệu, phương sai vẫn sẽ quá cao, bạn có thể tăng tham số chính quy.

Đây là các quy tắc chung tôi sẽ sử dụng khi gặp vấn đề như của bạn.

Chúc mừng.


Ý của bạn là lỗi thiết lập xác nhận và lỗi thiết lập TEST? Nếu không, tôi bối rối. Tôi thậm chí không biết lỗi tập tàu, vì tôi sử dụng lỗi tập xác thực để chọn mô hình và họ kiểm tra mô hình đã chọn trên tập kiểm tra.
fsprite

Không, tôi có nghĩa là lỗi tập huấn luyện được viết ở đâu. Lỗi đào tạo là số lượng ví dụ phân loại sai trong tập huấn luyện chia cho kích thước tập huấn luyện. Tương tự lỗi tập kiểm tra là số ví dụ phân loại sai trong tập kiểm thử chia cho kích thước tập huấn luyện. Ngoài ra, bạn có thể muốn kiểm tra Lớp học máy của Coursera, ( class.coursera.org/ml-2012-002/lecture/index ), đặc biệt là các video về "Lời khuyên cho việc áp dụng Machine Learning". Những lời khuyên đó khá phù hợp với tình huống của bạn.
sjm.majewski

Tôi đã tham gia khóa học, khi nó được chạy lần đầu tiên. Đối với lỗi tập huấn luyện, bây giờ tôi cũng xuất nó, đối với SVM, nó khá cao - 0,5, nhưng đối với các khu rừng ngẫu nhiên là 0.
fsprite

5

Tôi sẽ đề nghị lùi một bước và thực hiện một số phân tích dữ liệu thăm dò trước khi thử phân loại. Cần kiểm tra các tính năng của bạn trên cơ sở cá nhân để xem liệu có bất kỳ mối quan hệ nào với kết quả quan tâm hay không - có thể các tính năng bạn không có bất kỳ liên kết nào với nhãn lớp. Làm thế nào để bạn biết nếu các tính năng bạn có sẽ được sử dụng?

Bạn có thể bắt đầu với việc thực hiện kiểm tra giả thuyết hoặc phân tích tương quan để kiểm tra các mối quan hệ. Tạo biểu đồ cụ thể của lớp cho các tính năng (nghĩa là vẽ biểu đồ dữ liệu cho từng lớp, cho một tính năng nhất định trên cùng một trục) cũng có thể là một cách hay để hiển thị nếu một tính năng phân biệt tốt giữa hai lớp.

Điều quan trọng cần nhớ là mặc dù không để kết quả phân tích khám phá của bạn ảnh hưởng đến các lựa chọn của bạn để phân loại. Việc chọn các tính năng để phân loại dựa trên phân tích thăm dò trước đó trên cùng một dữ liệu, có thể dẫn đến ước tính hiệu suất quá mức và sai lệch (xem thảo luận tại đây ) nhưng ít nhất một phân tích thăm dò sẽ cho bạn biết liệu nhiệm vụ bạn đang cố gắng thực hiện có khả thi.


Tôi sẽ thử vẽ biểu đồ và xem chúng sẽ trông như thế nào.
fsprite

@BGreene - đoạn thứ ba của bạn là một khó khăn đối với tôi. Nếu phân tích thăm dò cho thấy yếu tố dự đoán x1 có mối tương quan cao với kết quả, liệu nó có đánh bại mục đích kiểm tra mối tương quan đó không nếu người ta không sử dụng x1 như ít nhất là một yếu tố dự đoán ứng viên trong mô hình đa biến?
rolando2

@ rolando2 - Tôi không gợi ý rằng bạn không bao gồm tính năng như một ứng cử viên như một phần của thói quen lựa chọn tính năng nhưng bạn không nên chọn các tính năng dựa trên phân tích khám phá như vậy vì điều này sẽ phù hợp. Tuy nhiên, với mục đích đánh giá hiệu năng tổng quát của mô hình phân loại, việc lựa chọn tính năng nên được thực hiện trong quy trình lựa chọn mô hình (nghĩa là trong mỗi lần xác thực chéo). Điều tôi gợi ý là phân tích và phân loại thăm dò nên được coi là các hoạt động riêng biệt - mỗi hoạt động cho bạn biết những điều khác nhau về dữ liệu của bạn
BGreene

3

Thật tốt khi bạn tách dữ liệu của bạn thành dữ liệu huấn luyện và dữ liệu thử nghiệm.

Có phải lỗi đào tạo của bạn đi xuống khi bạn đào tạo? Nếu không, sau đó bạn có thể có một lỗi trong thuật toán đào tạo của bạn. Bạn mong đợi lỗi trong tập kiểm tra của bạn lớn hơn lỗi trên tập huấn luyện của bạn, vì vậy nếu bạn có một lỗi cao không thể chấp nhận được trên tập huấn luyện của bạn thì sẽ có rất ít hy vọng thành công.

Loại bỏ các tính năng có thể tránh một số loại quá mức. Tuy nhiên, nó không nên cải thiện lỗi trên tập huấn luyện của bạn. Một lỗi thấp trên tập huấn luyện của bạn và một lỗi cao trong tập kiểm tra của bạn có thể là một dấu hiệu cho thấy bạn quá phù hợp khi sử dụng một bộ tính năng quá linh hoạt. Tuy nhiên, sẽ an toàn hơn khi kiểm tra điều này thông qua xác thực chéo so với trên bộ kiểm tra của bạn. Khi bạn chọn bộ tính năng dựa trên bộ thử nghiệm của mình, nó không còn giá trị như bộ thử nghiệm.


Tôi sử dụng các bộ thử nghiệm, xác nhận và thử nghiệm riêng biệt. Tôi chọn siêu tham số dựa trên lỗi bộ xác thực và sau đó áp dụng mô hình đã chọn cho bộ kiểm tra. Tôi nghi ngờ có một lỗi trong thuật toán đào tạo, bởi vì tôi sử dụng lib ngoài luồng.
fsprite

50% , điều này có nghĩa là các tính năng của bạn rất tệ hoặc nếu không thì bạn không được đào tạo chính xác.
Douglas Zare

Trong khả năng "tính năng là khủng khiếp", tôi bao gồm trường hợp không có giải pháp nào khả thi. Tuy nhiên, tôi nghi ngờ điều đó rất nhiều. Không có môn thể thao nào tôi biết ở đó không có cách nào để thấy rằng một đối thủ cạnh tranh được yêu thích hơn một đối thủ khác. Nó thậm chí có thể trong kéo giấy đá.
Douglas Zare

1

Tại sao không theo nguyên tắc "nhìn vào lô của dữ liệu trước". Một điều bạn có thể làm là một biểu đồ phân tán 2 D của mật độ có điều kiện hai lớp cho hai hiệp phương sai. Nếu bạn nhìn vào những điều này và thực tế không có sự phân tách nào có thể cho thấy sự thiếu dự đoán và bạn có thể làm điều này với tất cả các đồng biến. Điều đó cung cấp cho bạn một số ý tưởng về khả năng sử dụng các đồng biến này để dự đoán. Nếu bạn thấy một số hy vọng rằng các biến này có thể tách rời một chút thì hãy bắt đầu suy nghĩ về phân biệt tuyến tính, phân biệt đối xử bậc hai, phân biệt hạt nhân, chính quy, phân loại cây, SVM, v.v.


Xin lỗi, ừm, là đồng biến == tính năng?
fsprite
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.