Auto Sklearnをつかってみた
今更なのかもしれませんが、auto-sklearnを使ってみました。最近仕事でAutoMLを使う機会が増えてきたので、量子コンピュータに将来的に応用できるように学んでみます。
まずはインストールです。blueqat cloudにもpipで簡単に導入できました。
!curl https://raw.githubusercontent.com/automl/auto-sklearn/master/requirements.txt | xargs -n 1 -L 1 pip3 install
!pip3 install auto-sklearn
さっそく使ってみます
参考となるサイトもいろいろありました。
参考:Auto-sklearn2.0試してみた
参考:scikit-learnのサンプルデータセットの一覧と使い方
今回は分類問題として手書きの数字を使ってみました。まずはツール読み込みです。
import autosklearn.classification
import sklearn.model_selection
import sklearn.datasets
import sklearn.metrics
手書き文字の分類を学習させて、予測をします。精度を出してみます。
%%time
#データ読み込み
X, y = sklearn.datasets.load_digits(return_X_y=True)
#データを訓練データとテストデータにわけます
X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, random_state=1)
#時間が長いと困るので、実行を30秒にしました
automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=30, seed=1)
#学習
automl.fit(X_train, y_train)
#予測
y_hat = automl.predict(X_test)
#精度
print("Accuracy score", sklearn.metrics.accuracy_score(y_test, y_hat))
Accuracy score 0.9866666666666667
CPU times: user 1.39 s, sys: 301 ms, total: 1.69 s
Wall time: 26.1 s
結果として精度98.6...となりました。AutoMLでは実行時間を30秒よりも短くできませんでしたので、最短の30秒としましたが十分でしたね。CPU timesはtotalで1.69sとなっています。
AutoMLの中身がよくわからなかったのですが、こちらに簡単なものがありました。
メタ学習、データ前処理、特徴量前処理、分類計算、そしてパラメータ類をベイズ最適を使って、最後にアンサンブルを作っている感じですね。量子ばかりやっていてデータサイエンスの細かい用語や仕組みが分かりませんが、そのまま量子にも活用できそうな気がします。
論文の性能を図った図を見つけました。
複数のアルゴリズムを比較しているのが見て取れます。
Auto Sklearn2.0も使いたかったのですが結構エラーが出ました。今回は普通のAuto Sklearnを使いましたが便利ですね。仕事につかえそうです。以上です。