機械学習タスクのタイプ
このトピックでは、機械学習技術の概要について説明します。また、機械学習技術を活用して課題を効率的に解決する方法を、簡単な例を使用して説明します。
回帰タスク
回帰タスクは、「教師あり学習」タスクです。このタスクにより、一連の数値とカテゴリーデータに基づいて、連続する値を予測したり、特定の事象を把握したりすることができます。たとえば、間取り、広さ、立地などの情報に基づいて住宅の価格を予測する場合などに、回帰タスクを使用します。
数学的には、「Y=aX+b」という直線回帰式を使用してデータセットをモデル化するための手法が回帰タスクということになります。この場合、Xデータポイント(従属変数)とYデータポイント(独立変数)を使用して、線形回帰モデルのトレーニングが実行されます。傾き(m)とy切片(b)の値を計算することにより、最適な観測線を作成することができます。
回帰分析を実行するための効果的なアルゴリズムを以下に示します。
- 単線形回帰
- 多重線形回帰
- 多項式線形回帰
- 決定木(デジジョンツリー)
- ランダムフォレスト
- サポートベクターマシン(SVM)
用途
- リスク評価
- スコア予測
- 市場予測
- 気象予報
- 住宅や商品の価格予測
- バーチャルアシスタント(Siri、YouTube)
分類タスク
分類タスクは、「教師あり学習」タスクです。結果を絞り込む必要がある場合に、このタスクを使用します。通常は、予測の出力値として「True」または「False」のいずれかが生成されます。分類タスクは、二項対立式と多項対立式という2つの方法で実行されます。たとえば、分類タスクを使用して、受信したメールがスパムメールがどうかを判断することができます。
ここで、ブルーベリー、ライム、リンゴという3つの果物に属するデータポイントがあるとします。機械学習の分類技術を使用すれば、これらのデータポイントを分類することができます。これら3つの果物は、それぞれ色が異なっています(青、オレンジ色、黄色)。そのため、色に基づいてそれぞれの果物を明確に分類することができます。
分類法に対応しているアルゴリズム
- ロジスティック回帰
- KNN(k近傍法)
- ナイーブベース
- 判別分析
- SVM(サポートベクターマシン)
- 決定木(デジジョンツリー)
- ニューラルネットワーク
用途
- 画像の分類
- スパムメールの検出
- 不正行為の検出
モデルで使用する評価メトリクスの概要
モデルの概要ページで主要な評価メトリクスを使用して、さまざまなモデル設定を評価することができます。ここでは、各評価メトリクスの概念について説明します。
評価メトリクス
評価メトリクスとは、モデルの性能を判断するための統計値のことです。一般的な評価メトリクスとしては、精度メトリクスなどがあります。これ以外にも多くの評価メトリクスがありますが、どのメトリクスにもメリットとデメリットがあります。また、実行するタスクによって、どのメトリクスを使用するかが異なります。分類タスクを実行する場合、回帰タスクの場合とは異なるメトリクスを選択することになります。AutoMLで使用できる評価メトリクスの詳細なリストについては、https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobObjective.htmlを参照してください。
分類タスクの場合、デフォルトの評価メトリクスはAUC(Area Under the Curve)になります。AUCとは、ROC曲線(受信者操作特性曲線)の下にある面積のことです。AUCスコアの基本的な概念は、考えられるすべての分類しきい値において真陽性率(TPR)と偽陽性率(FPR)とのトレードオフを測定するということです。理想的なAUCスコアは「1.0」です。完全にランダムな予測を行うモデルの場合、AUCスコアは「0.5」になります。AUCは、相対的な比較の基準として使用することをお勧めします。たとえば、モデルXのAUCスコアがモデルYよりも高い場合、モデルXを導入すべきであると判断することができます。その他のメトリクス
回帰タスクの場合、デフォルトの評価メトリクスは平均二乗誤差(MSE)になります。MSEにより、モデルの予測値とグランドトゥルースの平均二乗差が測定されます。完全なモデルの場合、MSEの値は「0.0」になります。そのため、MSEの値が限りなくゼロに近くなるモデルを選択する必要があります。たとえば、モデルXのMSEがモデルYよりも低い場合、モデルXを導入すべきであると判断することができます。予測値とグランドトゥルース値の差を二乗した値がMSEであるため、大きな外れ値が存在する場合は、MSEの値も大きくなる可能性があります。そのため、入力データの前処理を慎重に行う必要があります。
トレーニングと検証の分割
通常、機械学習タスクを実行する場合は、データセットをトレーニング用と検証用という2つのデータセットに分割します。この分割の基本的な考え方は、モデルからいくつかのサンプルを取り出して公正な評価を行うということです。わかりやすい例として、学校での授業を考えてみます。同じ問題を出題して生徒たちの全体的な理解度を評価することを目的としている試験とは異なり、授業では、教師が生徒一人ひとりに対してそれぞれ違う質問をするのが一般的です。これと同じ理由で、モデルのトレーニングと検証で使用するデータサンプルについても、それぞれ異なっている必要があります。
この手法を「トレーニングと検証の分割」といいます。また、モデルのトレーニングで使用するデータサンプルのことをトレーニングデータといい、トレーニングの結果を評価するためのサンプルのことを検証セットといいます。この方法でデータを分割することにより、オーバーフィッティング(過学習)の問題を回避することができます。
オーバーフィッティング
オーバーフィッティングとは、「特定のデータセットに密接に(または正確に)対応する分析結果が得られるが、それが原因で別のデータには適合しなかったり、予測の精度が下がったりする」という状態のことを指します(https://en.wikipedia.org/wiki/Overfitting)。そのため、オーバーフィッティング状態のモデルの場合、未知のデータを一般化することが難しくなります。
以下の図を例として説明します。この図の場合、緑の線を引くことにより、赤い点と青い点を区別することができます。しかし、未知のデータセット(黄色い点や白い点など)が発生した場合、緑の線と同じように正確にそれぞれの点を区別することができなくなります。この図の場合は、黒い線の方が緑色の線よりもなめらかで、より「一般化」された線であるということができます。
緑の線はオーバーフィッティング状態のモデルを表し、黒い線は一般化されたモデルを表しています。緑の線はトレーニングデータに対してあまりにも最適化されているために、黒い線と比較して、未知のデータに対するエラー発生率が高くなります(https://en.wikipedia.org/wiki/Overfitting)。
トレーニングデータと検証データセットを比較することにより、オーバーフィッティングの状態を確認することができます。トレーニングエラーの発生率が非常に低いにもかかわらず(AUCの値が1.0に近い、またはMSEの値が0.0に近い状態)、検証エラーの発生率が高い場合は、オーバーフィッティングの状態になっています。つまり、モデルがトレーニングデータを効率的に学習している状態になっています。トレーニングエラーと検証エラーの発生率がほぼ同じというのが、理想的な状態です。この場合、モデルの調整と一般化が適切に実行されます。
モデルのタイプ
現在、DomoのAutoML機能では、LinearLearnerとXGBoostという2つの主要なモデルタイプがサポートされています。
LinearLearner:これは、ターゲット変数の線形モデルです。例えば売上高を予測する場合、売上列「yi」を入力列「xi」の関数として分解すると、「yi = w1x1 + w2x2 + ... + wkxk」になります。この場合の「wi」は、「yi」に対する「xi」の影響を表しています。この影響は、トレーニングデータから学習されます。このモデルは、回帰タスクと分類タスクの両方で使用することができます。分類タスクの場合、右側でロジスティックリンク関数が折り返され、予測データが確率に変換されます(yの値の範囲は0~1)。
XGBoost:これは、柔軟性の高いツリーベースのモデルです。このモデルも、回帰タスクと分類タスクの両方で使用することができます。このモデルには、Gradient Boosted Regression/Classification Treesが実装されています。このモデルで重要なことは、「xi」を「yi」にマッピングする複数の決定木を取得できるということです。この方法で複数の決定木を組み合わせて、最終的な決定を行うことができます。LinearLearnerモデルとXGBoostモデルの大きな違いは、XGBoostモデルの場合、「xi」と「yi」との間の非線形的な関係を学習できるという点です。詳細については、https://xgboost.readthedocs.io/en/latest/tutorials/model.htmlを参照してください。
ハイパーパラメーター
モデルの概要ページの重要な用途の1つは、異なるモデル設定(ハイパーパラメーター)の結果を確認するということです。ほぼすべての機械学習モデルに、1つ以上のハイパーパラメーターが用意されています。ハイパーパラメータとは、ユーザーが設定する必要があるモデルの設定(またはモデルの値)のことです。ハイパーパラメーターは、データから学習することはありません。DomoのAutoML機能を使用すれば、数百におよぶハイパーパラメーターの値を自動的に検証し、最適な性能を持つハイパーパラメーターを選択することができます。
最適なパラメーターの候補は、「ベストの候補」ペインに表示されます。このペインで、パラメーターの値、使用する評価メトリクス(AUCまたはMSE)、モデルタイプを確認することができます。
各モデルタイプには、それぞれ異なるハイパーパラメーターが設定されています。
XGBOOST(詳しくは、https://xgboost.readthedocs.io/en/latest/parameter.htmlを参照)
- Alpha:重みに対するL1正則化条件を指定します。このパラメーターを指定すると、モデルの学習動作がより保守的になります。また、重要ではない機能による影響が強制的に「ゼロ」になります。
- ツリーの列サンプル:各ツリーでサブサンプンリングする列の割合を指定します。各ツリーですべての列をサブサンプリングする場合は、値として「1.0」を設定します。
- Eta:オーバーフィッティングを防ぐ目的で更新時に使用されるステップサイズ収縮値を指定します。
- Gamma:ツリーの葉ノードをさらに分割するために必要な最小の損失低減値を指定します。
- Lambda:重みに対するL2正則化条件を指定します。この条件を指定すると、モデルの学習動作がより保守的になります。未知のデータに対してモデルが適切に一般化されるのが理想的な状態です。
- サブサンプル:トレーニングインスタンスのサブサンプリンブ比率を指定します。この比率を「0.5」に設定すると、XGBoostモデルによってトレーニングデータの半分がランダムにサンプリングされてから、ツリーが拡張されます。
LinearLearner
- L1正則化:L1正則化の強度を指定します。このパラメーターを指定すると、モデルの学習動作がより保守的になります。また、重要ではない機能による影響が強制的に「ゼロ」になります。
- 学習率:最適化アルゴリズムのステップサイズ値を指定します。この値により、最適なモデルパラメーターを検索する際の各ステップのサイズを制御します。小さすぎる値を指定すると、学習の速度が大幅に低下します。大きすぎる値を指定すると、最適化アルゴリズムで最適なパラメーターセットを検出できなくなる可能性があります。
- 損失関数:モデルのトレーニングで使用する関数を指定します。LogisticまたはMSEを指定することができます。
- ミニバッチサイズ:各バッチで収集するデータサンプルの数を指定します。多くの場合、バッチのサイズが大きくなると、傾きの推定値の精度が上がり、パフォーマンスも向上します。
- 荷重減衰:L2正則化条件を指定します。この条件を指定すると、モデルの学習動作がより保守的になります。未知のデータに対してモデルが適切に一般化されるのが理想的な状態です。
コメント
0件のコメント
サインインしてコメントを残してください。