モデル評価と改善(二)/グリッド検索

14445 ワード

1、グリッド検索とは何ですか.回答:グリッド検索(grid search)とは、主に重要なパラメータのすべての可能な組合せを試み、最適な汎化性能を見つけるパラメータの組合せを指す.汎化性能のより良い推定を得るために、データを単一にトレーニングセットと検証セットに分割するのではなく、クロス検証を使用して各パラメータの組合せの性能を評価することができる.
2、トレーニングセット、検証セット、テストセットの3つの違いは?回答:トレーニングセットはモデルの構築に使用され、検証セットはモデルパラメータの選択に使用され、テストセットは選択したパラメータのパフォーマンスを評価するために使用されます.
3、手書きテープクロス検証のメッシュ検索
import numpy as np
from sklearn.svm import SVC #   SVC   
from sklearn.model_selection import train_test_split #     、   
from sklearn.model_selection import cross_val_score #    
from sklearn.datasets import load_iris # iris     

iris=load_iris()
X_trainval,X_test,y_trainval,y_test=train_test_split(iris.data,iris.target,random_state=0)
best_score=0

#      ,     for  
for gamma in [0.001,0.01,0.1,1,10,100]:
    for C in [0.001,0.01,0.1,1,10,100]:
        svm=SVC(gamma=gamma,C=C)
        scores=cross_val_score(svm,X_trainval,y_trainval,cv=5)  #        ,     ,          。
        score=np.mean(scores)
        if score > best_score:
            best_score=score
            best_parameters={
     'C':C,'gamma':gamma}

svm=SVC(**best_parameters)
svm.fit(X_trainval,y_trainval)
svm.score(X_test,y_test)

4、パケットGridSearchCV
from sklearn.model_selection import GridSearchCV
grid_search=GridSearchCV(SVC(),param_grid)
#param_grid       
param_grid={
     'gamma':[0.001,0.01,0.1,1,10,100],'C':[0.001,0.01,0.1,1,10,100]} #        
param_grid=[{
     'kernel':['linear'],'gamma':[0.001,0.01,0.1,1,10,100],'C':[0.001,0.01,0.1,1,10,100]},
{
     'kernel':['rbf'],'gamma':[0.001,0.01,0.1,1,10,100],'C':[0.001,0.01,0.1,1,10,100]}] #         
#   GridSearchCV   
		GridSearchCV(
		    estimator,
		    param_grid,
		    scoring=None,
		    n_jobs=None,
		    iid='warn',
		    refit=True,
		    cv='warn',
		    verbose=0,
		    pre_dispatch='2*n_jobs',
		    error_score='raise-deprecating',
		    return_train_score=False,
		)
# grid_search        estimator
grid_search.fit(X_trainval,y_trainval) #    
grid_search.score(X_test,y_test)
grid_search.predict()
grid_search.best_score_ #             
grid_search.best_params_ #      
grid_search.cv_results_ #       score  ,    ,    df  ,      

説明:GridSearchCVはクロス検証を持参し、パラメータcv設定によりcross_val_score類似.
5、パラメータチューニングのポイントは?回答:パラメータの調整は、良好なパフォーマンスを得るために非常に重要です.パラメータの範囲は十分大きく、各パラメータの最適な値は画像の境界に配置できません.異なるパラメータ設定でscoreの変化が見えない場合は、このパラメータは重要ではないかもしれません.通常、パラメータを変更するとscoreが変化するかどうかを観察するために、最初から非常に極端な値を試したほうがいい.
6、ネストされたクロス検証は何ですか.回答:グリッドは、単一の分割に依存しすぎるトレーニングセットとテストセットを検索し、ネストされたクロス検証を使用して複数回分割できます.ネストされたクロス検証は、新しいデータに使用可能なモデルを提供しないため、将来のデータに使用可能な予測モデルを探す際にはあまり使用されません.
cross_val_score(GridSearchCV(SVC(),param_grid,cv=5),iris.data,iris.target,cv=5) #iris  

7、運転速度を上げる方法は?回答:n_を設定できますjob=-1は、使用可能なすべてのカーネルを使用します.Sparkユーザーの場合は、すでに作成されているSparkクラスタ上でグリッド検索を実行できる最新のspark-sklearnパッケージも使用できます.
以上、「Python機械学習基礎教程」を参考に、感謝します.