1

Kaggleのコンテストに scikit-learn 0.13.1 を使用しています。私はデシジョン ツリー分類器を使用しており、estimator を評価するために、train_test_split を介してトレーニング データを分割するか、cross_val_score を使用して相互検証を行う手法に従います。どちらの手法でも、推定器が約 90% 正確であることを示します。ただし、実際のテスト データに対して推定器を使用すると、得られる精度は約 30% 低くなります。トレーニング データがテスト データの適切な表現であると仮定しましょう。

推定器の精度を評価するために他に何ができますか?

clf = tree.DecisionTreeClassifier( )
...
X_train, X_test, y_train, y_test = train_test_split(train, target, test_size=0.3, random_state=42)
...
clf.fit(X_train, y_train)
print "Accuracy: %0.2f " % clf.score(X_test, y_test)
...    
scores = cv.cross_val_score(clf, train, target, cv=15)
print "Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() / 2)
4

1 に答える 1

5

これはおそらく、最終評価データの分布と開発セットの間に大きな不一致があることを意味します。

ただし、決定木の過剰適合を測定することは興味深いでしょう:分割のトレーニング スコアclf.score(X_train, y_train)とテスト スコアの違いは何ですか?clf.score(X_test, y_test)

また、純粋な決定木はおもちゃの分類器と見なす必要があります。それらは汎化特性が非常に貧弱です (そして多くの過適合が発生する可能性があります)。ExtraTreesClassifierの数を増やしてみてくださいn_estimators。から始めてn_estimators=10、データセットが十分に小さい場合は 50、100、500、1000 とします。

于 2013-06-07T18:58:53.920 に答える