Tôi đang tìm kiếm các khuyến nghị về cách tốt nhất cho vấn đề học máy hiện tại của tôi
Phác thảo của vấn đề và những gì tôi đã làm như sau:
- Tôi có hơn 900 thử nghiệm dữ liệu điện não đồ, trong đó mỗi thử nghiệm dài 1 giây. Sự thật nền tảng được biết đến cho mỗi và phân loại trạng thái 0 và trạng thái 1 (chia 40-60%)
- Mỗi thử nghiệm đều trải qua quá trình tiền xử lý nơi tôi lọc và trích xuất sức mạnh của các dải tần số nhất định và chúng tạo thành một tập hợp các tính năng (ma trận tính năng: 913x32)
- Sau đó, tôi sử dụng sklearn để đào tạo mô hình. cross_validation được sử dụng trong đó tôi sử dụng kích thước thử nghiệm là 0,2. Trình phân loại được đặt thành SVC với kernel rbf, C = 1, gamma = 1 (Tôi đã thử một số giá trị khác nhau)
Bạn có thể tìm thấy một phiên bản rút gọn của mã ở đây: http://pastebin.com/Xu13ciL4
Vấn đề của tôi:
- Khi tôi sử dụng trình phân loại để dự đoán nhãn cho bộ thử nghiệm của mình, mọi dự đoán là 0
- độ chính xác đào tạo là 1, trong khi độ chính xác của bộ kiểm tra là khoảng 0,56
- cốt truyện đường cong học tập của tôi trông như thế này:
Bây giờ, đây có vẻ như là một trường hợp kinh điển của quá mức ở đây. Tuy nhiên, quá mức ở đây không chắc là do số lượng tính năng không tương xứng với các mẫu (32 tính năng, 900 mẫu). Tôi đã thử một số thứ để giảm bớt vấn đề này:
- Tôi đã thử sử dụng giảm kích thước (PCA) trong trường hợp đó là do tôi có quá nhiều tính năng cho số lượng mẫu, nhưng điểm chính xác và biểu đồ đường cong học tập trông giống như trên. Trừ khi tôi đặt số lượng thành phần dưới 10, tại thời điểm đó độ chính xác của tàu bắt đầu giảm, nhưng điều này có phần nào không được mong đợi khi bạn bắt đầu mất thông tin?
- Tôi đã cố gắng bình thường hóa và chuẩn hóa dữ liệu. Tiêu chuẩn hóa (SD = 1) không có gì thay đổi điểm số đào tạo hoặc độ chính xác. Bình thường hóa (0-1) giảm độ chính xác đào tạo của tôi xuống 0,6.
- Tôi đã thử nhiều cài đặt C và gamma cho SVC, nhưng chúng không thay đổi điểm số
- Đã thử sử dụng các công cụ ước tính khác như GaussianNB, thậm chí cả các phương thức tập hợp như adaboost. Không thay đổi
- Đã thử thiết lập một phương pháp chính quy bằng linearSVC nhưng không cải thiện được tình hình
- Tôi đã thử chạy các tính năng tương tự thông qua mạng lưới thần kinh bằng cách sử dụng theano và độ chính xác của tàu là khoảng 0,6, thử nghiệm là khoảng 0,5
Tôi rất vui khi tiếp tục suy nghĩ về vấn đề này nhưng tại thời điểm này tôi đang tìm kiếm một người thích đi đúng hướng. Vấn đề của tôi có thể ở đâu và tôi có thể làm gì để giải quyết nó?
Hoàn toàn có thể là tập hợp các tính năng của tôi không phân biệt giữa 2 loại, nhưng tôi muốn thử một số tùy chọn khác trước khi đi đến kết luận này. Hơn nữa, nếu các tính năng của tôi không phân biệt thì điều đó sẽ giải thích điểm số của bộ kiểm tra thấp, nhưng làm thế nào để bạn có được điểm số tập huấn hoàn hảo trong trường hợp đó? Điều đó có thể không?