Skip to content

オートML

データ内の目的変数列や説明変数列を指定して、機械学習モデルを構築できます。
オートMLは機械学習におけるデータ前処理、学習アルゴリズムの選択、パラメータチューニングを自動で行います。
また、構築したモデルが何を重視したかなどの解釈を行うための情報も提供します。


入出力定義

定義内容補足
入力データ
左出力機械学習モデル
中出力データモデルの精度指標を出力
右出力データ説明変数の重要度などの指標を出力
ボニートくん精度検証結果
ボニートくん機械が重視したデータ
ボニートくん学習プロセス
ボニートくん精度改善の余地
ボニートくんモデル詳細情報

サンプル

退職予測モデルを構築


ボニートくん

精度検証結果

ボニートくんで「精度検証結果」を確認

機械学習モデル構築後、まず最初に確認すべきは、構築したモデルが良い性能を期待できるか、だと考えます。
処理設定のオプション「最も重視する指標」で設定した指標のゲージが最も大きく表示され、その評価はトップのテキストでも表現されます。

精度指標

精度検証結果

ゲージは3色に分かれ、針がどこを指しているかで評価を瞬時に把握できます。

評価
Great!
まぁまぁ
低い
閾値の定義

緑、黄、赤を分ける閾値はデータによって異なります。大まかに記載すると下記の通りです。

  1. 赤と黄の境目: データを無視してランダムに予測した場合の予測精度
  2. 黄と緑の境目: MAXの精度と上記1との中間の値

つまり「低い」評価(赤)を受けたモデルは、わざわざnehanを使って構築したのにも関わらず、適当に予測した場合より劣っているという屈辱的な評価である点に注意してください。 1の詳細の定義については下記の通りです。

カテゴリ分類モード

予測値を全て同じカテゴリとした場合、どのくらい当たるか?を算出しています。
例えばデータの目的変数に、“生存”が90行、“死亡”が10行の場合、適当に全部生存と予測すると90%正解になります。
ゆえに、90%を下回る精度は「低い」、95%以上が「高い」と評価されます。

数値予測モード

予測値を全て目的変数の平均値とした場合、どのくらいの誤差がでるか?を算出しています。
例えば上記の場合、平均で10%誤差だとし、それを超えると「何も考えず平均値を予測値としたほうがマシ」という評価になります。
ゆえに、10%誤差を上回る精度は「低い」、5%誤差を下回れば「高い」と評価されます。

カテゴリ分類の精度指標

予測結果と実際の値の混合行列を例に上げ、各指標の定義を記載します。

目的変数“1”と予測“0”と予測
実際は”1”
実際は”0”
正解率(Accuracy)

予測がどれだけ正解したか?
(① + ④) / (① + ② + ③ + ④)

再現率(Recall)

実際に正であったもののうち、どれだけ正と予測できたか?
① / (① + ②)

適合率(Precision)

正と予測したものが、どれだけ正しかったか?
① / (① + ③)

F値(F1)

RecallとPrecisionを均等に評価した指標
2 * Recall * Precision / (Recall + Precision)

数値予測の精度指標
平均絶対相対誤差(MAPE)

予測が実測に対して何%くらいはずれるか?
各行ごとに|予測値 - 実測値|/実測値を算出し平均した値です。

平均絶対誤差(MAE)

予測が実測に対してどのくらいはずれるか?
各行ごとに|予測値 - 実測値|を算出し平均した値です。

二乗平均平方根誤差(RMSE)

各行ごとに(予測値-実測値)^2を算出して平均をとり、その平均値に対して平方根を取った値です。
この指標は誤差が大きい行があればあるほど、値が大きくなり、誤差を厳しく評価できる指標です。

過学習リスク

精度検証結果

過学習とは、予測モデルがデータの細かい規則性を学習しすぎた状態のことを言います。
過学習が起きると、教師あり学習ノードで算出した精度が別のデータ(未知のデータ)で再現しない恐れがあります。
このリスクを10段階で評価したものを過学習リスクと呼び、大きくなればなるほど過学習している可能性が高いと言えます。

算出方法

訓練データで構築した予測モデルにて、訓練データ、検証データをそれぞれ予測し、精度の乖離度合いにてリスクを算出します。
乖離が少なければ、過学習リスクは低くなり、逆に乖離が激しいとリスクが高まります。

原因と対策

リスクが高い原因は

  • 訓練データが少なすぎる
  • 最適な機械学習パラメータなどを探索しすぎている

等が挙げられます。
これらは「処理モード」の”カスタム”設定にてコントロールができ、調整することでリスクが下がる可能性があります。

混合行列

精度検証結果

予測の正解状況をより細かく観察できます。
予測を外したケースだと例えば、“x”と予測したけど(横)実際は”y”(縦)のデータの個数 or 何%あるか、が確認できます。
どこで予測が外れているのか、を認識することで、精度改善のヒントを得られる可能性があります。

数値予測の場合

目的変数(実測値)の最小値から最大値までの範囲をデータの数が等しくなるように 5 等分し、各範囲ごとに予測と実測のデータ数を比較できるようにしています。

精度分解

精度検証結果

分類であればカテゴリごと、数値予測であれば範囲ごとに、指標を比較できます。
例えば”生存”と”死亡”の 2 値分類を予測する場合、“生存”と予測できないのか?それとも”死亡”と予測できていないのか?を把握することが可能です。

学習曲線

精度検証結果

ブースティングタイプの学習アルゴリズム「XGBoost」「LightGBM」のみ表示される補助情報です。
上記の「過学習リスク」と近しい情報を得ることができ「訓練データの精度」と「検証データの精度」が右に行くとどれだけ乖離するかが注目点です。
乖離が激しいと過学習のリスクが高いと言えます。

機械が重視したデータ

ボニートくんで「機械が重視したデータ」を確認

モデル構築にあたり、重要な列およびその要素が把握できます。 モデル内部の把握はもちろん、要因分析の視点でも活用できる機能です。

影響度比較

機械が重視したデータ

モデル構築にあたり、どの列を重視されたかが把握できます。
上にある列ほど、重要であることを意味します。
なおオート ML の場合、新規生成された列が交じる場合があります。(列 1+列 2、といった演算により生まれた新規列)

列ごとに詳細を観察

下部のフィルタボックスで列名を指定することで、その列内のどの要素が重視されたかが確認できます。
文字列の場合はカテゴリごとに、数値列の場合は数値範囲ごとに、どこに影響したかを表現します。

文字列の例

下記の「性別」列を題材にします。カテゴリ分類モードでモデルを構築しています。

機械が重視したデータ
  • “1”への分類根拠: “female”
  • “0”への分類根拠: “male”

と読み取ることができ、

  • 「性別」列の値が”female”であれば”1”に
  • “male”であれば”0”に分類されやすい

と解釈できます。

数値列の例

下記の「年齢」列を題材にします。カテゴリ分類モードでモデルを構築しています。

機械が重視したデータ

まず、範囲分解のグラフを見ると

  • 年齢が低いほど青、つまり”1”への分類傾向が強い
  • 年齢が高いほど赤、つまり”0”への分類傾向が強い

と読み取れます。また、数値範囲詳細に着目すると

  • 14 歳以下は最も”1”へ分類されやすい範囲
  • 33~39 際は最も”0”へ分類されやすい範囲

と解釈することができます。

学習プロセス

ボニートくんで「学習プロセス」を確認

入力データがどう前処理され、アルゴリズムを適用し、精度検証をおこなかったか、といったプロセスを把握できます。

全体プロセス

学習プロセス

入力データからモデル、および精度検証のプロセスを図示しており、下記が理解できます。

  • 最終的に採用された学習アルゴリズム
  • 訓練データと学習データの比率(ツールチップで表示)

なお、アンサンブルモデル構築時には下記のようにどのアルゴリズムがアンサンブルされたかも把握できます。

学習プロセス

前処理後データ

学習プロセス

前処理された後のデータの先頭 10 行を確認できます。
特に、前処理により自動生成された列がある場合、このデータに含まれます。

前処理プロセス

学習プロセス

上記「前処理後データ」内の説明変数がどう前処理されたのか、を把握できます。
フィルタボックスで列名を指定することで、プロセスが図示されます。
なお、ツールチップ内にて詳細な情報を得られます。

機械学習パラメータ

学習プロセス

採用された学習アルゴリズムの内部のパラメータを表示しています。

精度改善の余地

ボニートくんで「精度改善の余地」を確認

別のボニートくん「機械が重視したデータ」と見た目は似ていますが、中身は全く違います。
予測と実測を比較し、どの列が原因で予測が外れてしまっているのかを確認できます。

原因比較

精度改善の余地

どの列のせいで精度が下がっているのか、を把握できます。
上にある列ほど重要、つまり精度悪化の要因になっている列であることを意味します。

列ごとに詳細を観察

下部のフィルタボックスで列名を指定することで、その列内のどの要素が足を引っ張っているかがわかります。
文字列の場合はカテゴリごとに、数値列の場合は数値範囲ごとに、精度プラス or マイナスに影響したかを表現します。

文字列型の例

下記の「性別」列を題材にします。

精度改善の余地

列の値が”female”の場合、予測が外れている(精度を下げている要因)と解釈できます。
また、混合行列で詳細を確認すると、“0”と予測したが実際は”1”だった、つまり予測が外れているデータ数が 36%と非常に多いことがわかります。
つまり、列の値が”female”の場合、“1”と予測するためのデータが不足していると言え、説明変数の構成を検討する材料となります。

数値型の例

下記の「年齢」列を題材にします。

精度改善の余地

列の範囲”16 歳〜21 歳”が最も予測が外れている(精度を下げている要因)と解釈できます。 また、混合行列で詳細を確認すると、“0”と予測したが実際は”1”だったつまり予測が外れているデータ数が 34%と非常に多いことがわかります。
つまり、列の値が”16 歳〜21 歳”の場合、“1”と予測する根拠となるデータが不足していると言え、説明変数の構成を検討する材料となります。

モデル詳細情報

ボニートくんで「モデル詳細情報」を確認

教師あり学習ノードはベストの精度を誇る学習モデルを出力しますが、内部的には精度を最大化するためにいくつかのモデルを構築し、精度を比較しています。
この過程で構築されたモデルの情報を一覧化しているのがこの機能です。
なお、アンサンブル ML では「構築モデル一覧」内のモデル ID を指定することで、複数アルゴリズムを組み合わせたモデルを構築可能です。

構築モデル一覧

モデル詳細情報

内部で構築されたモデルの一覧を表示しており、上から精度指標の高いモデルを並べています。
また、一覧下部でモデル ID を指定することで各モデルで行われた前処理、および設定された機械学習パラメータを確認できます。


処理内容補足

実施する前処理

精度が最大になるように、自動的に処理を選択します。

  • 欠損値処理(欠損値があれば)
  • 数値列の変換(Boxcox変換など)
  • 文字列の変換(One-hot encoding など)
  • 数値の外れ値処理
  • 特徴量生成(列同士の四則演算による新規列生成)
  • 特徴量選択

学習に用いるアルゴリズム

精度が最大になるように、自動的に処理を選択します。

  • ランダムフォレスト
  • XGBoost
  • LightGBM
  • CatBoost
  • SVM
  • 上記の 2 つ以上をブレンディングしたアンサンブルモデル(速度重視モードを除く)

探索

全ての組み合わせについてモデルを構築するのではなく、ベイズ最適化を使用して最適な組み合わせを探索します。
このため、実行時間を大幅に短縮しつつ高い精度を期待できます。
探索回数の上限は処理モードで制御できます。


処理設定補足

処理モード

速度重視

実行時間を優先するモードです。精度重視モードよりも精度が劣る場合があります。

パラメータ
学習に使うデータの行数比率30%
特徴量選択の上限探索回数3
学習アルゴリズムの上限探索回数3
アンサンブルモデルを構築する

精度重視

時間をかけても精度を向上させたい場合に適したモードです。ただし、探索回数が増えるため、過学習のリスクが高まることがあります。

パラメータ
学習に使うデータの行数比率70%
特徴量選択の上限探索回数10
学習アルゴリズムの上限探索回数10
アンサンブルモデルを構築しない

カスタム

パラメータ
学習に使うデータの行数比率任意設定可能
特徴量選択の上限探索回数任意設定可能
学習アルゴリズムの上限探索回数任意設定可能
アンサンブルモデルを構築しない

最大化する指標(オプション)

カテゴリ分類の場合、以下から最大化する精度を選択できます。

  • 正解率[Accuracy]
  • F 値[F1]
  • 再現率[Recall]
  • 適合率[Precision]

数値予測の場合は、以下から選択できます。

  • 平均絶対相対誤差[MAPE]
  • 平均絶対誤差[MAE]
  • 二乗平均平方根誤差[RMSE]

出力内容補足

モデルの精度指標(中出力)

モデルの精度を簡単に確認できるように、以下の情報を出力します。

項目説明
採用モデル構築モデルに採用された学習アルゴリズムを表示
精度指標値処理設定「最大化する指標」にて選択した指標の値を表示
精度評価精度指標値に基準にした評価を表示
過学習リスク(10 段階)構築モデルが過学習している可能性を 10 段階で表示

モデル補足情報(右出力)

モデルの構築に使用された各説明変数の重要度を示します。
数値が大きいほど、機械が重視した説明変数であることを意味します。


パフォーマンス補足

実行時間の参考情報を以下に示します。(レギュラープラン相当の環境での検証)

処理モード=速度重視

予測モード説明変数の数行数実行時間
カテゴリ分類8約 2,000 行30 秒
数値予測10約 5,000 行50 秒
カテゴリ分類20約 41,000 行5 分 30 秒
カテゴリ分類30約 120,000 行5 分 10 秒
数値予測速25約 840,000 行31 分 40 秒

処理モード=精度重視

予測モード説明変数の数行数実行時間
カテゴリ分類8約 2,000 行6 分 50 秒
数値予測10約 5,000 行6 分 30 秒
カテゴリ分類20約 41,000 行8 分 30 秒
カテゴリ分類30約 120,000 行33 分 40 秒
数値予測速25約 840,000 行メモリエラー