分類におけるハイパーパラメーター

完了

ハイパーパラメーターは、トレーニングに使われる設定と考えることができます。 たとえば、ゆっくりトレーニングするか、または早くトレーニングするかを選択できます。 ハイパーパラメーターはトレーニングに影響するので、最終的にはモデルのパフォーマンスにも影響します。 使用できるハイパーパラメーターは、トレーニングしているモデルの種類によって異なります。 通常、モデルのパフォーマンスを最適化するためにハイパーパラメーターを使用して実験します。

サンプルとしてのランダム フォレスト

ランダム フォレストでは、さまざまな種類のハイパーパラメーターを使用できます。 特にランダム フォレストでは、アーキテクチャの決定とハイパーパラメーターの選択との境界線が曖昧になることがあります。 これは、ハイパーパラメーターがモデル内のパラメーターだけでなく、ツリーとフォレストの構造にも影響を与えるためです。

トレーニングの開始時に、各デシジョン ツリーに多数のサンプルを用意します (たとえば、100 人の選手、そのうちの幾人かはメダルを獲得した選手)。 これらのサンプルをより小さい選手のサブグループに段階的に分割するツリーを構築する必要があります。 目標は、これらのサブグループに、類似した選手が含まれるようにすることです。たとえば、すべての選手がメダルを獲得したサブグループ、すべての選手が獲得しなかったサブグループなどです。 このトレーニング プロセスに影響を与える可能性があるハイパーパラメーターについて考慮してみましょう。

分割する条件

トレーニング中、オプティマイザーはどのような場合にノードを分割するかを決定する必要があります。 このような決定を行う方法はいくつもありますが、ここでは、ハイパーパラメーターと呼ばれるメソッドを考慮します。 基本的に、メソッドが異なると、サンプルの類似性を評価する方法も異なります。

ノードを分割する一般的な方法は、情報理論に基づきます。大まかに言うと、結果として得られる 2 つのサブサンプルが元のものより "さらに純粋" になるサンプルの分け方と考えることができます。 使用できるメソッドは異なりますが、使用するメソッドによって、最終的な結果のツリーにわずかな違いを生じさせる可能性があります。これは、勾配降下に使用されるコスト関数によって、最終的なモデルに違いが生じるのと非常に似ています。 次の一連の演習では、2 つの条件を試します。

最小不純物の削減

ノードの分割に使われる条件は、さらにカスタマイズできます。 たとえば、最小純度の削減を設定すると、ノードを分割できるのは、モデルが一定以上向上する場合のみになります。 ノードの最大深度や最小サンプル数など、新しいノードの作成を抑制できるいくつかの関連ハイパーパラメーターがあります。

ツリーが大きくなり過ぎないように制限する理由は、オーバーフィットを避けるためです。 より大きなツリーは、トレーニング データセットと整合を取るのに適していますが、このトレーニング セットに対して過度にチューニングされてしまい、他のデータに対する処理を妨げてしまう可能性があります。 言い換えると、ツリーの複雑さを制限すると、オーバーフィットしてしまう傾向を抑えることができます。

特徴の最大数

ランダム フォレスト内のツリーが作成されると、適合するトレーニング データのサブセットと、使用する特徴の一覧が表示されます。 重要なのは、各ツリーが異なる特徴のコレクションを受け取れるようにすることです。 たとえば、1 つのツリーで体重と身長が使用され、もう 1 つのツリーで身長と年齢が使用されるようにします。

各ツリーが受け取れる特徴の最大数を増やすと、より多くの情報が提供されるようになり、各ツリーがトレーニング セットに適合する度合いが高くなる傾向があります。 これがテスト セットの能力を向上させるか、それとも損なってしまうかを確かめる必要がある場合があります。 これは、多くの特徴を提供すると、フォレスト内のツリーが互いに似るようになり、本来単純なデシジョン ツリーに勝るはずのランダム フォレストのメリットが小さくなる可能性があるからです。 通常、これらの絶妙なバランスを見いだすには、何らかの実験が必要です。

シード処理

モデルの適合は大抵、どこかの時点で乱数に依存することになります。 コンピューターは真の乱数を生成しません。乱数のリストを生成する方法を示す規則が存在し、ランダム シードと呼ばれる最初の数値を指定するからです。

たとえば、シード値を 10 にして、最初の 3 つの "ランダム" 数値を受け取るとすると、コンピューターは 0.75、0.13、0.68 を生成します。 これらの数値はランダムに表示されますが、シード値として 10 を指定すると、毎回同じ数値のセットを取得します。

機械学習では、乱数を使用してモデルのパラメーターを初期化したり、データセットをトレーニング セットやテスト セットに分割したりします。 ランダム シードが設定されている場合、トレーニング プロセス中に使用される乱数値は、コードを再実行するたび同じになります。つまり、コードを再実行するごとに、同じデータをテスト セットまたはトレーニング セットに割り当て、同じ初期化状態 (初期パラメーター) のモデルをトレーニングします。

これに対し、シードを設定しない場合、コンピューターが値を代わりに選択します (たとえば、時間に基づいて)。つまり、トレーニングを 2 回実行すると、わずかに異なる結果が得られます。

ランダム シードは厳密にはハイパーパラメーターではありませんが、この外部パラメーターがトレーニングの有効性に影響を及ぼす可能性があるため、ここで紹介しています。 通常、この影響は小さなものですが、モデルが非常に複雑で、使用可能なデータの量が少ない場合、2 つの異なるシードを使用すると、モデルのテスト セットのパフォーマンスが大きく違ってくる可能性があります。 このような状況では、多くの場合、複数の異なるシードを使用してトレーニングを実行することで、どの程度モデル設計が適切であるか、またどの程度パフォーマンスが "偶然の所産" と言えるかを評価することができます。