Tôi gặp khó khăn trong việc hiểu (và thực hiện) hồi quy logistic để phân loại thành ba lớp


7

(Để tham khảo, tôi đang sử dụng cuốn sách "Học máy: Quan điểm xác suất" của Kevin P Murphy và thực hiện với MATLAN - không có bất kỳ hộp công cụ nào)

Tôi có một bộ dữ liệu với 392 mẫu (hàng), mỗi mẫu có 8 tính năng (cột), một trong số đó xác định lớp (tức là cột 1 của các tính năng được chia thành ba thùng bằng nhau xác định ba lớp - thấp, trung bình và cao ).

Tôi đang có một thời gian thực sự khó khăn để hiểu làm thế nào để tạo ra một mô hình hồi quy logistic để phân loại một mẫu thành một trong ba lớp này.

Tôi vừa học xong và thực hiện mô hình hồi quy tuyến tính, nơi tôi đã tìm hiểu về cả giải pháp Bình phương tối thiểu (dạng đóng) cho vectơ trọng lượng và giải pháp Gradient Descent (Open Form). Nhưng tôi không bao giờ thực hiện giảm độ dốc vì dữ liệu của tôi được trang bị hoàn toàn tốt với giải pháp OLS cho vectơ trọng lượng.

Tôi vô cùng bối rối làm thế nào để tạo một vectơ trọng số cho hồi quy Logistic, tôi hiểu rằng nó yêu cầu sử dụng Gradient Descent vì không có giải pháp dạng đóng. Tôi cũng đã đọc về phương pháp Newton để tính trọng số nhưng tôi hoàn toàn không hiểu nó.

Và sau khi bạn sử dụng các phương pháp này để tính trọng số, làm thế nào để bạn áp dụng các trọng số cho dữ liệu mẫu? Trong hồi quy tuyến tính, đơn giản là vì bạn chỉ đơn giản nhân các trọng số bằng các tính năng (và các tính năng bậc cao hơn cho hồi quy tuyến tính bậc cao), nhưng nó có giống nhau trong hồi quy logistic không?

Hơn nữa, sự hiểu biết của tôi cho đến nay là mô hình này chỉ hoạt động để phân loại nhị phân, vậy tôi sẽ làm thế nào cho ba lớp?

Về cơ bản câu hỏi của tôi sôi nổi về điều này:

Làm thế nào chính xác bạn tìm thấy vectơ trọng số cho hồi quy logistic (sử dụng phương pháp giảm độ dốc hoặc phương pháp newtons, cách nào dễ hơn) và làm thế nào để bạn áp dụng vectơ trọng lượng cho mẫu để phân loại ra khỏi nó cho 3 lớp (không chỉ hai) .


Có một khóa học Coursera về học máy bao gồm tài liệu này tốt hơn nhiều so với có thể được thực hiện ở đây.
Kyle Jones

Câu trả lời:


7

Làm thế nào để bạn áp dụng vectơ trọng lượng cho mẫu để có được một phân loại trong đó cho 3 lớp (không chỉ hai).

Nếu bạn có lớp có thể thì bạn phải đào tạo phân loại logistic trên dữ liệu đào tạo của mình, với mỗi phân loại tạo ra là xác suất mà một mẫu nhất định là thành viên của lớp mà phân loại được đào tạo để nhận ra. Sau khi đào tạo hoàn tất, để phân loại một mẫu mới, bạn hãy để tất cả các phân loại được đào tạo cố gắng nhận ra nó và chấp nhận phán đoán của phân loại tạo ra giá trị xác suất cao nhất. Điều này được gọi là phân loại một so với tất cả hoặc một so với phần còn lại và là một cách tiêu chuẩn để sử dụng phân loại nhị phân để thực hiện phân loại đa lớp.nn

Các trọng số được áp dụng theo cùng một cách trong việc phân loại dữ liệu mới giống như khi bạn đào tạo trình phân loại. Bạn có một vectơ trọng số chứa các hệ số mà khi kết hợp với vectơ đặc trưng của mẫu mang lại giá trị giả thuyết. Đối với hồi quy tuyến tính (được mở rộng: ...) mang lại giá trị giả thuyết. Đối với hồi quy logistic được sử dụng làm số mũ trong hàm logistic để tạo ra giá trị giả thuyết:θxθTxθ0+θ1x1+θ2x2+θTx

hθ(x)= =11+e-θTx
e là hằng số nhật ký tự nhiên thông thường .2.71828

hθ(x) là xác suất mà mẫu là thành viên của lớp mà trình phân loại nhận ra. Tính cho mỗi phân loại và chấp nhận phán quyết của phân loại tạo ra giá trị xác suất lớn nhất.xhθ(x)

Làm thế nào chính xác để bạn tìm thấy vectơ trọng lượng cho hồi quy logistic (sử dụng phương pháp giảm độ dốc hoặc phương pháp newtons, cách nào dễ hơn)?

Gradient giảm dần hoạt động theo cách tương tự cho hồi quy logistic giống như hồi quy tuyến tính. Bạn vẫn đang cố gắng giảm thiểu hàm chi phí bằng cách lặp đi lặp lại các trọng số thành các giá trị tốt hơn bằng cách sử dụng các đạo hàm riêng của hàm chi phí. Hàm giả thuyết là khác nhau đối với hồi quy logistic, nhưng cách nó được sử dụng trong việc giảm độ dốc là như nhau. Khi bạn đã viết mã để thực hiện giảm độ dốc cho hồi quy tuyến tính, bạn sẽ có thể chỉ cần cắm vào một chức năng giả thuyết khác và để nó hoạt động cho hồi quy logistic.

Mã giả cho một lần lặp của độ dốc gốc:

newtheta := theta;
learning_rate := 0.01;                                                        
for k := 1 to n
   sum := 0
   for i := 1 to m
      sum := sum + (hypothesis(x[i], theta) - y[i]) * x[i][k];              
   end
   nudge := sum * learning_rate;                                            
   newtheta[k] := newtheta[k] - nudge;                                      
end
theta := newtheta;                                                          

x là một ma trận chứa dữ liệu đào tạo của bạn, mỗi mẫu một hàng.

y là một vectơ chứa dự đoán phân loại chính xác cho mỗi mẫu, 1 nếu mẫu nằm trong lớp, 0 nếu không.

m là số lượng mẫu.

n là số lượng tính năng.

Ý tưởng là bạn sẽ lặp lại quy trình này cho đến khi bạn đạt được một số chi phí tối thiểu và có thể chấp nhận (lỗi) so với tập huấn luyện.


Người ta có thể mở rộng hồi quy logistic sang hồi quy logistic đa thức và vẫn duy trì độ lồi cho độ dốc; tuy nhiên, điều đó có thể vượt quá tầm hiểu biết của OP nếu việc giảm độ dốc cho nhị phân là khó khăn.
Nicholas Mancuso
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.