機械学習 (ML) プロジェクトに関連する一般的なプロセスまたはワークフローがあります。 典型的な ML ワークフローでは、初めに業務上の問題を特定し、問題点の定義または質問を作成します。 続いて、データ準備 (または前処理)、フィーチャ エンジニアリング、適切なアルゴリズムの選択とモデル トレーニング、ハイパーパラメーターの調整、モデルの評価などの一連のステップを行います。 このプロセスが反復され、多くの場合、最適なモデルは複数の反復と実験の後にしか得られません。
データに最適なモデルに特定するには、ML プロセス全体で多くの時間、労力、専門知識を必要とします。 [AutoML を使用したトレーニング (Train Using AutoML)] ツールは、このワークフローを自動化し、そのデータに最も適合するハイパーパラメーター セットを使用して最適なアルゴリズムを特定します。 この実装は、「mljar-supervised」と呼ばれるオープンソースの実装に基づいて構築されています。 以下に、ML プロセスの各ステップについて詳細に説明します。
AutoML を使用したトレーニングのワークフロー
[AutoML を使用したトレーニング (Train Using AutoML)] ツールは次の処理を自動化します。
- データの前処理 - ML プロジェクトを成功させるには、特定の問題に対応する高品質な入力データを収集する必要があります。 このデータは、異なるデータ ソースから取得される可能性があり、場合によっては組み合わせる必要があります。 データの収集および合成の後、ML アルゴリズムを効果的にトレーニングしてデータから学習できるように、データをクリーニングしてノイズを除去する必要があります。 このステップは通常、時間と手間がかかり、分野固有の詳細な知識と経験が必要な場合があります。 データ クリーニングには、欠損値の特定と処理、外れ値の検出、ラベルが誤っているデータの修正などがあり、いずれも、ML の実行者によるかなりの時間と労力を必要とする可能性があります。 以下に、前処理ステップを示します。
- 外れ値の除去 - 外れ値は、他の残りのデータ ポイントと類似しないデータ ポイントです。 外れ値の理由には、データ入力エラー、データ計測エラー、正当な非類似があります。 外れ値により、トレーニング段階でモデルがあいまいになる傾向があるので、原因にかかわらず、データから外れ値を除去することが重要です。 外れ値に対処する一般的な方法は、手動でのエントリの修正またはデータセットからのエントリの削除です。
- 欠損値の補完 - 場合によっては、データセットの一部の列に欠損値があります。 トレーニング データに欠損したエントリがある場合、機械学習モデルはトレーニングできません。 データセットで欠損しているエントリを確実になくすため、データ補定と呼ばれるプロセスを使用して、欠損しているエントリを有効なデータで補います。 欠損しているエントリを埋めるには、最もよく出現する値を追加するか、新しい値を追加してデータの欠損を強調します。 数値データの場合、この方法は、欠損データ列のすべてのエントリの平均または中央値を使用すべき可能性があります。 これは、現在のところ [欠損値の補完 (Fill Missing Values)] ツールを実行して特定できます。 [欠損値の補完 (Fill Missing Values)] ツールは、列のグローバルな統計情報を使用して補完できるだけでなく、ローカル近傍、時空間近傍などの空間的な方法や時系列値などの時間的な方法も使用して補完できます。
- データの規模調整と正規化- OLS (残差) のような線形モデルの機械学習モデルをトレーニングする際の主な前提条件の 1 つは、トレーニング対象データが正規分布している、つまり釣鐘曲線になっていることです。
線形モデルを使用する前に、データセットの各列が正規分布していることを確認します。 正規分布していない列があった場合、通常はデータに座標変換が適用され、正規分布になるよう変換されます。
必ず、データセットのすべての列が同じ規模になるようにして、より大きな規模の値を持つ列をモデルが重視しないようにします。 これは、データセットにスケーリング手法を適用することで行われます。
上記は線形モデルにも当てはまるかもしれませんが、ロジスティック回帰などの他のアルゴリズムや、決定木、エクストラ ツリー、ランダム フォレスト、XGBoost、LightGBM などのツリーベースのモデルは特に、正規性を想定せず、規模/傾斜分布の違いに対してより堅牢です。
- カテゴリ データの数値への変換 - ほとんどの機械学習モデルは、トレーニングに使用されているデータが数字形式である必要があります。 他のデータ タイプを処理することはできません。 State、Country、City、または Land cover category、Construction type、Dominant political party などの非数値列を、数字に変換します。 カテゴリ データから数値への変換に使用される方法には、ラベル エンコーディングとワンホット エンコーディングがあります。
- フィーチャ エンジニアリングとフィーチャ選択 - モデルのトレーニング プロセスで使用される列は、フィーチャと呼ばれます。 モデルが学習中のこれらのフィーチャの有用性はさまざまです。 一部のフィーチャは有用でないことがあり、そのような場合は、フィーチャがデータセットから削除されるとモデルが改善されます。
再帰的フィーチャの除去やランダム フィーチャ手法など方法は、データセット内のフィーチャの有用性の特定に役立ち、そのような方法で有用でないとされたフィーチャは通常削除されます。
場合によっては、複数のフィーチャを 1 つのフィーチャに組み合わせるとモデルが改善されます。 このプロセスはフィーチャ エンジニアリングと呼ばれます。
入力の複数のフィーチャを組み合わせることによって得られる新しいフィーチャとは別に、ツールは、[高度] オプションが使用されている場合、zone3_id から zone7_id までの名前の空間フィーチャも作成します。 これらの新しいフィーチャは、入力トレーニング フィーチャの位置をさまざまなサイズの複数 (最大 5 つ) の空間グリッドに割り当て、グリッド ID を zone3_id から zone7_id の名前を持つカテゴリ独立変数として使用することで生成されます。 これにより、関連する空間情報がモデルに与えられ、モデルは使用可能データからより多くを学習できます。
- モデルのトレーニングとモデル選択 - モデルのトレーニング ステップでは、ML 実行者は、問題とデータ特性に基づいて適切な ML アルゴリズムを選択します。 次に、データに適合するようにモデルをトレーニングする反復プロセスを開始します。このプロセスには多くの場合、複数の異なる ML アルゴリズムによる実験が含まれます。 これらのアルゴリズムにはそれぞれ、多数の異なるハイパーパラメーターがあります。ハイパーパラメーターは、ML 実行者によって手動で指定される値で、モデルが学習する方法をコントロールします。 次に、指定されたハイパーパラメーターは、アルゴリズムのパフォーマンスを改善し、より最適な結果を達成できるよう調節 (調整) されます。 これは、ML 実行者の時間と専門知識が必要な反復プロセスです。 さまざまなアルゴリズムまたは統計モデルには、線形回帰とロジスティック回帰が含まれ、他の機械学習モデルには、決定木、ランダムフォレスト、およびより新しい LightGBM や XGBoost などのブースティング モデルが含まれます。 LightGBM および XGBoost は、ほぼすべてのデータセットで、他のほとんどのモデルよりも優れていますが、特定のデータセットでどのモデルがうまく機能するかを予測することは難しいので、データに最適なモデルを決定する前に、すべてのモデルを試して各パフォーマンスを比較する必要があります。 これは、MSE、RMSE、MAE、MAPE の値が低いデータに適合しているモデルを意味しますが、その一方、回帰問題では R2、Spearman、Pearson のスコアが高く、Logloss は最小、分類問題では AUC、F1 のスコアが高くなります。
ほとんどの場合は、複数のモデルを 1 つに結合してこの結合モデルから出力を取得すると、単一モデルに比べてより最適な結果を得られます。 このステップはモデル アンサンブルと呼ばれます。
- ハイパーパラメーターの調整 - これより前のステップのほとんどは反復プロセスでしたが、機械学習モデルのトレーニングで最も面倒なステップになることが多いのは、ハイパーパラメーターの調整です。
ハイパーパラメーターは、各モデルに付属するレバーと考えることができます。 ランダム フォレスト モデルのトレーニングで使用されるハイパーパラメーターは、LightGBM モデルのトレーニングで使用されるものとは異なります。 これらのハイパーパラメーターについて学ぶと、モデルの理解に役立ちます。
- モデルの選択 - ML ワークフローの最後のステップは、モデルの評価です。このステップでは、トレーニングおよび調整された ML アルゴリズムが、適合しなかったデータに対して適切に一般化されることを検証します。 この見えないデータは通常、検証セットまたはテスト セットと呼ばれ、モデルのトレーニングに使用される残りのデータとは別に保持されます。 この最後のステップの目標は、ML アルゴリズムが確実に、新しいデータで許容可能な予測精度を達成することです。
ML ワークフロー全体を調べると、さまざまな程度の人的入力、意思決定、および選択がすべてのステップで行われていることが明らかです。
- 問題に対応するための適切なデータを収集したか?また、データは十分か?
- データのコンテキストで外れ値を示すのは何か?
- 欠損値が見つかった場合、何と置き換えるか?
- どのフィーチャを ML モデルに含めるべきか?
- どの ML アルゴリズムを使用すべきか?
- 許容できるモデルのパフォーマンス レベルはどの程度か?
- 所定のモデルで、ハイパーパラメーターの最適な組み合わせは何か?
この最後の決定には、反復可能なハイパーパラメーターについて数百または数千の組み合わせが含まれる可能性があります。 いくつかの異なるフィーチャ エンジニアリング シナリオと、いくつかの異なる ML アルゴリズムのトレーニングおよび調整を追加すると、プロセス全体が管理しにくく非生産的になり始めます。 さらに、ML ワークフローの複数のステップで、データ サイエンス技術、統計、および機械学習アルゴリズムに関する専門的な技術の理解が必要です。 そのため、ML プロジェクトの設計と実行は、時間と多くの労力を要し、コストがかかり、多くの場合は、トレーニングされた ML 実行者とデータ サイエンティストに大きく依存する可能性があります。
この 10 年間で、機械学習は、それが適用されるアプリケーションの範囲と、機械学習で生み出された新しい研究の量の両方で、劇的な成長を遂げてきました。 この成長の背後にある最大の原動力には、ML アルゴリズムと手法自体の成熟、アルゴリズムで学習するための大量データの生成と増大、アルゴリズムを実行するための多数の安価なコンピュート、ML アルゴリズムが複雑なデータ構造と問題に対処できる企業での意識の高まりなどがあります。
多くの組織は、ML を使用してデータを活用し、そこから実用的な新しい洞察を得ようと考えていますが、潜在的な ML アプリケーションの数と、それらに対処するためのトレーニングを受けた専門家の ML 実行者の数との間に不均衡があります。 その結果、ML を組織全体で広くアクセスできるようにし、ML 以外の専門家や分野の専門家がすぐに使用できるツールを作成することで、組織全体で ML を民主化する必要性が高まっています。
近年、すべての経験およびスキル レベルにわたって組織内の ML に対する膨大な需要に対処する方法として、自動機械学習 (AutoML) が登場しました。 AutoML は、データの準備、フィーチャ エンジニアリング、モデルの選択、ハイパーパラメーターの調整、モデルの評価など、ML ワークフローを可能な限り自動化 (人手による入力の削除) する単体システムを作成することを目的としています。 自動化システムの作成は、ML への参入障壁を下げることから非専門家にとって有益になり得ますが、ML ワークフローで最も手間で時間のかかる手順のいくつかを取り除くという点で、訓練を受けた ML 実行者にとっても有益になり得ます。
非 ML 専門家 (分野の専門家である GIS アナリスト、ビジネス アナリスト、またはデータ アナリスト) 向けの AutoML - AutoML を使用する主な強みは、最も技術的な専門知識と理解を必要とする ML ワークフローの一部のステップを省けることです。 分野の専門家であるアナリストは、ビジネス上の問題を定義して適切なデータを収集し、残りの作業をコンピューターに学習させることができます。 データ クリーニングやフィーチャ エンジニアリングのためのデータ サイエンス技術を深く理解する必要はありません。また、すべての ML アルゴリズムが行う処理を知る必要も、さまざまなアルゴリズムやハイパーパラメーター構成を探索する時間を費やす必要もありません。 代わりに、アナリストたちは、ML ワークフロー自体は意識せず、特定分野の専門知識を特定のビジネス上の問題やドメイン アプリケーションに適用することに集中できます。 さらに、多くの場合コーディングの経験を必要とせずに高度なモデルを独自に構築して使用できるため、トレーニングを受けた組織のデータ サイエンティストや ML 技術者への依存度が低くなります。
ML 専門家 (データ サイエンティストまたは ML 技術者向けの AutoML - AutoML は、ML 専門家にとっても非常に有益ですが、理由がそれほど明白ではない場合があります。 一例としては、ML 専門家は、組織内の分野の専門家をサポートするために多くの時間を費やす必要がないので、固有のより高度な ML 作業に集中できます。 ML 専門家の ML プロジェクトに関して言えば、AutoML は大幅な時間の節約と生産性の向上を可能にします。 データ クリーニング、フィーチャ エンジニアリング、モデルの選択、ハイパーパラメーターの調整など、ML ワークフローでの時間のかかるステップの多くは自動化できます。 これらの予備的な反復ステップの多くを自動化することによって節約された時間は、代わりに、より高度な技術的タスやより多くの人的入力を必要とするタスク (分野の専門家との共同作業、ビジネス上の問題の理解、ML の結果の解釈など) に費やすことができます。
時間節約に加え、AutoML では、ML ワークフローに伴う主観的な選択や実験の一部が省かれるので、ML 実行者の生産性向上にも役立ちます。 たとえば、新しいプロジェクトに取り組む ML 実行者は、作成すべき新しいフィーチャ、特定の問題に最適な ML アルゴリズム、最適なハイパーパラメーターなどを特定するためのトレーニングを受け、専門知識を持っています。 ただし、特定の新しいフィーチャの構築を見落とす場合や、ML ワークフローの実行中に使用できるハイパーパラメーターの組み合わせをすべて試すことができない場合があります。 さらに、ML 実行者は、以前の作業やそれまでに経験した他の ML アプリケーションでの成功に基づいて特定の ML アルゴリズムを好むため、フィーチャ選択プロセスやアルゴリズムの選択にバイアスが生じる可能性があります。 実際には、1 つの ML アルゴリズムがすべてのデータセットで最高のパフォーマンスを発揮するわけではありません。特定の ML アルゴリズムは他のアルゴリズムよりもハイパーパラメーターの選択の影響を大きく受けます。多くのビジネス上の問題には、それらの問題の解決に使用される ML アルゴリズムの解釈可能性に対し、さまざまな程度の複雑さと要件があります。 AutoML は、同じデータセットに多くの異なる ML アルゴリズムを適用し、いずれのパフォーマンスが最も高いかを判断することで、この人間のバイアスの一部を減らすことができます。
ML 実行者にとって、AutoML は、ML プロジェクトの最初の開始点またはベンチマークとしても機能します。 これを使用して、データセットのベースライン モデルを自動的に開発でき、特定の問題に対する一連の予備的な洞察を得ることができます。 ここから、入力データセットに特定のフィーチャを追加または削除するか、特定の ML アルゴリズムに重点を置いてそのハイパーパラメーターを微調整するかを決定できます。 この意味で、AutoML は、トレーニングを受けた ML 実行者の最初の選択肢セットを絞り込む手段と見なすことができ、ML システム全体のパフォーマンスの向上に集中できます。 これは実際に非常によく使用されるワークフローです。ML 専門家は AutoML を使用してデータ主導のベンチマークを開発し、専門知識を組み込んで結果を改善し、このベンチマークに基づいて構築します。
最終的には、組織で AutoML を介して ML を民主化することで、分野の専門家は、ビジネスの問題に注意を向け、実用的な結果を得ることができ、より多くのアナリストは最適なモデルを構築できます。また、組織は、必要とする ML 専門家の雇用者数を減らすことができます。 また、トレーニングを受けた ML 実行者やデータ サイエンティストの生産性の向上により、専門知識が最も必要とされる他の多数のタスクに、専門知識を集中させることができます。
要約すれば、[AutoML を使用したトレーニング (Train Using AutoML)] ツールは、最適なモデルを特定するために次のステップを実行する必要があります。
- 決定木 (最大深度 4 の単純なツリー) や線形モデルなどの単純なアルゴリズムが試行されます。 これにより、期待するデータと結果をすばやく調べることができます。
- AutoML 開始 (上記のステップ 1) で選択されたモデルは、デフォルト パラメーターを使用してトレーニングされます。このステップでは、デフォルトのハイパーパラメーターのみを使用し、はるかに複雑なアルゴリズムのセットによりデータを実行します。 各アルゴリズムおよび使用可能なすべてのアルゴリズムに対して、1 つのモデル適合が試行されます。 使用できるアルゴリズムは、線形、ランダム フォレスト、XGBoost、Light GBM、決定木、およびエクストラ ツリーです。
- 個々のアルゴリズムのハイパーパラメーター空間をランダムに検索し、最適なハイパーパラメーター セットを見つけます。
- Golden Feature (問題空間をよく表す最適なフィーチャ) を使用して新しいフィーチャを構築します。 新しいフィーチャのいずれに予測力があるかを判定し、元のデータセットに追加します。 このステップでは、前のステップで特定された最適なハイパーパラメーター セットが使用されます。
- これは、フィーチャ選択ステップです。 ステップ 4 で特定された最適なハイパーパラメーター セットを使用して、アルゴリズムごとに 1 つの最高パフォーマンス モデルをトレーニングし、最も重要度の低いフィーチャを特定して削除します。
- これまでにトレーニングされた最適モデルの結果が 1 つのアンサンブルにまとめられます。
- モデルがスタックされ、最適モデル (スタックされたモデルを含む) の結果が結合されます。
モデルのアンサンブル - アンサンブルは、加重平均または投票によって予測が組み合わされたモデルのコレクションです。
アンサンブルに使用される最も一般的な方法には、バギング (RF はバギングの典型的な例) やブースティング (XGBoost はブースティングの一例) があり、同じアルゴリズムに属するモデルからの出力を組み合わせます。 ”Ensemble Selection from Libraries of Models” (Caruana 他著) で言及されているそれらの方法などの最近の技術は、さまざまなモデルを結合します。 アンサンブルを作成するには、次の手順に従います。
- 空のアンサンブルで開始します。
- アンサンブルのパフォーマンスを最大にするライブラリ内のモデルを、検証セットのエラー指標に追加します。
- 一定の反復回数、またはすべてのモデルが使用されるまで、前の手順を繰り返します。
- 検証セットで最大のパフォーマンスを発揮する、ネストされたアンサンブルのセットからアンサンブルを返します。
モデル スタッキング - モデル スタッキングには、複数のモデルの結果の組み合わせや、そこからの結果の派生も含まれます。
アンサンブル手法は、出力に異なる重みを与えることによってさまざまなモデルの結果を組み合わせますが、スタッキングは、各基本モデルの出力をフィーチャとして使用し、それらを上位レベルのモデルであるメタモデルに追加します。 上位レベルのメタモデルからの出力は、最終出力として使用されます。
アンサンブルのスタック - パフォーマンス向上のため、モデル スタックが作成され、その出力を組み合わせてアンサンブル スタックが作成されます。
出力レポートの解釈
[AutoML を使用したトレーニング (Train Using AutoML)] ツールは、出力として HTML レポートを生成できます。
レポートのメイン ページにはリーダーボードが表示されます。 同じ情報を、ツールの出力ウィンドウでも参照できます。
リーダーボードには、評価したモデルとその指標値が表示されます。 回帰問題のこのケースでは、RMSE が最小のモデルが最適モデル (この場合はアンサンブル モデル) と見なされます。 ただし、これは分類問題では異なります (ログ損失など)。
AutoML パフォーマンスの箱ひげ図は、以下に示すとおり、Y 軸を評価指標 (RMSE)、X 軸をモデルとして、さまざまなモデルの評価指標を比較します。 箱ひげ図は、RMSE が最小のアンサンブル モデルが最適モデルであることを示しています。
この AutoML パフォーマンス チャートは、最高パフォーマンスのモデル (この場合はアンサンブル モデル) の評価指標が、さまざまな反復によって異なる様子を示しています。 反復チャートは、モデルの各実行間でのモデルの一貫性を理解するのに役立ちます。
次に、Spearman 相関は、評価されたすべてのモデルに対して生成され、より密接に関連するモデルは、濃い青で表示されます。 たとえば、LightGBM と XGBoost からの出力は、最も密接に関連しています (いずれもブースティング アルゴリズムなので密接な関係が予期されます)。 LightGBM からの出力は、エクストラ ツリーからの出力と比較して、ランダム フォレストからの出力に似ています。
リーダーボードで名前列のモデルのリンクをクリックすると、ハイパーパラメーターの調整完了後にモデル トレーニング用に完成したハイパーパラメーターを表示するページに移動します。 この例では、決定木は max_depth 値 3 でトレーニングされました。
同じページには、評価に使用されたもの以外の他の指標も表示されます。 回帰タスクである以下の例では、MAE、MSE、R2、および MAPE 指標と、モデル評価に使用された RMSE 指標を確認できます。
また、実際の出力と予測された出力 (ここでは 5,000 個のデータ ポイントのサンプル) の散布図を確認できます。
このチャートを使用すると、モデルのパフォーマンスを判定できます。 上図は、レポートから取得した 2 つのモデルの散布図の比較を示しています。 2 つ目のモデルは、予測値と真の値がより大きく異なる 1 つ目のモデルよりもパフォーマンスが優れています。
最後に、モデルの説明可能性を高めるため、最終モデルの各変数の重要度もレポートに含まれています (sklearn でのフィーチャの重要度と同様)。 sklearn とは異なり、このプロットは sklearn の非木構造モデルにも生成できます。 この非木構造モデルの説明可能性は、SHAP (Shapley Additive Explanations) によってもたらされます。
SHAP は、任意の機械学習モデルの出力を説明する、ゲーム理論的な手法です。 ゲーム理論の古典的な Shapley 値や関連するエクステンションを使用して、最適なクレジット割り当てとローカル説明を結びつけます。 SHAP の詳細とその実装については、こちらをご参照ください。 SHAP 出力は [基本] オプションでのみ使用できます。
以下のプロットでは、住宅データセットの各変数が学習済みモデルに与えるグローバルな影響を視覚化できます。 これは、sqft_living フィーチャがモデルに最も影響を与え、住宅価格を予測する際に最も重要なフィーチャであり、bathrooms と bedrooms の数がその次に重要であることを示しています。
[基本] オプションを使用すると、自動探索的データ解析レポート (EDA レポート) を表示することもできます。このレポートでは、モデル トレーニングで使用されたターゲット変数と予測変数の統計サマリーを出力します。 以下は、altclip.tif という変数に対する EDA レポートの例です。
参考文献
Caruana, Rich et al. "Ensemble Selection from Libraries of Models." Proceedings of the 21st International Conference on Machine Learning. Banff, Canada (2004). http://www.cs.cornell.edu/~alexn/papers/shotgun.icml04.revised.rev2.pdf.