5

मैं ग्रे, जीपीए और रैंक जैसे भविष्यवाणियों के साथ प्रवेश चर की भविष्यवाणी करने की कोशिश कर रहा हूं। लेकिन भविष्यवाणी सटीकता बहुत कम है (0.66)। डेटासेट नीचे दिया गया है। https://gist.github.com/abyalias/3de80ab7fb93dcecc565cee21bd9501aसाइकिट पायथन में लॉजिस्टिक रिग्रेशन की मॉडल सटीकता को कैसे बढ़ाया जाए?

कृपया नीचे कोड पाते हैं:

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]]) 

लोगों predicting.How मॉडल की सटीकता बढ़ाने में गलत तरीके से कर रहे हैं?

+1

आप लॉजिस्टिक रिग्रेशन के सी पैरामीटर को ट्यून करके शुरू कर सकते हैं। आप एसवीएम और पेड़ों जैसे विभिन्न वर्गीकरण विधियों को भी आजमा सकते हैं। – geompalik

+2

आपको अपने परीक्षण सेट पर सटीकता को अनुकूलित करने का प्रयास नहीं करना चाहिए। आपको प्रशिक्षण सेट पर अनुकूलित करना चाहिए और विधि के ऑब्जेक्ट मूल्यांकन के रूप में परीक्षण सेट का उपयोग करना चाहिए। क्या आप प्रशिक्षण सेट के आधार पर सटीकता स्कोर दिखाने के लिए अपना उत्तर संपादित कर सकते हैं? – ncfirth

+0

हाय, प्रशिक्षण सेट के आधार पर सटीकता जोड़ा गया है। –

उत्तर

22

चूंकि मशीन सीखने सुविधाओं और मॉडलों के साथ प्रयोग करने के बारे में अधिक है, इसलिए आपके प्रश्न का कोई सही जवाब नहीं है। आप करने के लिए अपने सुझावों में से कुछ होगा:

1. फ़ीचर स्केलिंग और/या सामान्यीकरण - अपने जीआरई और जीपीए सुविधाओं के तराजू की जाँच करें। वे परिमाण के 2 आदेशों पर भिन्न होते हैं। इसलिए, आपकी gre सुविधा लॉजिस्टिक रीग्रेशन जैसे क्लासिफायरफायर में दूसरों पर हावी हो जाएगी। मशीन मशीन सीखने के मॉडल में रखने से पहले आप अपनी सभी सुविधाओं को एक ही पैमाने पर सामान्यीकृत कर सकते हैं। This विज्ञान-सीखने में उपलब्ध विभिन्न फीचर स्केलिंग और सामान्यीकरण कक्षाओं पर एक अच्छी मार्गदर्शिका है।

2. कक्षा असंतुलन - अपने डेटा में कक्षा असंतुलन की तलाश करें। चूंकि आप डेटा स्वीकार/अस्वीकार करने के साथ काम कर रहे हैं, तो अस्वीकृति की संख्या स्वीकार से काफी अधिक होगी। SkLearn में अधिकांश क्लासिफायरों सहित LogisticRegression में class_weight पैरामीटर है। कक्षा असंतुलन के मामले में balanced पर सेट करना भी अच्छा काम कर सकता है।

3. अनुकूलन अन्य स्कोर - आप अन्य मैट्रिक्स पर अनुकूलन कर सकते हैं भी इस तरह के के रूप में प्रवेश करें घटाने और एफ 1-स्कोर। कक्षा असंतुलन के मामले में एफ 1-स्कोर उपयोगी हो सकता है। This एक अच्छी गाइड है जो स्कोरिंग के बारे में और बात करती है।

4. हाइपरपेरामीटर ट्यूनिंग - ग्रिड खोज - आप अपने मॉडल के हाइपरपेरामीटर को ट्यून करने के लिए ग्रिड खोज करके अपनी सटीकता में सुधार कर सकते हैं। उदाहरण के लिए LogisticRegression के मामले में, पैरामीटर C एक हाइपरपेरामीटर है। साथ ही, आपको ग्रिड खोज के दौरान परीक्षण डेटा का उपयोग करने से बचना चाहिए। इसके बजाय पार सत्यापन प्रदर्शन करते हैं। अपने अंतिम मॉडल के लिए अंतिम संख्या की रिपोर्ट करने के लिए केवल अपने परीक्षण डेटा का उपयोग करें। कृपया ध्यान दें कि आपके द्वारा प्रयास किए जाने वाले सभी मॉडलों के लिए ग्रिडशर्च किया जाना चाहिए क्योंकि तब आप केवल यह बताने में सक्षम होंगे कि आप प्रत्येक मॉडल से सबसे अच्छा क्या प्राप्त कर सकते हैं। Scikit-Learn इस के लिए GridSearchCV कक्षा प्रदान करता है। This लेख भी एक अच्छा प्रारंभिक बिंदु है।

5. अधिक क्लासिफायरों का अन्वेषण करें - लॉजिस्टिक रीग्रेशन एक रैखिक निर्णय सतह सीखता है जो आपकी कक्षाओं को अलग करता है। यह संभव हो सकता है कि आपके 2 वर्ग रैखिक रूप से अलग नहीं हो सकते हैं। ऐसे मामले में आपको अन्य क्लासिफायरों को ऐसे Support Vector Machines पर देखने की आवश्यकता हो सकती है जो अधिक जटिल निर्णय सीमाएं सीखने में सक्षम हैं। आप ट्री-आधारित क्लासिफायर जैसे Decision Trees पर भी देखना शुरू कर सकते हैं जो आपके डेटा से नियम सीख सकते हैं। उनको इफ-एल्से नियमों की एक श्रृंखला के रूप में सोचें जो एल्गोरिदम स्वचालित रूप से डेटा से सीखता है। अक्सर, निर्णय पेड़ के साथ Bias-Variance Tradeoff सही प्राप्त करना मुश्किल है, इसलिए यदि आपके पास पर्याप्त मात्रा में डेटा है तो मैं आपको Random Forests पर देखने की सलाह दूंगा।

6. त्रुटि विश्लेषण - अपने प्रत्येक मॉडल के लिए, वापस जाएं और उन मामलों को देखें जहां वे असफल हो रहे हैं। आप यह पता लगाना समाप्त कर सकते हैं कि आपके कुछ मॉडल पैरामीटर स्पेस के एक हिस्से पर अच्छी तरह से काम करते हैं जबकि अन्य अन्य हिस्सों पर बेहतर काम करते हैं। यदि यह मामला है, तो Ensemble Techniques जैसे VotingClassifier तकनीकें अक्सर सर्वोत्तम परिणाम देती हैं। मॉडल जो किगेल प्रतियोगिताओं को जीतते हैं वे कई बार मॉडल बनाते हैं।

7. अधिक सुविधाएं _ यदि यह सब विफल हो जाता है, तो इसका मतलब है कि आपको और अधिक सुविधाएं तलाशना शुरू करना चाहिए।

आशा है कि मदद करता है!

+0

अच्छा जवाब। क्या आप कृपया 'लॉग लॉस और एफ 1-स्कोर जैसे अन्य मीट्रिक पर अनुकूलित कर सकते हैं' पर विस्तृत जानकारी दे सकते हैं। हम यह कैसे करते हैं? मैं किसी भी मदद की सराहना करता हूं! – renakre

+0

के बारे में 4. हाइपरपेरामीटर ट्यूनिंग, बेयसियन ऑप्टिमाइज़ेशन इन दिनों लोगों को रोमांचक बनाता है। यह मॉडल प्रदर्शन के बीच सही संतुलन प्रदान करेगा, परीक्षण के हाइपरपेरामीटर संयोजनों की संख्या बनाम। – tagoma

संबंधित मुद्दे