私は scikits と svm の初心者で、いくつかの質問を確認したいと思います。700 個のアイテムと 35 個の機能のサンプルがあり、3 つのクラスがあります。「preprocessing.scale(X)」を使用してスケーリングされたサンプルと機能を含む配列 X があります。最初のステップは、適切な SVM パラメーターを見つけることです。ネストされた相互検証でグリッド検索を使用しています ( http://scikit-learn.org/stable/auto_examples/grid_search_digits.html#を参照)。「グリッド検索」ですべてのサンプル (X) を使用しています。グリッド検索中、データはトレーニングとテストに分割されます (StratifiedKFold を使用)。SVM パラメーターを取得したら、データをトレーニングとテストに分割する分類を実行します。実際の分類で使用するのと同じデータをグリッド検索で使用しても問題ありませんか?
2 に答える
実際の分類中に使用するのと同じデータをグリッド検索で使用しても大丈夫ですか?
このデータを分類器のトレーニング(フィッティング)に使用してもかまいません。によって行われるように、相互検証はStratifiedKFold
、ハイパーパラメータ(アルゴリズム設定)を最適化するときに検証セットを保持するのに十分なデータがない状況を対象としています。怠惰すぎて検証セットスプリッターを作成できず、scikit-learnの組み込みの相互検証に依存したい場合にも使用できます:)
交差検定で最適な設定を見つけた後、完全なトレーニングセットで推定量を再トレーニングするオプションrefit
。GridSearchCV
ただし、すでにラベルが設定されているため、グリッド検索またはトレーニングしたデータにトレーニング済みの分類器を適用することは無意味です。分類器の正式な評価を行う場合は、最初からテストセットを実行し、グリッドの検索、検証、およびフィッティングがすべて完了するまで、テストセットに再度触れないようにする必要があります。
私は機械学習の専門家ではありませんが、私の知る限り、クロス検証の利点は過学習に対して安全であることです。したがって、最終的な評価に (CV の結果によると) 最高のパフォーマンスを持つ分類器を使用してもまったく問題ありません。
しかし、問題は、なぜ既にラベルを持っているデータに対して「実際の分類」を行う必要があるのかということです。最終目標 (SVM のパフォーマンス評価または分類) は何ですか?