5

Tôi đang cố gắng dự đoán biến thừa nhận với các yếu tố dự đoán như gre, gpa và ranks.But độ chính xác dự đoán là rất ít (0.66) .Bộ dữ liệu được đưa ra dưới đây. https://gist.github.com/abyalias/3de80ab7fb93dcecc565cee21bd9501aLàm thế nào để tăng tính chính xác của mô hình hồi quy logistic trong python Scikit?

hãy tìm các mã dưới đây:

In[73]: data.head(20) 
Out[73]: 

    admit gre gpa rank_2 rank_3 rank_4 
0  0 380 3.61  0.0  1.0  0.0 
1  1 660 3.67  0.0  1.0  0.0 
2  1 800 4.00  0.0  0.0  0.0 
3  1 640 3.19  0.0  0.0  1.0 
4  0 520 2.93  0.0  0.0  1.0 
5  1 760 3.00  1.0  0.0  0.0 
6  1 560 2.98  0.0  0.0  0.0 

y = data['admit'] 
x = data[data.columns[1:]] 

from sklearn.cross_validation import train_test_split 
xtrain,xtest,ytrain,ytest = train_test_split(x,y,random_state=2) 

ytrain=np.ravel(ytrain) 

#modelling 
clf = LogisticRegression(penalty='l2') 
clf.fit(xtrain,ytrain) 
ypred_train = clf.predict(xtrain) 
ypred_test = clf.predict(xtest) 

In[38]: #checking the classification accuracy 
accuracy_score(ytrain,ypred_train) 
Out[38]: 0.70333333333333337 
In[39]: accuracy_score(ytest,ypred_test) 
Out[39]: 0.66000000000000003 

In[78]: #confusion metrix... 
from sklearn.metrics import confusion_matrix 
confusion_matrix(ytest,ypred) 

Out[78]: 
array([[62, 1], 
     [33, 4]]) 

Những người là sai predicting.How để tăng độ chính xác mô hình?

+1

Bạn có thể bắt đầu bằng cách điều chỉnh các tham số C của hồi quy logistic. Bạn cũng có thể thử các phương pháp phân loại khác nhau như SVM và cây cối. – geompalik

+2

Bạn không nên cố gắng tối ưu hóa độ chính xác trên bộ thử nghiệm của mình. Bạn nên tối ưu hóa trên tập huấn luyện và sử dụng tập kiểm tra làm đánh giá đối tượng của phương pháp. Bạn có thể chỉnh sửa câu trả lời của mình để hiển thị điểm chính xác dựa trên tập huấn luyện không? – ncfirth

+0

Xin chào, độ chính xác dựa trên tập huấn luyện được thêm vào. –

Trả lời

22

Vì máy học là nhiều hơn về thử nghiệm với các tính năng và các mô hình, không có câu trả lời đúng cho câu hỏi của bạn. Một số gợi ý của tôi đối với bạn sẽ là:

1. Tính năng Scaling và/hoặc Normalization - Kiểm tra quy mô của bạn greGPA tính năng. Chúng khác nhau về 2 đơn vị độ lớn. Do đó, tính năng gre của bạn sẽ thống trị những người khác trong một trình phân loại như Hồi quy logistic. Bạn có thể bình thường hóa tất cả các tính năng của mình với cùng một tỷ lệ trước khi đặt chúng vào một mô hình học máy. This là hướng dẫn tốt về các tính năng chia tỷ lệ và các lớp chuẩn hóa khác nhau có sẵn trong tìm hiểu.

2. Mất cân bằng lớp - Tìm sự mất cân bằng trong lớp học trong dữ liệu của bạn. Vì bạn đang làm việc với dữ liệu thừa nhận/từ chối, thì số lượng từ chối sẽ cao hơn đáng kể so với các lần thừa nhận. Hầu hết các trình phân loại trong SkLearn bao gồm LogisticRegression có thông số class_weight. Việc đặt thành balanced cũng có thể hoạt động tốt trong trường hợp mất cân bằng lớp.

3. Tối ưu hóa điểm khác - Bạn có thể tối ưu hóa trên các số liệu khác cũng như Log MấtF1-Score. Điểm F1 có thể hữu ích, trong trường hợp mất cân bằng lớp. This là hướng dẫn tốt để nói nhiều hơn về điểm số.

4. Điều chỉnh siêu thông số - Tìm kiếm lưới - Bạn có thể cải thiện độ chính xác của mình bằng cách thực hiện Tìm kiếm lưới để điều chỉnh siêu mẫu của mô hình. Ví dụ trong trường hợp LogisticRegression, tham số C là một tham số. Ngoài ra, bạn nên tránh sử dụng dữ liệu thử nghiệm trong quá trình tìm kiếm lưới. Thay vào đó thực hiện xác thực chéo. Chỉ sử dụng dữ liệu thử nghiệm của bạn để báo cáo các con số cuối cùng cho mô hình cuối cùng của bạn. Xin lưu ý rằng GridSearch nên được thực hiện cho tất cả các mô hình mà bạn thử bởi vì sau đó chỉ có bạn mới có thể biết được điều gì là tốt nhất bạn có thể nhận được từ mỗi mô hình. Scikit-Learn cung cấp lớp học GridSearchCV cho việc này. This bài viết cũng là một điểm khởi đầu tốt.

5. Khám phá thêm các bộ phân loại - Hồi quy logistic tìm hiểu bề mặt quyết định tuyến tính tách lớp của bạn. Có thể là 2 lớp của bạn có thể không được phân tách tuyến tính. Trong trường hợp này, bạn có thể cần phải xem xét các bộ phân loại khác như Support Vector Machines để có thể tìm hiểu các ranh giới quyết định phức tạp hơn. Bạn cũng có thể bắt đầu xem xét các bộ phân loại dựa trên cây như Decision Trees có thể tìm hiểu các quy tắc từ dữ liệu của bạn. Hãy nghĩ về chúng như là một loạt các quy tắc If-Else mà thuật toán tự động học từ dữ liệu. Thông thường, rất khó để có được quyền Bias-Variance Tradeoff với Cây quyết định, vì vậy tôi khuyên bạn nên xem Random Forests nếu bạn có một lượng dữ liệu đáng kể.

6. Phân tích lỗi - Đối với mỗi mô hình của bạn, hãy quay lại và xem xét các trường hợp không thực hiện được. Bạn có thể sẽ thấy rằng một số mô hình của bạn hoạt động tốt trên một phần của không gian tham số trong khi các mô hình khác hoạt động tốt hơn trên các phần khác. Nếu đây là trường hợp, sau đó Ensemble Techniques như VotingClassifier kỹ thuật thường cho kết quả tốt nhất. Các mô hình giành chiến thắng trong các cuộc thi Kaggle là các mô hình quần thể nhiều lần.

7. Các tính năng khác _ Nếu tất cả điều này không thành công, thì điều đó có nghĩa là bạn nên bắt đầu tìm kiếm nhiều tính năng hơn.

Hy vọng điều đó sẽ hữu ích!

+0

Nice câu trả lời. Bạn có thể vui lòng xây dựng trên 'Bạn có thể tối ưu hóa trên các số liệu khác cũng như Log Loss và F1-Score.' Làm thế nào để chúng tôi làm điều này? Tôi đánh giá cao sự giúp đỡ nào! – renakre

+0

Về 4. Hyperparameters điều chỉnh, Bayesian tối ưu hóa được những người thú vị những ngày này. Nó sẽ cung cấp sự cân bằng phù hợp giữa hiệu suất mô hình so với số lượng các kết hợp hyperparameters được thử nghiệm. – tagoma

Các vấn đề liên quan