モデル評価とチューニング

ハイパーパラメータ一覧をアルゴリズム別に解説|主要パラメータの役割と調整ポイント

はじめに

「ハイパーパラメータには、どのような種類があるのだろう」
「アルゴリズムごとに調整する項目が違い、どの値を優先して見直せばよいのか分からない」と迷っていませんか。

機械学習モデルを作成するとき、学習率や木の深さ、正則化の強さなどが並んでいても、それぞれが精度や学習時間にどう影響するのか分からなければ、設定画面を前に迷ってしまいますよね。

この記事では、代表的なアルゴリズム別に主要なハイパーパラメータを整理し、それぞれの役割、値を大きくした場合の変化、調整時に確認したいポイントを早見表とともに紹介します。

ハイパーパラメータ一覧【早見表】

代表的なハイパーパラメータは、使用するアルゴリズムによって名称や役割、調整による影響が異なります。

ここでは、ニューラルネットワーク、Random Forest、XGBoost、LightGBM、SVMに分けて、実務で確認する機会が多い主要ハイパーパラメータを一覧で整理します。

ニューラルネットワークの主要ハイパーパラメータ

ハイパーパラメータ役割設定例
学習率(Learning Rate)重みの更新幅を決める0.001、0.0001
バッチサイズ1回の更新で使うデータ数32、64、128
エポック数学習データを繰り返す回数10、50、100
隠れ層数・ユニット数モデルの表現力を決める層数2〜5、128ユニットなど
活性化関数出力の変換方法を決めるReLU、Sigmoid
最適化アルゴリズム重みの更新方法を決めるAdam、SGD
ドロップアウト率過学習を抑える割合0.2、0.5

ニューラルネットワークでは、学習率やバッチサイズが学習速度や精度に大きく影響します。

また、隠れ層数やユニット数を増やすと表現力は高まりますが、計算量や過学習のリスクも高くなります。

まずは学習率とバッチサイズを調整し、その後にモデル構造を見直す方法が一般的です。

Random Forestの主要ハイパーパラメータ

ハイパーパラメータ役割設定例
決定木の本数(n_estimators)作成する木の本数100、300、500
最大深さ(max_depth)木の深さを制限する5、10、20
分割に必要な最小サンプル数(min_samples_split)分割条件を決める2、5、10
葉の最小サンプル数(min_samples_leaf)葉に必要なデータ数1、2、5
特徴量数(max_features)分割時に使う特徴量数√特徴量数、log2

Random Forestでは、決定木の本数と最大深さを調整することが多くあります。

木を増やすと予測は安定しますが、学習時間も長くなります。

過学習を防ぐには、最大深さや最小サンプル数もあわせて調整すると効果的です。

XGBoostの主要ハイパーパラメータ

ハイパーパラメータ役割設定例
学習率(learning_rate)各木の影響度を決める0.01、0.05、0.1
決定木の本数(n_estimators)作成する木の本数100、300、500
最大深さ(max_depth)木の複雑さを決める3、5、7
最小損失減少量(gamma)分割する条件を決める0、0.1、1
データ割合(subsample)各木で使うデータ割合0.6、0.8、1.0
特徴量割合(colsample_bytree)各木で使う特徴量割合0.6、0.8、1.0

XGBoostでは、学習率と決定木の本数を組み合わせて調整することが重要です。

学習率を小さくする場合は、決定木の本数を増やす必要があります。

また、subsampleやcolsample_bytreeを調整すると、過学習を抑えやすくなります。

LightGBMの主要ハイパーパラメータ

ハイパーパラメータ役割設定例
学習率(learning_rate)各木の影響度を決める0.01、0.05、0.1
決定木の本数(n_estimators)作成する木の本数100、300、500
葉の最大数(num_leaves)木の複雑さを決める15、31、63
最大深さ(max_depth)木の深さを制限する5、10、20
葉の最小データ数(min_data_in_leaf)葉に必要なデータ数10、20、50
データ割合(bagging_fraction)各木で使うデータ割合0.6、0.8、1.0
特徴量割合(feature_fraction)各木で使う特徴量割合0.6、0.8、1.0

LightGBMでは、num_leavesがモデルの表現力へ大きく影響します。

葉の数を増やしすぎると過学習しやすくなるため、最大深さや葉の最小データ数も一緒に調整します。

学習率と決定木の本数を組み合わせて最適化する方法も一般的です。

SVMの主要ハイパーパラメータ

ハイパーパラメータ役割設定例
C誤分類への許容度を決める0.1、1、10、100
カーネル関数境界の形状を決めるlinear、rbf、poly
gammaデータの影響範囲を決める0.001、0.01、0.1、1
degree多項式カーネルの次数2、3、4

SVMでは、Cとgammaの組み合わせによって分類性能が大きく変わります。

特にRBFカーネルでは、この2つを優先的に調整することが一般的です。多項式カーネルを使う場合は、degreeもあわせて設定します。

ハイパーパラメータとは?

ハイパーパラメータを理解するには、まずモデル内部で学習されるパラメータとの違いを整理する必要があります。

ここでは、ハイパーパラメータの基本的な意味と、パラメータとの役割の違いを順に解説します。

ハイパーパラメータの意味

ハイパーパラメータとは、モデルの学習を始める前に人が設定する値です。

例えば、学習率を0.01にする、決定木の最大深さを10にする、学習回数を100回にするなど、学習方法やモデルの構造をあらかじめ決めます。

設定した値によって学習速度や予測精度、過学習の起こりやすさが変わるため、検証データの結果を見ながら調整していきます。

パラメータとの違い

パラメータは、学習データを使った計算によってモデルが自動的に更新する値です。

一方、ハイパーパラメータは、学習を始める前に人が設定します。例えば、重みやバイアスは学習によって決まりますが、学習率やバッチサイズ、隠れ層の数などは自動では決まりません。

そのため、ハイパーパラメータは検証結果を確認しながら調整することが大切です。

代表的なハイパーパラメータ一覧と役割

学習率やバッチサイズなどのハイパーパラメータは、それぞれ調整する対象やモデルの学習結果に与える影響が異なります。

ここでは、ニューラルネットワークで使われる学習率、バッチサイズ、エポック数、隠れ層数・ニューロン数、正則化係数、ドロップアウト率に加え、決定木系モデルで重要となるmax_depthとn_estimatorsの役割を解説します。

学習率(Learning Rate)

学習率は、モデルの重みを1回の学習でどれだけ更新するかを決める値です。

0.1、0.01、0.001などを設定し、値が大きすぎると学習が不安定になり、小さすぎると学習に時間がかかります。

最初は0.001または0.01から試し、検証データの結果を見ながら少しずつ調整しましょう。

バッチサイズ(Batch Size)

バッチサイズは、1回の重み更新に使う学習データの件数です。

16、32、64、128などを設定し、値を大きくすると計算効率は上がりますが、より多くのメモリが必要になります。

最初は32または64を目安にし、メモリ不足なら減らし、余裕があれば増やして調整します。

エポック数(Epochs)

エポック数は、学習データ全体を繰り返し学習させる回数です。

10、50、100などを設定し、増やすほど学習は進みますが、多すぎると過学習につながることがあります。

最初は50〜100程度から始め、検証データの結果を見ながら増減すると調整しやすくなります。

隠れ層数・ニューロン数

隠れ層数は入力層と出力層の間に配置する層の数、ニューロン数は各層に配置する計算単位の数です。

数を増やすほど複雑な特徴を学習できますが、計算時間が長くなり、過学習の原因になることもあります。

最初は1〜2層、各層32または64ニューロン程度から始め、検証結果を見ながら調整しましょう。

正則化係数

正則化係数は、重みが大きくなりすぎないように調整するための値です。

0.0001、0.001、0.01などを設定し、適切に調整すると過学習を防ぎやすくなります。

ただし、値を大きくしすぎると学習が十分に進まないため、検証データの結果を確認しながら調整することが大切です。

ドロップアウト率

ドロップアウト率は、学習中に一部のニューロンを一時的に無効化する割合です。

0.2や0.3から始めることが多く、適切に設定すると過学習を抑えやすくなります。

一方で、高くしすぎると学習しにくくなるため、検証データの結果を見ながら少しずつ調整しましょう。

max_depth・n_estimators

max_depthは決定木の深さ、n_estimatorsは作成する決定木の本数を決める値です。

max_depthを大きくすると複雑なデータを表現しやすくなりますが、過学習しやすくなります。

n_estimatorsを増やすと予測は安定しやすくなる一方、学習時間も長くなるため、検証結果を見ながら少しずつ調整するのがおすすめです。

まず調整したいハイパーパラメータ

ハイパーパラメータは一度にすべて変更するのではなく、学習結果への影響が大きい項目から順番に調整することが重要です。

ここでは、最初に確認したい学習率、次に見直すバッチサイズとエポック数、最後にモデルごとに設定する主要パラメータの順に解説します。

初心者は学習率から調整する

初心者は、まず学習率を0.001に設定し、検証データの損失が下がるかを確認しましょう。

損失が大きく変動する場合は0.0001へ下げ、ほとんど変化しない場合は0.01へ上げるのが目安です。

1回に10倍または10分の1ずつ変更し、同じ条件で比較すると違いを判断しやすくなります。

次にバッチサイズとエポック数を調整する

学習率を決めたら、次はバッチサイズとエポック数を調整します。

バッチサイズは32または64から始め、メモリ不足なら減らし、余裕があれば増やしてみましょう。

エポック数は50〜100を目安に設定し、検証データの結果を見ながら増減すると調整しやすくなります。

モデルごとの主要パラメータを調整する

基本的な設定が決まったら、モデルごとの主要なハイパーパラメータを調整します。

例えば、Random Forestではmax_depthn_estimators、XGBoostやLightGBMではmax_depth学習率、SVMではCgammaを調整することが一般的です。

一度に複数の値を変更せず、1項目ずつ比較すると、どの設定が効果的か判断しやすくなります。

ハイパーパラメータ一覧を確認するときのポイント

ハイパーパラメータ一覧には多くの項目が並びますが、すべてを同じ優先度で調整する必要はありません。

使用するモデルによって精度や学習時間に影響しやすい項目が異なるため、ここでは調整する項目を絞る考え方と、モデルごとに重視すべき項目の違いを解説します。

すべてを調整する必要はない

ハイパーパラメータは、すべての項目を調整する必要はありません。

まずは学習率や木の深さ、決定木の本数など、影響が大きい2〜3項目から試してみましょう。検証データの結果が安定している項目はそのままにし、過学習や学習不足などが見られる項目だけを調整すると効率的です。

比較するときは1項目ずつ変更すると、結果の違いを判断しやすくなります。

モデルによって重要な項目は異なる

重要なハイパーパラメータは、使用するモデルによって異なります。

ニューラルネットワークでは学習率やバッチサイズ、Random Forestではmax_depthn_estimators、SVMではCgammaを優先して調整することが一般的です。最初は影響が大きい2〜3項目に絞ると、効率よく調整を進められます。

ほかのモデルの設定をそのまま使うのではなく、モデルに合った項目から見直しましょう。

まとめ

ハイパーパラメータは、モデルの学習前に設定する値で、学習の進み方や予測精度、過学習の起こりやすさに大きく影響します。

ただし、すべての項目を細かく調整する必要はなく、使用するモデルで影響が大きい2〜3項目から見直すだけでも十分に効果が期待できます。

調整するときは、一度に複数の値を変更するのではなく、1項目ずつ比較しながら検証データの結果を確認することが大切です。

ニューラルネットワーク、Random Forest、XGBoost、SVMなど、それぞれのモデルで重要な項目は異なるため、特徴に合わせて調整を進めましょう。

最初から最適な設定を見つけようとする必要はありません。基本的な値から少しずつ試し、改善が見られた設定を残していくことで、無駄な試行を減らしながら、自分のモデルに合ったハイパーパラメータを見つけやすくなります。

-モデル評価とチューニング
-,