मॉडल जटिलता और ओवरफिटिंग

Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना

Dr. Chris Anagnostopoulos

Honorary Associate Professor

मॉडल जटिलता क्या है?

RandomForestClassifier() में max_depth जैसे अतिरिक्त आर्ग्युमेंट होते हैं:

help(RandomForestClassifier)
Help on class RandomForestClassifier in module sklearn.ensemble.forest:
...
 |  max_depth : integer or None, optional (default=None)
 |      The maximum depth of the tree. If None, then nodes are expanded until
 |      all leaves are pure or until all leaves contain less than
 |      min_samples_split samples.
Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना
m2 = RandomForestClassifier(
    max_depth=2)
m2.fit(X_train, y_train)

m2.estimators_[0]

गहराई 2 वाला निर्णय वृक्ष.

m4 = RandomForestClassifier(
    max_depth=4)
m4.fit(X_train, y_train)

m4.estimators_[0]

गहराई 4 वाला निर्णय वृक्ष.

Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना

मानक प्रथा: डेटा को training, test (या development) और validation (या hold-out) में बाँटना.

Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना

Cross-validation में train-test स्प्लिट कई बार होता है. डेटासेट N हिस्सों में बँटता है, हर बार अलग N-1 हिस्से training के लिए और शेष एक test के लिए होते हैं.

Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना

Cross-validation

cross_val_score() से accuracy आँकें:

from sklearn.model_selection import cross_val_score

cross_val_score(RandomForestClassifier(), X, y)
array([0.7218 , 0.7682, 0.7866])
numpy.mean(cross_val_score(RandomForestClassifier(), X, y))
0.7589
Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना

मॉडल जटिलता ट्यून करना

GridSearchCV() से tree depth ट्यून करें:

from sklearn.model_selection import GridSearchCV
param_grid = {'max_depth':[5,10,20]}
grid = GridSearchCV(RandomForestClassifier(), param_grid)
grid.fit(X,y)
grid._best_params
{'max_depth': 10}
Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना

In-sample accuracy गहराई 3 पर 0.7 से शुरू होकर, गहराई 5 से 30 तक लगभग 1.0 तक बढ़ती है.

Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना

Out-of-sample accuracy भी 0.7 से शुरू होती है, गहराई 10 पर 0.75 तक जाती है, फिर अधिक गहराई पर वापस 0.7 हो जाती है.

Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना

गहराई 10 से आगे का रेंज लाल में है, दर्शाता है कि ओवरफिटिंग हो रही है.

Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना

ज़्यादा जटिल हमेशा बेहतर नहीं!

Python में मशीन लर्निंग वर्कफ़्लो डिज़ाइन करना

Preparing Video For Download...