はじめに
機械学習、流行ってますね。
流行りに飛びつくのはシャクだが、少しは理解を深めたい。
しかし流行りに乗じて本を買っても数学などの基礎部分でつまずいてあきらめていた。
そんな自分にも機械学習を始められた。
そう、Azure ならね。
想定する読み手
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
検証をはじめる前に
前提知識
さっそく手を動かしたいところだが、ちょっとだけこれを読んでほしい
一般的に機械学習で必要な手順は以下のとおり
- 題材を決める
- 元となるデータを用意する
- モデルを作成する(モデル=AI と思ってくれていい)
- 結果を確認し、必要があればモデルを修正する
- 4 を繰り返す
大事なのは1と2だ。
いきなり手を動かすにはデータがないといけない。
Azure Machine Learning にもいくつかサンプルデータが用意されている。
自分にはピンとくるものがなく、英語も読みたくないし、複雑なものは理解しづらいので自分で準備した。
https://raw.githubusercontent.com/kheiakiyama/HolidayEstimation/master/holiday.csv
日本の祝日かどうかを50年分出力したデータ。
人間もプログラムも読みやすいようにしたつもり。
上記プログラムで出力した。
Azureサブスクリプションを用意する
メールアドレスがあれば下のリンクから始められる。
正直 Azure はこのアカウント周りが非常にわかりづらく、最初のハードルになりやすい。
ログインに必要なのは Microsoft アカウントで、既存のメルアドから作成できる。
Azure のリソースを管理する単位が Azure サブスクリプションで、この単位で請求が来る。
登録にクレジットカードが必要になるが、有料の支払いをオンにしない限りは勝手に決済されることはない。
(ただしこの設定は一度オンにするともう戻せないので注意)
無料のクレジットがついているので、ちょっと試すくらいなら十分ペイできるはず。
Azure Machine Learning Studio で検証
モデル(experiment)の作成
いよいよ本題。
とはいえ説明することは特にない。
↓に大変よくできたドキュメントがある。
ドキュメントは日本語だが Machine Learning Studio が英語だと混乱しがちだが、ほとんどつまづくことはないはず。
ポチポチするだけで結果が出て来るのはよい。
ということでドキュメント読みながらポチポチ進めるだけなので、途中経過は飛ばす。
以下はデータをフィルタせず、アルゴリズムにランダムフォレスト(Multiclass Decision Forest) を使ってみた結果。
そこそこの正答率が出ている。
誤答している箇所をピックアップしてみる。
- 2030/1/13 祝日ではないが祝日扱い
- 2004/10/11 祝日だが祝日でない扱い
成人の日や体育の日は第2月曜となっているため、傾向が見えにくいのだろう。
そもそもインプットしているデータに「曜日」や「第2週」という概念がない。
このへんを与えれば改善するだろうか。
ということでデータセット自体を作り変えてみたのがこちら。
https://raw.githubusercontent.com/kheiakiyama/HolidayEstimation/master/holiday-with-dayofweek.csv
曜日と第何週かをデータに追記した。
ロジックは特に変えずに出した結果。
かなり改善している。
今回はデータセット自体を自分で用意したのでデータセットを置き換えたが、本来は Data Transformation で加工する。
データの型の特徴を正しく認識されるように加工してあげる必要があることがわかった。
あとは春分・秋分の日あたりに間違いが見られるが、アルゴリズムの取捨選択でどうにかならない気がする。
本来、自分で実装できることを機械学習に頼るべきではなく、規則性の見えないこと・表現できないことをやってくれるもの、という位置づけで考えておくのがいいのだろう。
今回は機械学習を理解するために人間が理解できるものを例にして取り上げた。
デプロイ
こうして作成したモデルは簡単に WebService にデプロイできる。
WebAPI で公開されるので後は既存のサービスから呼び出すだけ。
Bot 連携程度なら AzureFunctions 使っておけばいい。
API のドキュメントも生成されている。
Swagger フォーマットはもうスタンダードになりつつあるるのだろうか。
認証は下の画面にある Key を Header に含めるだけ。
デプロイされたAPIはトランザクション数とコンピューティング時間の従量課金となっている。
料金 - Machine Learning | Microsoft Azure
今回は AzureFunction で毎朝 API コールして結果を Slack に流すようにしてみた。
本題ではないので詳細は省く。
3/5(日) は祝日ではないけど休日ですね。。
英語力が足りてない。
まとめ
研究者みたいに学問として学ぶのが苦にならない人は数学を着実に学び直すのはいいと思う。
しかし専門職でもない自分が、機械学習に大量の学習コストを割くという判断はしづらい。
Azure Machine Learning のように短時間でお手軽に触れるテクノロジーをうまく活用してやっていきたい。
機械学習そのものについては、これをとっかかりにしてもう少し複雑なことをやらせてみたい。
やりたいことはあるが、試行錯誤そのものよりもデータ集めるのが大変なのでどうするか迷う。
さわってわかる機械学習 Azure Macine Learning 実践ガイド
- 作者: FIXER,大澤文孝,千賀大司,山本和貴,日本マイクロソフト
- 出版社/メーカー: 日経BP社
- 発売日: 2016/06/03
- メディア: 単行本
- この商品を含むブログ (1件) を見る