機械学習12|ハイパーパラメーターでモデル精度を向上させる

  • URLをコピーしました!

ここで学習すること

機械学習の精度を左右するハイパーパラメーターの種類とその特徴を学習します。

機械学習では一部のパラメーターを手動で調整する必要があります。この人が調整しなければならないパラメーターをハイパーパラメーターといいます。

ハイパーパラメーターは選択したモデルによって異なります。パラメーターを動かして正解率を向上させることができます。

ロジスティック回帰のハイパーパラメーター

Cパラメーター

ロジスティック回帰にはCというパラメーターがあります。Cは訓練データの分類の間違いに対する識別境界線をどのくらい厳しくするかを調整します。

Cが大きいと訓練データを完全に分類できますが、過学習となることが多いです。一方でCを小さくすると汎用性のある境界線を得られますが、うまく識別できないモデルになるケースがあります。

scikit-learnの初期値はC=1.0となります。

Penalty

penaltyはモデルの複雑さにペナルティを与えることで識別の境界線の一般化を行います。

L1:データの特徴量を減らすことで境界線を一般化します。

L2:データ全体の重みを軽くすることで境界線の一般化します。

L2を選ぶことで精度が向上することが多いです。

multi_class

multi_classは複数の分類を行う場合にモデルがどよのように分類を行うかを指定するパラメーターです。ロジスティック回帰ではovrとmultinomialの2つがあります。

ovr:各分類に対して「属する・属さない」の分類問題に適しています

multinomial:「属する・属さない」だけでなく、「どのくらい属する可能性があるか」を考慮する場合に適しています

random_state

モデルは学習する際にデータをランダムで処理します。random_stateはその順番を制御します。ロジスティック回帰ではデータの処理順によって境界線が変わることがあります。random_stateの値を固定することで同じ処理順での学習結果を得ることができます。

random_stateの値を固定することでデータの再現性を得ることができるので、固定することが多いです。

線形サポートベクターマシン(SVM)のハイパーパラメーター

Cパラメーター

ロジスティック回帰同様に線形SVMにもCが定義されており、使い方も同様です。

線形SVMはCの値による精度の変動が激しいです。

Penalty

ロジスティック回帰同様に線形SVMにもpenaltyが定義されており、使い方も同様です。

multi_class

ロジスティック回帰同様にmulti_classも線形SVMにあります。線形SVMのmulti_classはovrとcrammer_singerが用意されており、ovrの方が良い結果が得られる場合が多いです。

また、二値分類の場合はこのハイパーパラメーターは無視されるため、設定する必要がありません。

random_state

乱数の固定に用いられるrandom_stateも線形SVMにも準備されていますが、もらたらされる差は微小です。

非線形サポートベクターマシンのハイパーパラメーター

Cパラメーター

線形SVM同様に非線形SVMにもCが定義されており、使い方も同様です。

線形SVMはCの値による精度の変動が激しいです

kernel

kernelはデータを分類しやすい形にするための関数を定義します。kernelではlinear, rbf, sigmoid, poly, precomputedが選択可能です。

 linear :linearSVCと同等の処理を行います。

 rbf   :比較的高い正解率がでることが多く、デフォルト設定されています。

 sigmoid :ロジスティック回帰と同等の処理を行います。

 poly :rbf同様の処理を行うが、rbfの方が正解率が高い場合が多いです。

 percomputed:前処理によってデータがすでに整合済の場合に選択します。

decision_function_shape

decision_function_shapeではovoとovrの2つの値が選択可能です。

ovo:計算量が多く、データ量が増えると動作が重くなります。

ovr:一つのクラスとそれ以外を分け、多数決で属するクラスを決定します。

決定木のハイパーパラメーター

max_depth

max_depthは学習する木の深さの最大値のパラメーターです。max_depthを指定することでデータの分割を抑制し過適合を防ぎます。

random_state

決定木におけるrandom_stateはデータを分類するために用いる乱数を生成するための値です。random_stateで乱数を固定することで結果を一定にします。

n_estimators

ランダムフォレストでは複数の決定木の多数決で結果が決まります。n_estimatorsは決定木の個数を決めます。

max_depth

max_depthは決定木の深さを指定します。これにより、決定木の過学習を防止します。

k近傍法のハイパーパラメーター

n_neighborsはk近傍法におけるkの値です。kの値は整数をとります。

n_neighborsの数が多すぎるとうまく分類されない場合があります。

よかったらシェアしてね!
  • URLをコピーしました!
目次