AutoAI は、データを自動的に準備し、アルゴリズムまたは推定法を適用し、データとユース・ケースに最適なモデル・パイプラインを作成します。
以下のセクションでは、パイプラインの生成に関するこれらの技術的な詳細の一部について説明し、 AutoAI がどのように設計および実装されたかを説明する調査資料のリストを提供します。
- トレーニング用のデータの準備 (前処理)
- 自動モデル選択
- 分類モデルに使用されるアルゴリズム
- 回帰モデルに使用されるアルゴリズム
- モデル・タイプ別のメトリック
- データ変換
- 自動特徴量エンジニアリング
- ハイパーパラメーターの最適化
- AutoAI に関する FAQ
- 詳細はこちら
トレーニングのためのデータの準備 (データの前処理)
自動データ準備中または前処理中に、AutoAI はトレーニング・データを分析し、モデル選択およびパイプライン生成のために準備します。 ほとんどのデータ・セットには欠損値が含まれていますが、機械学習アルゴリズムは通常、欠損値を予期しません。 このルールの例外については、 3.4節のxgboostに記述されている。 AutoAI アルゴリズムは、さまざまな手法を使用してデータ・セット内でさまざまな欠損値の代入を実行し、データを機械学習に対応させます。 さらに、AutoAI は、カテゴリーや数値などのデータ型に基づいて特徴量を検出して分類します。 特徴量のカテゴリー化に基づくエンコードとスケーリングの戦略を検討します。
データの準備には、以下のステップが含まれます。
特徴量の列の分類
- 特微量の列のタイプを検出して、それらをカテゴリー・クラスまたは数値クラスとして分類する
- さまざまなタイプの欠損値を検出する (デフォルト、ユーザー提供、外れ値)
特徴量エンジニアリング
- ターゲット値が欠損している行を処理する (ドロップ (デフォルト) またはターゲットの補完)
- 固有値の列をドロップする (日時とタイム・スタンプを除く)
- 定数値の列をドロップする
前処理 (データの補完とエンコード)
- Sklearn 補完/エンコード/スケーリング・ストラテジーが適用されます (各特徴量クラスに個別に適用されます)。 例えば、製品で使用される欠損値の代入戦略の現在のデフォルトの方法は、カテゴリー変数の場合は
most frequent
、数値変数の場合はmean
です。 - トレーニング・セットでは見られなかったテスト・セットのラベルを処理する
- HPO フィーチャー: データ・セットおよびアルゴリズムに基づいて代入/エンコード/スケーリングの戦略を最適化します
自動モデル選択
AutoAI エクスペリメント・トレーニングの 2 番目のステージは、自動化されたモデル選択です。 自動モデル選択アルゴリズムは、上限戦略を使用してデータ割り振りを使用します。 この方法では、大規模なアルゴリズム・セットの間で、学習データの小さなサブセットを順次割り振ります。 目標は、すべてのデータに対してトレーニングを行ったときにほぼ最適な正確性を提供するアルゴリズムを選択するとともに、誤って割り振られたサンプルのコストを最小限に抑えることです。 システムは現在、すべての Scikit-learn アルゴリズム、および一般的な XGBoost アルゴリズムと LightGBM アルゴリズムをサポートしています。 大規模なデータ・セットでのモデルのトレーニングと評価にはコストがかかります。 小さなサブセットを開始し、増分的に大きなサブセットをデータ・セット上でうまく機能するモデルに割り振るアプローチにより、パフォーマンスを犠牲にすることなく時間を節約できます。パフォーマンスをさらに向上させるために、スナップ機械学習アルゴリズムがシステムに追加されました。
モデルのアルゴリズムの選択
アルゴリズムは、データとモデルの性質に一致するように選択されますが、モデルがそのオプション用に構成されている場合は、実行時の精度と期間のバランスを取ることもできます。 例えば、Snap ML アルゴリズムは、通常、Scikit-learn アルゴリズムよりもトレーニングの方が高速です。 多くの場合、実行時間と精度が短くなるようにトレーニングが最適化されている場合に、 AutoAI が自動的に選択するアルゴリズムが推奨されます。 トレーニング速度が優先される場合は、手動で選択できます。 詳細はSnap MLのドキュメントを参照してください。 SnapMLアルゴリズムが有用な場合については、この'SnapMLアルゴリズムの使用に関するブログ記事を参照のこと。
分類モデルに使用されるアルゴリズム
これらのアルゴリズムは、分類問題のモデル選択に使用されるデフォルトのアルゴリズムです。
アルゴリズム | 説明 |
---|---|
デシジョン・ツリー分類器 | 項目 (ブランチで表される) に関する観測値を、項目のターゲット値 (リーフで表される) に関する結論にマップします。 バイナリー・ラベルとマルチクラス・ラベルの両方、および連続型フィーチャーとカテゴリー型フィーチャーの両方をサポートします。 |
Extra Trees 分類器 | ランダム化されたデシジョン・ツリーに基づく平均化アルゴリズム。 |
勾配ブースト・ツリー分類器 | デシジョン・ツリーのアンサンブルの形式で分類予測モデルを生成します。 これは、バイナリー・ラベルと、連続型およびカテゴリー型の両方の特徴量をサポートします。 |
LGBM 分類器 | leaf-wise (水平) ツリー・ベースの学習アルゴリズムを使用する勾配ブースティング・フレームワーク。 |
ロジスティック回帰 | 2 つの結果のいずれかを決定する 1 つ以上の独立変数を持つデータ・セットを分析します。 二項ロジスティック回帰のみがサポートされます。 |
ランダム・フォレスト分類器 | 複数のデシジョン・ツリーを構成して、各エキストラ・ツリーのモードを示すラベルを生成します。 バイナリー・ラベルとマルチクラス・ラベルの両方、および連続型フィーチャーとカテゴリー型フィーチャーの両方をサポートします。 |
SnapDecisionTreeClassifier | このアルゴリズムは、 IBM Snap ML ライブラリーを使用してデシジョン・ツリー分類子を提供します。 |
SnapLogisticRegression | このアルゴリズムは、 IBM Snap ML ソルバーを使用して正規化されたロジスティック回帰を提供します。 |
SnapRandomForestClassifier | このアルゴリズムは、 IBM Snap ML ライブラリーを使用してランダム・フォレスト分類器を提供します。 |
SnapSVMClassifier | このアルゴリズムは、 IBM Snap ML ソルバーを使用して、正規化されたサポート・ベクトル・マシンを提供します。 |
XGBoost 分類器 | 分類の問題に使用できる正確で確実な手順。 XGBoost モデルは、Web 検索のランキングやエコロジーなど、さまざまな領域で使用されます。 |
SnapBoostingMachineClassifier | 二項分類タスクおよび多項分類タスク用のブースティング・マシン。二項デシジョン・ツリーと線型モデルをランダム・フーリエ・フィーチャーと混用します。 |
回帰モデルに使用されるアルゴリズム
これらのアルゴリズムは、回帰問題の自動モデル選択に使用されるデフォルトのアルゴリズムです。
アルゴリズム | 説明 |
---|---|
デシジョン・ツリー回帰 | 項目 (枝で表される) に関する観測を、項目のターゲット値 (葉で表される) に関する結論にマップします。 連続特徴量とカテゴリー特徴量の両方をサポートします。 |
Extra Trees 回帰 | ランダム化されたデシジョン・ツリーに基づく平均化アルゴリズム。 |
勾配ブースティング回帰 | デシジョン・ツリーのアンサンブルの形式で回帰予測モデルを生成します。 連続特徴量とカテゴリー特徴量の両方をサポートします。 |
LGBM 回帰 | ツリー・ベースの学習アルゴリズムを使用する勾配ブースティング・フレームワーク。 |
線形回帰 | スカラー従属変数 y と 1 つ以上の説明変数 (または独立変数) x の間の線形関係をモデル化します。 |
ランダム・フォレスト回帰 | 複数の決定木を構成して、各決定木の平均予測を生成します。 連続特徴量とカテゴリー特徴量の両方をサポートします。 |
リッジ | リッジ回帰は最小二乗回帰と似ていますが、係数のサイズにペナルティーを科します。 |
SnapBoostingMachineRegressor | このアルゴリズムは、デシジョン・ツリーのアンサンブルを構成するために使用できる IBM Snap ML ライブラリーを使用して、ブースティング・マシンを提供します。 |
SnapDecisionTreeRegressor | このアルゴリズムは、 IBM Snap ML ライブラリーを使用してデシジョン・ツリーを提供します。 |
SnapRandomForestRegressor | このアルゴリズムは、 IBM Snap ML ライブラリーを使用してランダム・フォレストを提供します。 |
XGBoost 回帰 | GBRT は、回帰の問題に使用できる、正確かつ効果的な既製のプロシージャーです。 グラジエント・ツリー・ブースティング・モデルは、Web 検索ランキングやエコロジーなど、さまざまな領域で使用されます。 |
モデル・タイプ別のメトリック
トレーニング中のパイプラインの正確度を測定するため、およびデータをスコアリングするために、以下のメトリックを使用できます。
二項分類メトリック
- 正解率 (パイプラインをランク付けする場合のデフォルト)
- Roc auc
- 平均適合率
- F
- 負の log loss
- 精度
- 再呼び出し
多クラス分類メトリック
マルチクラス・モデルのメトリックは、指定された測定に対するパイプラインのパフォーマンスのスコアを生成します。 例えば、 F1 スコア平均 精度 (行われた予測のうち、正しかった肯定的な予測の数) および 再現率 (可能なすべての肯定的な予測のうち、何個が正しく予測されたか) などです。
スコアを修飾することにより、スコアをさらに詳細化して、指定されたメトリックをグローバルに計算したり (マクロ)、ラベルごとに計算したり (マイクロ)、バランスのとれていないデータ・セットに重みを付けて、より多くの表現を持つクラスを優先したりすることができます。
- マイクロ 修飾子を持つメトリックは、真陽性、偽陰性、および偽陽性の総数をカウントすることにより、メトリックをグローバルに計算します。
- マクロ 修飾子を持つメトリックは、各ラベルのメトリックを計算し、それらの重み付けのない平均値を検出します。 すべてのラベルは等しく重み付けされます。
- 重み付き 修飾子を持つメトリックは、各ラベルのメトリックを計算し、各クラスのコントリビューションによって重み付けされたメトリックの平均を検出します。 例えば、アプリケーション、桃、および梅のカテゴリーを含むデータ・セットでは、リンゴのインスタンスが多数ある場合、重み付けされたメトリックは、リンゴを正しく予測するためにより重要性が高くなります。 これにより、ラベルの不均衡を考慮するように マクロ が変更されます。 バランスのとれていないデータ・セットの場合は、 F1-weighted などの重み付けメトリックを使用します。
以下は、多クラス分類メトリックを示しています。
- 正解率 (パイプラインをランク付けする場合のデフォルト)
- F1
- F1 ミクロ
- F1 マクロ
- F1 加重
- 精度
- 適合率ミクロ
- 適合率マクロ
- 加重適合率
- 再呼び出し
- 再現率ミクロ
- 再現率マクロ
- 加重再現率
回帰メトリック
- 負の平均 2 乗平方根誤差 (パイプラインをランク付けする場合のデフォルト)
- 負の平均絶対誤差
- 負の平均 2 乗平方根対数誤差
- 説明される変動
- 負の平均 2 乗誤差
- 負の平均 2 乗対数誤差
- 負の中央値絶対誤差
- R2
自動特徴量エンジニアリング
AutoAI プロセスの第 3 段階は、自動化された特徴量エンジニアリングです。 自動フィーチャー・エンジニアリング・アルゴリズムは、研究論文「Cognito:Automated Feature Engineering for Supervised Learning」と「Feature Engineering for Predictive Modeling by using Reinforcement Learning」という論文で説明されている。 システムは、さまざまな特徴量構築の選択肢を階層的かつ包括的な方法で探索しながら、探索的活用戦略によってモデルの精度を段階的に最大化します。 この方法は、特徴量エンジニアリングの「試行錯誤」戦略に触発されたものですが、人間の代わりに自律型エージェントによって実施されます。
特徴量重要度に使用されるメトリック
ディシジョン・ツリー、エクストラ・ツリー、ランダム・フォレスト、XGBoost、グラジエント・ブースト、および LGBM などのツリー・ベースの分類および回帰アルゴリズムの場合、特徴量の重要度スコアは、分割点の選択に使用される基準の減少に基づく固有の特徴量スコアであり、これらのアルゴリズムがトレーニング・データに基づいてトレーニングされるときに計算されます。
Logistic Regression、LInear Regression、SnapSVM,、Ridgeなどの非木材アルゴリズムでは、特徴インポート量は、非木材アルゴリズムと同じ訓練データで訓練されたランダムフォレスト・アルゴリズムの特徴インポート量である。
どのアルゴリズムでも、すべての特徴量の重要度は 0 から 1 までの範囲にあり、最大特徴量重要度に対する比率として正規化されています。
データ変換
特徴量エンジニアリングでは、 AutoAI は、強化学習を使用してモデルの正確度を段階的に最大化しながら、構造化された包括的でない方法でさまざまな特徴量構築の選択肢を探索する斬新なアプローチを使用します。 これにより、モデル選択ステップのアルゴリズム (またはアルゴリズム) に最もよく一致するデータの変換のシーケンスが最適化されます。 この表には、使用されるいくつかの変換と、それらが役立ついくつかの既知の条件がリストされています。 変換は複雑で解釈が難しいため、これは変換が役立つシナリオの完全なリストではありません。 最後に、リストされているシナリオは、変換の選択方法の説明ではありません。 どの変換を適用するかは、パフォーマンスを重視した方法で、試行錯誤によって選択します。
名前 | コード | 関数 |
---|---|---|
主成分分析 | pca | データの次元を削減し、より適切な座標系で再調整します。 線形相関データの「次元の呪い」に取り組むのに役立ちます。 冗長性を除去し、データ内の重要なシグナルを分離します。 |
標準スケーラー | stdscaler | データ機能を標準範囲にスケーリングします。 これは、特定の学習アルゴリズムおよびその他の変換 (PCA など) の有効性と効率性を向上させるのに役立ちます。 |
対数 | ログ | 特徴量の右歪度を減らし、より対称にします。 これにより、特徴量の対称性が向上し、アルゴリズムがデータをより適切に理解できるようになります。 平均と分散に基づくスケーリングであっても、対称データに対してより意味があるものになります。 さらに、対数を使用して最も適切に記述された特徴量と対象との間の特定の物理関係を取り込むことができます。 |
立方根 | cbrt | 対数のようにデータの右歪度を減らしますが、その効果は対数よりも弱いです。場合によっては、この方が適していることがあります。また、ログが適用されない負の値またはゼロの値にも適用されます。立方根は、体積を長さに縮小するなど、単位を変更することもできます。 |
平方根 | sqrt | データの軽い右歪度を減らします。 これは、対数や立方根より弱いです。 これは、ゼロを処理し、領域などの空間次元を長さに削減します。 |
2 乗 | 2 乗 | 左歪度を中程度に減らし、そのような分布をより対称にします。 また、超線形成長などの特定の現象を把握するのにも役立ちます。 |
プロダクト | 製品 | 2 つの特徴量の積は、非線形関係を明らかにして、個々の値だけでなくターゲット値の予測を向上させることができます。 例えば、販売されるアイテムの数に対するアイテム・コストは、ビジネスの規模を示す指標としては、それだけではありません。 |
数値 XOR | nxor | この変換は、ビット単位 XOR に似ているが一般的な数値コンテキストで、変数間の「排他的論理和」タイプの関係をキャプチャーするのに役立ちます。 |
合計 | 合計 | 場合によっては、2 つの特徴量の和のほうが、単独の特徴量より予測ターゲットとの相関性が高いことがあります。 例えば、さまざまなソースからのローンを合計すると、クレジット申請者の総負債についてより良い考えが得られます。 |
除算 | 除算 | 除算は、人口に対する総 GDP (1 人当たり GDP) などの数量を表すために使用される基本的なオペランドであり、国の平均寿命は、GDP 単独または人口単独のいずれよりも優れています。 |
最大 | max | 2 つの値のうち大きいほうを取得します。 |
丸め方式 | round | この変換は、不正確な観測の結果として生じる可能性があるオーバーフィッティングを減らすために、摂動またはノイズの追加と見なすことができます。 |
絶対値 | abs | 観測の大きさのみを考慮し、符号は考慮しません。 燃料や実際の移動に費やした時間を考慮しながら、物理的な変位など、観測の方向や符号はその大きさほど重要ではないこともあるのです。 |
双曲線タンジェント | tanh | 非線形活性化関数は、ニューラル・ネットワーク活性化関数と同様に、予測精度を向上させることができます。 |
サイン | sin | データの方向を変更して、単振動などの周期的な傾向を検出できます。 |
Cosine | cos | データの方向を変更して、単振動などの周期的な傾向を検出できます。 |
タンジェント | tan | 三角法のタンジェント変換は、通常、他の変換と組み合わせて使用すると有用です。 |
特徴量集積 | フィーチャー集積 | 距離または親和性に基づいて、さまざまな機能をグループにクラスター化することで、学習アルゴリズムの分類が容易になります。 |
Sigmoid | sigmoid | 非線形活性化関数は、ニューラル・ネットワーク活性化関数と同様に、予測精度を向上させることができます。 |
Isolation Forest | isoforestanomaly | Isolation Forest を使用して各サンプルの異常スコアを含む新規特徴量を作成することにより、クラスタリングを実行します。 |
ワードからベクトルへ | word2vec | テキスト分析に使用されるこのアルゴリズムは、他のすべての変換の前に適用されます。 入力としてテキストのコーパスを取り、一連のベクトルを出力します。 テキストを数値表現に変換することで、類似した単語を検出して比較することができます。 word2vec は、十分なデータを使用してトレーニングされると、単語の意味や他の単語との関係について正確な予測を行うことができます。 予測を使用して、センチメント分析アプリケーションでテキストを分析し、意味を予測することができます。 |
ハイパーパラメーターの最適化
AutoAI の最終ステージはハイパーパラメーター最適化です。 AutoAI アプローチは、前のフェーズからのパフォーマンスが最も高いパイプラインのパラメーターを最適化します。 これは、RBFOpt と呼ばれるブラック・ボックス・ハイパーパラメーター・オプティマイザーを使用して、これらのパイプラインのパラメーター範囲を探索することによって行われます。 RBFOptは、研究論文RBFOpt: an open-source library for black-box optimization with costly function evaluationsで説明されている。 RBFOpt は、アルゴリズムのトレーニングやスコアリングのように、コストのかかる評価を伴う最適化のために構築されているため、 AutoAI エクスペリメントに適しています。 RBFOpt の手法は、各反復の評価時間が長いにもかかわらず、未知の目的関数の代理モデルを構築して反復的に改良し、素早く収束させます。
AutoAI の FAQ
以下は、AutoAI 実験の作成に関する一般的な質問です。
何個のパイプラインが作成されますか?
以下の 2 つの AutoAI パラメーターによって、パイプラインの数が決まります。
max_num_daub_ensembles: パイプライン構成で使用する、選択されたアルゴリズムの最大数 (DAUB モデル選択によってランク付けされた上位 K)、または推定量タイプ (例えば、LGBMClassifierEstimator、XGBoostClassifierEstimator、または LogisticRegressionEstimator)。 デフォルトは 1 です。この場合、モデル選択アルゴリズム・タイプでランク付けされた最上位のみが使用されます。
num_folds: フル・データ・セットに加えて、パイプラインをトレーニングするフル・データ・セットのサブセットの数。 デフォルトは 1 で、全データ・セットがトレーニングされます。
AutoAI は、フォールド・タイプおよびアルゴリズム・タイプごとに、以下に対応する、改良された 4 つのパイプラインを作成します。
- このアルゴリズム・タイプに対してデフォルトの sklearn パラメーターが指定されたパイプライン
- HPO を使用して最適化されたアルゴリズムを使用するパイプライン
- 最適化された特徴量エンジニアリングを使用するパイプライン
- HPO を使用して最適化された特徴量エンジニアリングと最適化されたアルゴリズムを備えたパイプライン
生成されるパイプラインの総数は以下のとおりです。
TotalPipelines= max_num_daub_ensembles * 4, if num_folds = 1:
TotalPipelines= (num_folds+1) * max_num_daub_ensembles * 4, if num_folds > 1 :
モデルに適用されるハイパー・パラメーターの最適化は何ですか?
AutoAIは、ハイパーパラメータ最適化(HPO)で必要とされる、コストのかかる機械学習モデルの訓練とスコアリング評価のために調整された、RBfOpt,と呼ばれるモデルベースの無誘導体グローバル検索アルゴリズムを使用しています。 未知の目的関数にガウス・モデルを適合させるベイズ最適化とは対照的に、RBfOpt は放射基底関数モードに適合しており、ユーザーが直面している機械学習の問題の目的関数を最大化するハイパー・パラメーター構成を短時間で発見できます。 この時間短縮は、コストのかかるトレーニングおよびスコアリング機械学習モデルの評価の数を最小化し、偏微分の計算を不要にすることで実現されます。
AutoAI は、フォールドおよびアルゴリズム・タイプごとに、HPO を使用してアルゴリズム・タイプに合わせた最適化を行う 2 つのパイプラインを作成します。
- 1 つ目は、プリプロセスされた (上記の入力/エンコード/スケーリングされた) データ・セット (パイプライン 2) に基づいて、このアルゴリズム・タイプを最適化することに基づいています。
- 2 つ目は、前処理された (補完/エンコード/スケーリングされた) データ・セットの最適化された特徴量エンジニアリングに基づくアルゴリズム・タイプの最適化をベースにしています。
AutoAI によって生成されるすべてのパイプラインのアルゴリズムのパラメーター値は、状況メッセージにパブリッシュされます。
RbfOpt アルゴリズムについて詳しくは、以下を参照してください。
特徴量有意性はどのように計算されますか?
分類実験または回帰実験を構成するときに、オプションで、モデルに影響を与えずに特徴量を処理する方法を指定することができます。 選択項目は、常に特徴量を削除するか、モデルの品質を向上させるときにそれらを削除するか、または削除しないかです。 特徴量の有意性は次のように計算されます。
- 特徴量の重要度は、データ・サンプルに基づいて計算されます。
- 一部の見積もりツールには、フィーチャーの重要度を返す機能が組み込まれていません。 このような場合は、 RandomForest などの推定量を使用して影響を測定します。
- 特徴量の数は重要です。特徴量の重要度の値が 0.0000000001 であるが、重要度の低い特徴量が多数ある (例えば、200 を超える) 場合、それらを残すか削除すると、実験結果に何らかの影響を与える可能性があります。
自動モードでは、重要度の低い特徴量を削除しても実験結果に影響がないことを検証するために、以下のステップが使用されます。
- 計算された 0 の重要度を持つすべての特徴量を削除すると、モデルの精度に何らかの影響が及ぶ場合、主成分分析アルゴリズムがそれらの特徴量に適用され、それらの重要度の低い特徴量の 90% の分散を説明する上位 K の成分が選択されます。
- 次に、変換されたコンポーネントが元のフィーチャーの代わりに新しいフィーチャーとして使用され、モデルが再度評価されます。
- それでも正確度が低下する場合は、元のすべてのフィーチャーがテストに追加されます。
調査参照
このリストには、自動化されたモデル構築プロセスで信頼性と透明性を促進するために AutoAI がどのように設計および実装されたかについて詳しく説明している基礎研究記事がいくつか含まれています。
次のステップ
親トピック: AutoAI の概要