AutoML【TPOT】のパイプラインに使われる関数一覧(2020.11.23時点最新)

AutoML【TPOT】のパイプラインに使われる関数一覧(2020.11.23時点最新)

パイプラインは主に「前処理」「特徴量選択」「数理モデル」の3種類の関数で構成されます。

前処理」「特徴量選択」「数理モデル」のすべての種類の関数が使われることもあれば、一部だけ使われることもあります。

パイプラインの処理内容を解読するために、ここでそれぞれの関数を一覧にしておきます。(2020.11.23時点最新)

最新の関数一覧は、以下のTPOTのGithubから確認できます。

分類のパイプラインに使われる関数一覧

分類の「前処理」関数一覧

関数名 概要
sklearn.preprocessing.Binarizer 閾値を超えた値を1、閾値以下を0と変換します。
sklearn.decomposition.FastICA 独立成分分析を行います。独立な成分に分解します。
sklearn.cluster.FeatureAgglomeration 階層的クラスタリングを用いて、特徴量の次元を削減します。
sklearn.preprocessing.MaxAbsScaler 値を各列の絶対値の最大値で割ることで標準化します。各列の最大値は1.0になります。
sklearn.preprocessing.MinMaxScaler 値を、各列の最大値と最小値を使って、次の数式で列ごとに特定の範囲で標準化します。特定の範囲とは、初期値では最大値(max=1、最小値(min=0の範囲です。pythonの数式で書くと次のようになります。

X_std = (X – X.min(axis=0)) / (X.max(axis=0) – X.min(axis=0))

X_scaled = X_std * (max – min) + min

sklearn.preprocessing.Normalizer L1L2、最大値による正規化を行います。

  • L1:各列の値を、各列の値の絶対値の和で割ります。
  • L2:各列の値を、各列の二乗の和のルートで割ります。
  • 最大値:各列の値を、各列の最大値で割ります。
sklearn.kernel_approximation.Nystroem 学習データの部分集合を使って、特徴量を線形分離可能な形に近似的に変換します。カーネル法を計算機で取り扱いやすくしたものです。サポートベクターマシンのような線形分離を行う分類器を使う前によく利用されます。
sklearn.decomposition.PCA 主成分分析し、n_componentパラメータで指定した数の主成分を返します。
sklearn.preprocessing.PolynomialFeatures degreeパラメータで指定した次数以下のすべての多項式の組み合わせを返します。たとえば特徴量が[a,b]a,b1次元のベクトル)で表されるとすると、[1,a,b,a^2,ab,b^2]が返ってきます。
sklearn.kernel_approximation.RBFSampler モンテカルロ近似により、特徴量を線形分離な形に近似的に変換します。カーネル法を計算機で取り扱いやすくしたものです。サポートベクターマシンのような線形分離を行う分類器を使う前によく利用されます。
sklearn.preprocessing.RobustScaler 列ごとに値から中央値を引き、四分位範囲で割って変換します。中央値を引くかどうか、どの範囲で割るかはパラメータで設定できます。
sklearn.preprocessing.StandardScaler 列ごとに値から平均値を引き、標準偏差で割って変換します。
tpot.builtins.ZeroCount 行ごとにゼロの数を数え、値がゼロである数とゼロでない数を特徴量として付け加えます。

実行例

tpot.builtins.OneHotEncoder 値はゼロでない整数だけが許可されます。入力値をダミー変数に変換した行列を返します。

分類の「特徴量選択」関数一覧

関数名 概要
sklearn.feature_selection.SelectFwe 多重検定エラー率により特徴量を選択します。
sklearn.feature_selection.SelectPercentile score_funcパラメータで指定されるスコアを算出し、う上からpercentileパラメータで指定される割合の特徴量を残します。初期値ではscore_funcは分散分析(ANOVA)によるF値で、percentile10%です。
sklearn.feature_selection.VarianceThreshold 分散がthresholdパラメータで指定される値より小さい特徴量を削除します。初期値ではthreshold=0、つまりすべて同じ値が入っている列が削除されます。
sklearn.feature_selection.RFE 再帰的特徴量削減です。まずすべての特徴量からestimatorパラメータで指定した分類器によりモデルを作り、最も重要度が低い特徴量を削除する。次に削除した残りの特徴量からモデルを作り、重要度の最も低い特徴量を削除する、ということを繰り返し最終的にn_features_to_selectパラメータで指定した数の特徴量を残します。
sklearn.feature_selection.SelectFromModel estimatorパラメータで指定した分類器により特徴量の重要度を算出し、thresholdで指定した値以上の重要度を持つ特徴量のみを残します。

分類の「数理モデル」関数一覧

関数名 概要
sklearn.naive_bayes.GaussianNB 入力が連続値のときのナイーブベイズ分類器です。
sklearn.naive_bayes.BernoulliNB 入力がバイナリデータ(01)であらわされるときのナイーブベイズ分類器。
sklearn.naive_bayes.MultinomialNB 多項分布モデルにもとづくナイーブベイズ分類器です。
sklearn.tree.DecisionTreeClassifier 決定木による分類器です。初期値ではジニ係数による分類を行います。
sklearn.ensemble.RandomForestClassifier ランダムフォレストによる分類器です。ランダムフォレストとはデータセットの一部を使って学習した小さな決定木を複数集め、その予測結果の平均を予測値とするアルゴリズムです。
sklearn.ensemble.ExtraTreesClassifier ランダムフォレストと似ている分類器です。ランダムフォレストよりも予測のバイアスを犠牲にしてバリアンスが小さくなるように弱学習器を生成しています。バイアスとは予測値と真の値のずれのことで、バリアンスは予測値の広がりのことを指します。
sklearn.ensemble.GradientBoostingClassifier アンサンブル学習のひとつであるブースティングを利用した分類器です。ブースティングとは、前の弱学習器が誤分類したデータを優先的に正しく分類できるよう、弱学習器を順番に学習して精度を上げていく手法のことです。
sklearn.neighbors.KNeighborsClassifier k近傍法による分類器です。学習データをベクトル空間上にプロットします。予測データがきたときベクトル空間上の近くの学習データのクラスを取得し、多数決で属するクラスを決定します。
sklearn.svm.LinearSVC 線形サポートベクターマシンです。線形分離可能なデータを分類する手法です。
sklearn.linear_model.LogisticRegression ロジスティック回帰による分類です。
xgboost.XGBClassifier アンサンブル学習のひとつであるブースティングを利用した分類器です。上述のGradientBoostingClassifierと原理はほぼ同じですが、高速に処理できるよう実装されています。
sklearn.linear_model.SGDClassifier 線形の分類器に確率的勾配降下法を適用する分類器です。パラメータlossによって、損失関数を指定し、モデルを選択します。例えば、loss=’log’の場合はロジスティック回帰に確率的勾配降下法を適用して、分類を行います。確率的勾配降下法とは計算機で損失関数の最小値をもとめやすくした計算法です。
sklearn.neural_network.MLPClassifier 多層パーセプトロンによる分類器です。多層パーセプトロンとは特徴量を重みづけして和を取ることを繰り返し、最後に活性化関数を通して分類結果を出す分類器です。

回帰のパイプラインに使われる関数一覧

回帰の「前処理」関数一覧

関数名 概要
sklearn.preprocessing.Binarizer 閾値を超えた値を1、閾値以下を0と変換します。
sklearn.decomposition.FastICA 独立成分分析を行います。独立な成分に分解します。
sklearn.cluster.FeatureAgglomeration 階層的クラスタリングを用いて、特徴量の次元を削減します。
sklearn.preprocessing.MaxAbsScaler 値を各列の絶対値の最大値で割ることで標準化します。各列の最大値は1.0になります。
sklearn.preprocessing.MinMaxScaler 値を、各列の最大値と最小値を使って、次の数式で列ごとに特定の範囲で標準化します。特定の範囲とは、初期値では最大値(max=1、最小値(min=0の範囲です。pythonの数式で書くと次のようになります。

X_std = (X – X.min(axis=0)) / (X.max(axis=0) – X.min(axis=0))

X_scaled = X_std * (max – min) + min

sklearn.preprocessing.Normalizer L1L2、最大値による正規化を行います。

  • L1:各列の値を、各列の値の絶対値の和で割ります。
  • L2:各列の値を、各列の二乗の和のルートで割ります。
  • 最大値:各列の値を、各列の最大値で割ります。
sklearn.kernel_approximation.Nystroem 学習データの部分集合を使って、特徴量を線形分離可能な形に近似的に変換します。カーネル法を計算機で取り扱いやすくしたものです。サポートベクターマシンのような線形分離を行う分類器を使う前によく利用されます。
sklearn.decomposition.PCA 主成分分析し、n_componentパラメータで指定した数の主成分を返します。
sklearn.preprocessing.PolynomialFeatures degreeパラメータで指定した次数以下のすべての多項式の組み合わせを返します。たとえば特徴量が[a,b]a,b1次元のベクトル)で表されるとすると、[1,a,b,a^2,ab,b^2]が返ってきます。
sklearn.kernel_approximation.RBFSampler モンテカルロ近似により、特徴量を線形分離な形に近似的に変換します。カーネル法を計算機で取り扱いやすくしたものです。サポートベクターマシンのような線形分離を行う分類器を使う前によく利用されます。
sklearn.preprocessing.RobustScaler 列ごとに値から中央値を引き、四分位範囲で割って変換します。中央値を引くかどうか、どの範囲で割るかはパラメータで設定できます。
sklearn.preprocessing.StandardScaler 列ごとに値から平均値を引き、標準偏差で割って変換します。
tpot.builtins.ZeroCount 列ごとに値から平均値を引き、標準偏差で割って変換します。
tpot.builtins.OneHotEncoder 値はゼロでない整数だけが許可されます。入力値をダミー変数に変換した行列を返します。

回帰の「特徴量選択」関数一覧

関数名 概要
sklearn.feature_selection.SelectFwe 多重検定エラー率により特徴量を選択します。
sklearn.feature_selection.SelectPercentile score_funcパラメータで指定されるスコアを算出し、う上からpercentileパラメータで指定される割合の特徴量を残します。初期値ではscore_funcは分散分析(ANOVA)によるF値で、percentile10%です。
sklearn.feature_selection.VarianceThreshold 分散がthresholdパラメータで指定される値より小さい特徴量を削除します。初期値ではthreshold=0、つまりすべて同じ値が入っている列が削除されます。
sklearn.feature_selection.SelectFromModel estimatorパラメータで指定した分類器により特徴量の重要度を算出し、thresholdで指定した値以上の重要度を持つ特徴量のみを残します。

回帰数理モデル」関数一覧

関数名 概要
sklearn.linear_model.ElasticNetCV クロスバリデーションでハイパーパラメータをチューニングする機能を搭載した、エラスティックネット回帰です。
sklearn.ensemble.RandomForestRegressor ランダムフォレストによる回帰です。ランダムフォレストとはデータセットの一部を使って学習した小さな決定木を複数集め、その予測結果の平均を予測値とするアルゴリズムです。
sklearn.ensemble.ExtraTreesRegressor ランダムフォレストと似ている分類器です。ランダムフォレストよりも予測のバイアスを犠牲にしてバリアンスが小さくなるように弱学習器を生成しています。バイアスとは予測値と真の値のずれのことで、バリアンスは予測値の広がりのことを指します。
sklearn.ensemble.GradientBoostingRegressor アンサンブル学習のひとつであるブースティングを利用した回帰。ブースティングとは、前の弱学習器が誤分類したデータを優先的に正しく分類できるよう、弱学習器を順番に学習して精度を上げていく手法のことです。GradientBoostingRegressorでは損失関数を小さくするように弱学習器の学習を進めます。勾配降下法をブースティングに応用したものといえます。
sklearn.ensemble.AdaBoostRegressor こちらもアンサンブル学習の一つであるブースティングを利用した回帰です。GradientBoostingRegressorと異なるのはサンプルデータの重みを更新しながら学習を進めていくところです。
sklearn.tree.DecisionTreeRegressor 決定木を利用した回帰です。初期値ではmseMean Squared Error)で分割の良さを測ります。
sklearn.neighbors.KNeighborsRegressor k近傍法による回帰です。予測する点に近いサンプル数の平均値を予測値とします。サンプルの数はn_neighborsパラメータで設定できます。
sklearn.linear_model.LassoLarsCV クロスバリデーションを用いたラッソ回帰です。さらに、Least-angle regressionLARS)を使っています。LARSは特徴量がサンプル数よりはるかに多い場合に効率的に動作します。
sklearn.svm.LinearSVR 線形サポートベクター回帰です。ε不感損失関数が小さくなるようにモデルを推定します。不感損失関数とは、残差(予測値実測値)がεか~+εの間の範囲内では損失を0とみなす関数のことです。
sklearn.linear_model.RidgeCV クロスバリデーションでハイパーパラメータをチューニングするリッジ回帰です。
xgboost.XGBRegressor アンサンブル学習のひとつであるブースティングを利用した分類器です。上述のGradientBoostingRegressorと原理はほぼ同じですが、高速に処理できるよう実装されています。
sklearn.linear_model.SGDRegressor 確率的勾配降下法により、回帰を行います。最小化する損失関数はlossパラメータで指定します。

AutoML【TPOT】パイプライン(変換器と予測器の組み合わせ)自動検討履歴の確認方法