1. 序章

このチュートリアルでは、決定木の相互検証を実行する方法を説明します。 また、相互検証の結果の解釈についても説明します。

意思決定ツリーに焦点を当てますが、ここで紹介するガイドラインは、サポートベクターマシンニューラルネットワークなどのすべての機械学習モデルに適用されます。

2. デシジョンツリー

デシジョンツリーは、オブジェクトを分類するためにオブジェクトの属性に対して実行するチェックの計画です。 たとえば、外で遊ぶのに適した日を分類するための決定木を見てみましょう。

1日の属性を前提として、ツリーの最上部から開始し、ルートによって示される機能を検査し、機能の値に応じてその子の1つにアクセスします。 次に、リーフノードに到達して決定を読み取るまでプロセスを繰り返します。

3. 相互検証

決定木の特徴は、ツリーをフィッティングして学習するパラメーターと、トレーニング前に設定したパラメーターの2種類です。 後者は、例えば、木の最大深度 、分割の品質を測定する関数、および他の多く。

それらはハイパーパラメータの名前でも呼ばれ、それらの選択は決定木のパフォーマンスに大きな影響を与える可能性があります。 したがって、当然の問題は、ハイパーパラメータを設定して、結果のツリーのパフォーマンスを可能な限り向上させる方法です。 そのために、通常、相互検証を行います。

3.1. グリッド検索

まず、どのハイパーパラメータを調整するかを決定する必要があります。 重要なのは、それらがたくさんあり、値の各組み合わせを厳密にテストするのに時間がかかりすぎる可能性があるということです。 たとえば、2つのハイパーパラメータを使用することにしたとしましょう。

  • :木の最大の深さ。
  • :分割の品質を測定する関数。

次に、テストするハイパーパラメータ値を特定します。 たとえば、、、、は情報ゲインであり、はジニ不純物です。 このようにして、組み合わせのグリッドを取得します。

   

グリッドのすべての組み合わせを使用して、ツリーをトレーニングおよび検証します。

3.2. 通常の相互検証

ツリーを相互検証する通常の方法は次のとおりです。 データをトレーニングセットとテストセットに分割します。 次に、トレーニングデータをフォールドに分割します:(計算能力に応じて、またはそれ以上)。 分類の問題を処理する場合のベストプラクティスは、各フォールドの異なるクラスの比率をデータセット全体とほぼ同じに保つことです。

その後、折り目を繰り返します。 -番目のパスでは、すべてのフォールドを使用しますが、グリッド内の組み合わせごとにツリーをトレーニングし、予約されたフォールドに適合したツリーを検証します。 このようにして、ツリーと検証スコアを取得します。グリッドの組み合わせごとに。

3.3. 結果

グリッドに組み合わせがあり、トレーニングセットをフォールドに分割すると、検証スコアのテーブルが作成されます。各スコアは、トレーニングに使用しなかったフォールドでツリーをテストした結果です。それ。 視覚的には、2次元のマトリックスです。

   

値は、ハイパーパラメータグリッドで組み合わせを使用してで評価する以外に、フォールドでツリーをトレーニングすることによって得られるパフォーマンススコアです。 たとえば、 accuracy を測定すると、次のような結果が得られる可能性があります。

   

3.4. 最適な組み合わせの選択

最後に、ハイパーパラメータを最良のツリーを与える組み合わせに設定します。 通常、最良の平均値を持つ設定を使用します。 ただし、スコアの変動性を考慮しない場合、手段は誤解を招く可能性があります。 たとえば、上記の表のの平均精度はですが、の平均精度は次のとおりです。

ツリーを使用するドメインでは、の精度の差が大きくなる可能性があるため、この組み合わせにより、より正確なツリーのトレーニングが可能になると結論付けることができます。 ただし、標準偏差を計算してマージンエラーを追加すると、間隔が重なっていることがわかります。

このような場合、計算量の少ない設定、またはより単純なモデルにつながる設定を選択する必要があります。 たとえば、深さのハイパーパラメータとの間隔だけを考慮してオーバーラップした場合は、を使用します。 その理由は、シャローツリーがより速く動作し、理解しやすいためです

または、追加のパフォーマンススコアを計算して同点を解消するか、スコアのパレートフロントで組み合わせを探すこともできます。 別のオプションは、スコアで統計的検定を実行して、どの組み合わせが最も正確なツリーを提供するかを見つけることです。

ただし、次の点に注意する必要があります。 2つの組み合わせのスコアの間に統計的な違いが見つかったとしても、1つのハイパーパラメーター設定でトレーニングされたツリーが、他の組み合わせでトレーニングされたツリーよりも必ずしも優れているとは限りません。 たとえば、エラーバーが重なっている場合でも、平均精度スコアが同じ範囲内にあるツリーを検討できます。

3.5. ネストされた相互検証

これが、実際に交差検定が通常行われる方法です。 ただし、このアプローチには欠点があります。 最初にデータをトレーニングセットとテストセットに分割し、次にトレーニングセットのフォールドを使用してツリーを相互検証するため、結果はメイントレイン/テスト分割を条件とします。 データセットが小さい場合、テストセットでの最終的なツリーのパフォーマンスは、実際のパフォーマンスの不正確な見積もりになる可能性があります。

ネストされた相互検証は、データ分割も繰り返すことでこの問題に対処します。 つまり、 データをトレーニングとテストのフォールド時間に分割します。 さらに、分割ごとに上記のように交差検定を実行します。

このようにして、データ分割の影響を排除し(存在する場合)、サンプリングバイアスを回避します。 しかし、の主な欠点は、何倍もの作業を行うことであり、それを実行する余裕がない可能性があります。

3.6. 例

外側と内側の分割を使用したネストされた交差検定の結果行列の例を次に示します。

   

これで、組み合わせごとのスコアが得られ、平均値をより適切に推定できます。

4. 相互検証の結果の解釈

近似ごとに異なるツリーが得られる可能性があるため、平均化された検証スコアの意味を理解するのは難しい場合があります。 グリッド内の組み合わせに対して取得する検証スコアは、ハイパーパラメーター値の特定の組み合わせの下でその特定のトレインセットを使用してツリーモデルをトレーニングすることによって取得できるすべてのツリーのパフォーマンススコアのサンプルです 。 彼らの平均は、期待されるパフォーマンスを推定します。 したがって、取得する平均値は特定のツリーを参照していません。 代わりに、それらはツリーファミリーの期待されるパフォーマンスを表し、ハイパーパラメーターの設定と初期のトレイン/テスト分割によって特徴付けられます。

ネストされた交差検定に関しては、さまざまなトレイン/テスト分割のスコアを取得します。 したがって、組み合わせの平均値は、データをトレーニングセットとテストセットに分割する方法に関係なく、特定のハイパーパラメーター設定の下でその特定の問題に対してトレーニングされたツリーの期待されるパフォーマンスを推定します。

5. 結論

この記事では、決定木の相互検証について説明しました。 ネストされていない交差検定手順とネストされた交差検定手順について説明しました。 最後に、交差検定の結果を解釈する正しい方法を示しました。