いろんなところで AI、需要予測、という言葉が飛び交う中、
- 需要予測やりたいけど、何を準備すればいいのかわからない
- いろんな会社から営業がくるけど違いがわからない
- そもそも、自分たちでやれないか(ノーコード、AutoML)?
みたいにお悩みの企業様も多くいらっしゃるので、今回はスクラッチ(手作り)か、 AutoML か、というテーマでまとめてみました。
スクラッチと AutoML の違い
スクラッチと AutoML の主な違いは、スクラッチはゼロからモデルを構築することであり、AutoML は自動的にモデルを構築することです。
スクラッチでは、データサイエンティストがモデルのアルゴリズム、ハイパーパラメーター、および特徴量エンジニアリングをゼロから決定し、 Python や Fortran などでコードを書きます。
一方で、AutoML では、ソフトウェアがこれらの決定を自動的に行うため、ユーザ(データサイエンティストでなくても大丈夫)はモデルのトレーニングと評価に集中できます。
スクラッチは、特定のニーズに合わせて調整された高精度なモデルを作成する、みたいなケースにマッチします。
ただし、時間と専門知識が必要です。
一方で、 AutoMLは、より迅速かつ簡単にモデルを作成するために使用できる便利なツールです。データサイエンスの専門知識があまりない場合や、限られた時間やリソースがある場合にマッチします。
ただし、スクラッチモデルほど精度がでない場合があります。
AutoML の限界と使い所
Vertex Forecast のような AutoML 系の機械学習を使った予測は、ノーコードでモデル作成、予測まで完結するため、圧倒的に早い(コストがかからない)反面、スクラッチと違って「なぜその予測になったのか」はブラックボックスで結果やパラメータの与え方から推測するしかなく、ユーザ側で調整できることもそれほど多くはありません。
私も実際に使ってみて、非常に高いレベルで精度を追及していくとか、モデルを完全に制御したい、とかなってくると、やはりスクラッチなんだろうなと感じています。
Vertex Forecast だけで最後まで走り切る、ということも案件や人的リソース状況によっては全然アリですが、やはり限界はあるかと思います。
重要なのは使い分け、使い方だと思っていて、例えばスクラッチの前にとりあえずAutoML で回してみて
- AutoML で予測した場合の精度(ベンチマークとする精度)はどれくらいか
- 重要な特徴量は何か、当たりをつける(説明変数が多い場合は特に有効)
- どういうケースでは当たりにくいのか、
- その原因は何か
などプロジェクトの序盤で使って開発スピードを高める、みたいな使い方がベストかなと思います。また、AutoML も日々進化しているので、もしかしたらスクラッチでいくらやってもAutoML に勝てない、、、なんてことも全然ありえると思います。
これは2020年の話ですが、 Google 社が運営する機械学習コンペ Kaggle で、AutoML の時系列モデル(今でいう Vertex Forecast )が銀メダルをとってしまったという衝撃の記事です。
当社は完全自動ソリューションを使用してコンテストに参加し、最終リーダーボードで 5,558 人の参加者中 138 位 (上位 2.5%)という銀メダル圏内の 順位を獲得しました。コンテストの参加者は、モデルの製作にほぼ 4 か月かかりました。競合予測モデルの多くは作成に数か月の手動作業を必要としていましたが、当社の AutoML ソリューションは、人的介入なしで中程度のコンピューティング コスト (2 時間で 500 CPU) のみで短時間でモデルを見つけました。
また、他のいくつかの Kaggle データセットで AutoML 予測ソリューションのベンチマークを行ったところ、リソース使用量が限られているにもかかわらず、平均して手作りモデルの 92% を上回るパフォーマンスを示したことがわかりました。
Using AutoML for Time Series Forecasting(Google 公式ブログ)より翻訳して抜粋
Kaggle に出場するような世界レベルのデータサイエンティストに食い込むレベルの予測が数千円でできてしまう、というヤバイ話です。正直、使わない理由が分かりません。データサイエンティストって雇ったら時給換算で 2.5 万円〜みたいな世界なので。
ただ前述の通り、より正確なモデルにしたいとか、AutoML ではサポートされていない特定のアルゴリズムやハイパーパラメータを使いたい、などの場合は拾いきれない問題もあるので、使い所は見極めが必要です。
スクラッチと AutoML の長所と短所
<スクラッチ>
長所:
- 高い精度:スクラッチモデルは、特定のニーズに合わせて調整できるため、AutoMLモデルよりも正確になる可能性があります。
- 柔軟性:スクラッチモデルは、AutoMLモデルよりも柔軟で、特定のニーズに合わせて調整できます。
- 制御:スクラッチモデルは、AutoMLモデルよりも制御が簡単で、モデルのトレーニング方法と評価方法を制御できます。
短所:
- 時間がかかりすぎる:スクラッチモデルの構築には時間と専門知識が必要になる場合があり、AutoMLモデルよりも時間がかかります。
- 専門知識が必要:スクラッチモデルの構築には、機械学習の経験と知識が必要です。
<AutoML>
長所:
- 時間の節約:AutoMLは、モデルのトレーニングと評価にかかる時間を節約できます。
- 使いやすさ:AutoMLは、機械学習の経験がなくてもモデルを構築できるため、スクラッチよりも使いやすいです。
- 手頃な価格:AutoMLは、スクラッチよりも手頃な価格になる可能性があります。
短所:
- 精度が低い:AutoMLモデルは、スクラッチモデルほど正確でない場合があります。
- 柔軟性が低い:AutoMLモデルは、スクラッチモデルほど柔軟ではなく、特定のニーズに合わせて調整できない場合があります。
- 制御が難しい:AutoMLモデルは、スクラッチモデルほど制御が難しく、モデルのトレーニング方法と評価方法を制御できない場合があります。
まとめ
- 時間とコストをあまりかけたくない、まずはお試ししたい、なら AutoML
- モデルを完全に制御したい、高精度なモデルを作りたい、ならスクラッチ
- プロジェクトの序盤はAutoML、それをヒントにスクラッチ開発を加速する、という使い方が個人的にはベストと思われる