今回はAutoMLを介した“モデル選定の自動化”について理解を深めます。
データ分析について色々調べると、分析の手法探し自体を自動化するという、とんでもないライブラリがあることに気づきます。
どうやらAutoMLという概念がヤバイらしい…でもどう使うんだろう…と、詰まる人も一定数いるような気がします(代表例は先日の私)
そのため、今回はこのAutoMLについて使い方を整理します。
目次
今回の論点整理
”AutoML“の使いドコ
今回はAutoML(解析モデル選定の自動化)を使って、私のようなど素人がなんちゃってデータサイエンスの手法をゴリゴリ使うことについて触れます。
今回のやりたいイメージとしては以下の通りです。
詳細は後述しますが、ポチッと専用のライブラリ・関数を読み込められれば、ほぼほぼベースの分析は出来てしまいます。
素人目から見ると、『もはやこれだけ使えればいいんじゃね?』と思えるほどのものです。
今後もこの領域は各社アルゴリズムの開発が進みますのでいじれるようにはなるべきかと思います。
具体的な想定場面
上記を踏まえ、今回の想定は以下の通り
- 【想定】マーケティングを担当しているがなぜか理系だという理由でデータサイエンティスト的な働きを期待されている。
- 【状況】自社の顧客DBを統合してデータは扱えるようになったものの、何をどう分析していいかわからず、とりあえずなんかせよと言われている。
- 【狙い】目的変数を暫定で置き、説明変数を横並びにしてそれっぽい分析結果と次の行動を示唆するレポートを作る
このような時、「AutoML」という手段が使えると思います。
今回の抑えドコ
そこで、今回は上記を実現する手順について下記に備忘録的にまとめたいと思います。
- 今回の焦点
▷AutoMLの利活用に関して
(想定場面:とりあえず手始めに複数のモデルを回してそれっぽく比較・考察したい。) - ポイント
▷AutoMLとは何か
▷分析例と結果解釈
▷AutoMLにより重要になる点
”AutoML”理解のポイント
ポイント①AutoMLとは何か
まずAutoMLとは、自動機械学習と言われるもので、機械学習モデルの開発部分を自動化するプロセスのことを指します。
自動化される工程は以下の通りです。
ちなみに、このAutoMLといわれる領域は実はgoogle先生をはじめ先進的なテック系企業がめちゃ力いれて開発をしています。
- Google
▷AutoML Tables - IBM
▷AutoAI - Microsoft
▷AutomatedML - Sony
▷Prediction One - Macnica Networks(IBM)
▷H2O Driverless AI
この顔ぶれをみていてもデータサイエンスの裏の覇権争いは既にはじまっているようですね。(ここに国内代表としてsonyがあるのがすごい!)
ポイント②AutoMLの使い方
ここで今回はH20のAutoMLを利用した場合を考えます。利用する流れは以下の通り。
- h2oライブラリをインポートする。
- h2o.init()関数を呼び出しH2Oを初期化する。
- データを準備する。
- データの型をh2o用に変換する。
- 特徴量となる列のカラム名を変数xに格納する。
- 目的変数となる列のカラム名を変数yに格納する。
- 変数を指定し、モデルを作成する。
- leaderboardを用いて、モデルのランキングを確認する。
コードで示すと以下の通りです。
import h2o
from h2o.automl import H2OAutoML
h2o.init()
train = pd.merge(X_train_f, y_train_f, left_index=True, right_index=True)
valid = pd.merge(X_valid_f, y_valid_f, left_index=True, right_index=True)
h2o_train = h2o.H2OFrame(train)
h2o_valid = h2o.H2OFrame(valid)
# max_runtime_secsは最大実行時間を指定
aml = H2OAutoML(max_runtime_secs=30)
# 説明変数/目的変数のカラムを指定
x = feature_cols
y = target_cols
# モデルを作成する際に使用したデータを指定
# leaderboard_frameでスコアを計算する際に使用したいデータを指定
aml.train(x=x, y=y,
training_frame=h2o_train,
leaderboard_frame=h2o_valid)
#スコアの高いモデル順に並び変え
lb = aml.leaderboard
lb.head(rows=lb.nrows)
# もっとも精度の高かったモデルを用いて予測
h2o_f_test = h2o.H2OFrame(test[useful_cols])
y_pred = aml.predict(h2o_f_test)
# 指定番号(ID)と予測値をcsvファイルに保存
output = pd.DataFrame()
output["ID"] = test["ID"]
output[target_cols] = h2o.H2OFrame.as_data_frame(y_pred)
output.to_csv("automl_sample.csv", index=False)
みて分かる通り、説明変数や目的変数の設定も特殊なことはなく、普通の解析と大きく変わらない流れで設計が可能です。
ポイント③AutoMLの結果と解釈
前述の通り、AutoMLは非常に有用で結果として分析とモデル選びのベースはやってくれます。
ここで、解析・解釈の視点は今までやってきたベースとなる知識を抑えて置ければ問題ないと思います。
そのため、上記を踏まえ今後大事になるのは下記3点です。
- 仮説形成と前工程のデータ前処理
- 結果解釈後のハイパーパラメータのチューニング
- 結果考察後の後工程のデプロイ
ただ、2番目のハイパーパラメータを細かくいじる点も複数モデルの検証をしてもらっているため、ある程度はできていたりもします。
つまり、極端な話をするともうAutoMLでここもOKでいいやと割り切る事さえできるとも感じます。
そのため、前工程と後工程のみに注力さえできれば、機械学習が簡単にできたりします。
まとめ
上記を活用する際に、理解しておくべきポイントは以下3点です。
- ポイント①:AutoMLとは何か
▷自動機械学習と言われるモデル作りを自動化するもの - ポイント②:AutoMLの使い方
▷複数あるAutoMLのモデルの中から好みを探し単に実行する - ポイント③:AutoMLの結果と解釈
▷機械学習の解釈を行う分析のベースの視点をもって比較する
正直なところ、私のような初心者は一つ一つのモデルの特徴や使い分けはしっかりできないので、ある程度はこういったツールに頼ってしまう方が良い気がします。
また、今後もこの領域は「データ解析の民主化」という名の下、一気に広がることが想定されるので、アンテナを立てつつも、使い方までは抑えておくべきかなと思います。
今後、こういった便利ツールを使いながらも、あたかも自分で全てやったかのような演出も含めて、うまいこと現業で活かしていきたいと思います。
ご精読頂きありがとうございました。
m(_ _)m
【参考】Python初心者のお勉強のお供
上記の内容と併せて実務で活かすという視点では下記の参考図書も合わせて確認すると理解が深まります(-_-)
▼オススメの参考書籍(Kindle)▼
▼おすすめの動画学習(Udemy)▼
>>ゼロからPythonで学ぶ人工知能と機械学習 【2023年最新版】
>>現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用
>>独学で身につけるPython〜基礎編〜【業務効率化・自動化】
【参考】Python初心者が抑えたいポイント集
Python(主にデータ分析・自動化)に関しては
下記に実践したポイントをまとめています。基本的にコピペするだけでそのまま使えます٩( ᐛ )و
業務効率化・自動化においてはGoogle Apps Scriptもセットで学ぶことをオススメ!
こちらもコピペしてすぐに使えます!
PythonとGoogle Apps Scriptどちらを深めようかを迷っていればこちら!