9.1 自動化された機械学習について

自動化された機械学習(AutoML)は、機械学習モデルの構築に使用できるデータ分析およびモデリングに関する組込みのデータ・サイエンスの専門知識を提供します。

指定したデータセットと予測タスクに関するモデリングの問題には、データのクレンジングと前処理、アルゴリズムの選択およびモデルのチューニングといった一連のタスクが含まれます。これらの各ステップには、プロセスを効率的な最終モデルへと導くためのデータ・サイエンスの専門知識が必要です。自動化された機械学習(AutoML)では、組込みのデータ・サイエンスの専門知識によってこのプロセスが自動化されます。

OML4Pyには次のAutoML機能があります。

  • サポートされている機械学習アルゴリズムから適切なアルゴリズムを選択する自動化されたアルゴリズム選択
  • 元の特徴セットのサイズを縮小してモデルのトレーニングとチューニングを高速化し、モデルの品質も向上させる、自動化された特徴選択
  • モデル・ハイパーパラメータの自動化されたチューニング。ユーザーが選択した複数のメトリックの中から、スコア・メトリックが最も高いモデルを選択します

AutoMLでは、こうした一般的なモデリング・タスクが自動的に実行されるため、労力を減らしながら、成果を高めることができます。また、データベース内アルゴリズムのパラレル処理およびスケーラビリティを利用して、ランタイムを最小化し、高品質の結果を生成します。

ノート:

機械学習クラスのfitメソッドと同様に、AutoML関数reduceselectおよびtuneには、モデルの構築中に繰返し可能なデータ・サンプリングとデータ・シャッフルを実現するために使用できるcase_idパラメータが用意されています。

AutoMLの機能は、Oracle Autonomous DatabaseのOML Notebooksとともに、コーディング不要のユーザー・インタフェースでも使用できます。詳細は、Oracle Machine Learning AutoMLユーザー・インタフェース を参照してください。

自動化された機械学習のクラスとアルゴリズム

自動化された機械学習のクラスは次のとおりです。

クラス 説明
oml.automl.AlgorithmSelection

データセットおよびタスクの特性のみを使用して、サポートされているOracle Machine Learningアルゴリズムのセットから最適なアルゴリズムを自動的に選択します。

分類関数と回帰関数をサポートします。

oml.automl.FeatureSelection

メタ学習を使用して、トレーニング・データセットおよびOracle Machine Learningアルゴリズムに基づいて最も関連性の高い特徴サブセットをすばやく識別します。

分類関数と回帰関数をサポートします。

oml.automl.ModelTuning

勾配法に基づく、並列度の高い非同期のハイパーパラメータ最適化アルゴリズムを使用して、アルゴリズムのハイパーパラメータをチューニングします。

分類関数と回帰関数をサポートします。

oml.automl.ModelSelection

最適なOracle Machine Learningアルゴリズムを選択し、そのアルゴリズムをチューニングします。

分類関数と回帰関数をサポートします。

AutoMLでサポートされているOracle Machine Learningアルゴリズムは次のとおりです。

表9-1 AutoMLでサポートされている機械学習アルゴリズム

アルゴリズムの略称 アルゴリズム名
dt デシジョン・ツリー
glm 一般化線形モデル
glm_ridge リッジ回帰を使用する一般化線形モデル
nb Naive Bayes
nn ニューラル・ネットワーク
rf ランダム・フォレスト
svm_gaussian ガウス・カーネルを使用するサポート・ベクター・マシン
svm_linear 線形カーネルを使用するサポート・ベクター・マシン

分類メトリックと回帰メトリック

次に示す各表は、AutoMLでサポートされているスコアリング・メトリックのリストです。

表9-2 2項および多クラス分類のメトリック

メトリック 説明、対応するscikit-learnメトリック、および計算式
accuracy

ターゲットの正分類率を計算します。

sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)

計算式: (tp + tn)/samples

f1_macro

精度とリコールの加重平均であるfスコアまたはfメジャーを計算します。f1_macroは、クラスごとのスコアの非加重平均を取ります。

sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average=’macro’, sample_weight=None)

計算式: 2 * (precision * recall) / (precision + recall)

f1_micro

真陽性、偽陽性および偽陰性がグローバルにカウントされるマイクロ平均を使用して、fスコアまたはfメジャーを計算します。

sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average=’micro’, sample_weight=None)

計算式: 2 * (precision * recall) / (precision + recall)

f1_weighted

サポート(クラスごとの真のサンプルの割合)に基づくクラスごとのスコアの加重平均を使用して、fスコアまたはfメジャーを計算します。不均衡なクラスを考慮します。

sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average=’weighted’, sample_weight=None)

計算式: 2 * (precision * recall) / (precision + recall)

precision_macro

分類子がサンプルを誤ってラベル付けしない能力を計算します。precision_macroは、クラスごとのスコアの非加重平均を取ります。

sklearn.metrics.precision_score(y_true, y_pred, labels=None, pos_label=1, average=’macro’, sample_weight=None)

計算式: tp / (tp + fp)

precision_micro

分類子がサンプルを誤ってラベル付けしない能力を計算します。真陽性、偽陽性および偽陰性がグローバルにカウントされるマイクロ平均を使用します。

sklearn.metrics.precision_score(y_true, y_pred, labels=None, pos_label=1, average=’micro’, sample_weight=None)

計算式: tp / (tp + fp)

precision_weighted

分類子がサンプルを誤ってラベル付けしない能力を計算します。サポート(クラスごとの真のサンプルの割合)に基づくクラスごとのスコアの加重平均を使用します。不均衡なクラスを考慮します。

sklearn.metrics.precision_score(y_true, y_pred, labels=None, pos_label=1, average=’weighted’, sample_weight=None)

計算式: tp / (tp + fp)

recall_macro

分類子が各クラスを正しくラベル付けする能力を計算します。recall_macroは、クラスごとのスコアの非加重平均を取ります。

sklearn.metrics.recall_score(y_true, y_pred, labels=None, pos_label=1, average=’macro’, sample_weight=None)

計算式: tp / (tp + fn)

recall_micro

真陽性、偽陽性および偽陰性がグローバルにカウントされるマイクロ平均を使用して、分類子が各クラスを正しくラベル付けする能力を計算します。

sklearn.metrics.recall_score(y_true, y_pred, labels=None, pos_label=1, average=’micro’, sample_weight=None)

計算式: tp / (tp + fn)

recall_weighted

サポート(クラスごとの真のサンプルの割合)に基づくクラスごとのスコアの加重平均を使用して、分類子が各クラスを正しくラベル付けする能力を計算します。不均衡なクラスを考慮します。

sklearn.metrics.recall_score(y_true, y_pred, labels=None, pos_label=1, average=’weighted’, sample_weight=None)

計算式: tp / (tp + fn)

関連項目: scikit-learnの分類メトリック

表9-3 2項分類のメトリックのみ

メトリック 説明、対応するscikit-learnメトリック、および計算式
f1

精度とリコールの加重平均であるfスコアまたはfメジャーを計算します。このメトリックが予期したとおりに機能するには、デフォルトで正のターゲットを1としてエンコードする必要があります。

sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average=’binary’, sample_weight=None)

計算式: 2 * (precision * recall) / (precision + recall)

precision

分類子が、実際には負(0)であるサンプルを正(1)としてラベル付けしない能力を計算します。

sklearn.metrics.precision_score(y_true, y_pred, labels=None, pos_label=1, average=’binary’, sample_weight=None)

計算式: tp / (tp + fp)

recall

分類子がすべての正(1)のサンプルを正しくラベル付けする能力を計算します。

sklearn.metrics.recall_score(y_true, y_pred, labels=None, pos_label=1, average=’binary’, sample_weight=None)

計算式: tp / (tp + fn)

roc_auc

予測スコアから受信者操作特性曲線下面積(roc_auc)を計算します。

sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)

受信者操作特性の定義も参照してください。

表9-4 回帰メトリック

メトリック 説明、対応するscikit-learnメトリック、および計算式
r2

決定係数(Rの2乗)を計算します。

sklearn.metrics.r2_score(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)

決定係数の定義も参照してください。

neg_mean_absolute_error

予測ターゲットと実際のターゲットの絶対差の平均(MAE)を計算します。

sklearn.metrics.mean_absolute_error(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)

計算式:

negmeanabserr.pngの説明が続きます
図negmeanabserr.pngの説明
neg_mean_squared_error

予測ターゲットと実際のターゲットの2乗差の平均を計算します。

-1.0 * sklearn.metrics.mean_squared_error(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)

計算式:

negmeansqerr.pngの説明が続きます
図negmeansqerr.pngの説明
neg_mean_squared_log_error

予測ターゲットと実際のターゲットの自然対数の差の平均を計算します。

sklearn.metrics.mean_squared_log_error(y_true, y_pred, sample_weight=None, multioutput=’uniform_average’)

計算式:

negmeansqlogerr.pngの説明が続きます
図negmeansqlogerr.pngの説明
neg_median_absolute_error

予測ターゲットと実際のターゲットの間の絶対差の中央値を計算します。

sklearn.metrics.median_absolute_error(y_true, y_pred)

計算式:

negmedianabserr.pngの説明が続きます
図negmedianabserr.pngの説明

関連項目: scikit-learnの回帰メトリック