Power BI Service で利用できる AutoML を試してみた

機械学習よくわからないおじさんが果敢に試した。(データを用意して果敢にボタンポチポチしただけ)
引き続き Preview な状態ではあるけれども、以前トライしたときとだいぶ様相が変わっていたのです。リトライするにあたり、説明変数？とか欠損値どうする？とかわからないから、あらかじめ情報を仕入れたりしながら。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">始める前に前もって読んだなど。<a href="https://t.co/lr7aLuaxkx">https://t.co/lr7aLuaxkx</a></p>&mdash; Takeshi Kagata (@PowerBIxyz) <a href="https://twitter.com/PowerBIxyz/status/1148807125222621184?ref_src=twsrc%5Etfw">2019年7月10日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

- [Creating Machine Learning models in Power BI | Microsoft Power BI Blog | Microsoft Power BI](https://powerbi.microsoft.com/en-us/blog/creating-machine-learning-models-in-power-bi/)
- [Azure Machine Learning サービスの新しい Automated Machine Learning 機能 – Cloud and Server Product Japan Blog](https://blogs.technet.microsoft.com/mssvrpmj/2018/12/14/new-automated-machine-learning-capabilities-in-azure-machine-learning-service/)

# 試した機能とは
> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/2db50763-b46e-33e7-1910-89cdf9d32f01.png)
[Microsoft Power BI: AI powered analytics - Microsoft Power BI Community](https://community.powerbi.com/t5/MBAS-Gallery/Microsoft-Power-BI-AI-powered-analytics/m-p/712524)

Power BI の機能として利用できる AI にはいくつかあって、引用から。

**Insights**
データセットから見いだせる結果を提示(Quick Insight)
言葉で質問することでビジュアライズ(Q&A)
Key Influencers visual など、ビジュアル自体がAIによる結果を表現(AI Visualization)

**Enrichment**
Power BI の機能として統合された、Cognitive Services の一部
[Cognitive Services | Microsoft Azure](https://azure.microsoft.com/ja-jp/services/cognitive-services/)
Premium キャパシティのみで利用可で料金込み

**Automated ML**
Power BI の機能として統合された、Azure Machine Learning サービス
[Machine Learning サービス | Microsoft Azure](https://azure.microsoft.com/ja-jp/services/machine-learning-service/)
Premium キャパシティのみで利用可で料金込み
特徴は、Generate ML models in clicks ぽちっとなで Turnkey model deployments すぐ使うことができる状態に。これを試してみたって話

**Data Science Extensibility / Azure Extensibility**
Power BI ではなく Azure にリソースが用意できている場合、Power BI で統合したリソースとして利用することが可能。位置づけ的にはプロ仕様って感覚でよいかと。

# いざ、まいる
チュートリアルは存在しているのだけど、キャプチャが古かったり内容も微妙なのでいちど読んだらそっ閉じ。そのうちいい感じになることでしょう。
[Tutorial: Build a Machine Learning model in Power BI (Preview) - Power BI | Microsoft Docs](https://docs.microsoft.com/en-us/power-bi/service-tutorial-build-machine-learning-model)

## 手順など
### Premium キャパシティに配置された Power BI データフローが必要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/51869372-8f70-47eb-cab5-2c3e2c634657.png)

お試しに用意したサンプルデータは、いわゆる Titanic。Kaggle 提供のサンプルで train と test のCSVがあったのでそのまま拝借。Power BI データフローのエンティティとして用意するけれども、CSV は接続可能な場所であればどこでも構わない。エンティティとして保存するには 各カラムのデータ型定義を済ませる。Power BI データフローを保存して少なくとも1回は更新をする必要がある。そうしないとエンティティは存在するもののデータがないということになるから。
![imagg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/b91c1747-b793-d112-587c-9164dfb8eb63.png)

### 作業の開始
更新が完了したら、Power BI データフローを編集。[機械学習モデル] - [作業の開始]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/d8003ea5-edb8-2441-fc47-69fef527128d.png)

### データの選択
学習用データの[エンティティ名]を選択し、[履歴の結果フィールド] で "Survived" を選択。学習用データでは Survived 列に 0 か 1 が入力されていることは確認済み。Boolean に変換しないでやってみた。変換した場合、[履歴の結果フィールド]デフォルトで選択などされることでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/5a7babb2-557e-56bd-fc21-08fd3ee06e58.png)

### モデルの選択
別の学習モデルをつかうことはないので [バイナリの予測] そのままで。Boolean 変換されていないので、1を [予測する値]として選択。次回試す時には、true / false に変換してやってみよう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/5c91cfd2-0899-a700-a33b-b58eeb59c3c5.png)

### 入力をカスタマイズします
説明変数をどう選ぶの？って思ってたんですよね。まぁおススメがされたのでそのままでもよいのかなと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/1c98a0cb-c6cb-2a9d-7dc3-1ecc5a5218b0.png)

さじ加減はわからないけれども、Key Influencers visual でもおおむね同じ内容なのでよいのではないかなと思った。ひとまず、学習に向くであろう変数を選ばれているということで。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/18362f12-65ef-4352-d367-20c3406b89f4.png)


### 名前 + トレーニング
名前とかはほどほどで。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/8b79c2eb-1658-6d89-478f-2b91acb8afc1.png)

学習が始まる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/dd8a9f27-516f-0b07-aabb-77378d4578e2.png)


しばらく待った。10 min くらいだそうだ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/e1333924-3e8b-79e8-5445-cdd3509d2eea.png)

完了したっぽいので、データフローを編集として結果をみる。
[アクション]で リトレインとか編集ができるけれども、今回は "パフォーマンスレポート"を表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/7137fe71-2a58-afd1-7b68-984fee277d10.png)

### パフォーマンスレポート
モデルが用意されたあと、パフォーマンスレポートを参照できるようになり、ここから[モデルの適用]。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/56dd7378-b68a-7d65-baab-c69441e5659e.png)

で、どのようなレポートがされているかは実際に試してみてもらう必要があるし、指標もそこそこあるのかなと。どのようなことを指しているのかいずれやらなければならいけど。まぁプレビューなので表現されている内容は変わっていくのでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/62a53be9-83c0-1a15-6450-e900612a56a8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/9f295950-01da-eaf2-ca63-224f99240c56.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/091cd894-418d-9817-2f56-47fdaf1ab09d.png)
欠損値も埋めているようだし、アンサンブル学習してますって。

で、性能だけを見ていても仕方がないので、このモデルから得られる結果をどうビジネスに活かせるようにするか。しきい値を調整することで判定される結果に必要な意味を見出せるかについては、こういう手段が提示されているのではないかと。
結果に基づいて業務を遂行するとき、かかるコストと得られる利益を勘案してしきい値を決定していく感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/8970294c-3517-88c2-6ded-266cedaeaff2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/54676323-b7fe-82a2-6ba2-d3a4da6e7572.png)

# 思ったこと🙄
最終的には再トレーニングやレポートのデータソースにつかうエンティティの更新含めて考えなければならないけど、まずは使えるようになっているよというところまで。
いかにも Microsoft らしい機能の展開かなと。得られる結果がどのようなものであるかを知ってビジネス課題が解決できればよいのでしょう。"機能" なのですから機械学習のことすべてを知らなくてもよいのでは？っていう割り切り。

エクスポートもできるようになるんですって。
> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193509/219480d6-096c-fcac-a6a0-03edce515931.png)
[Microsoft Power BI: AI powered analytics - Microsoft Power BI Community](https://community.powerbi.com/t5/MBAS-Gallery/Microsoft-Power-BI-AI-powered-analytics/m-p/712524)

# その他
- [Power BI 勉強会 - connpass](https://powerbi.connpass.com/)
- [Power BI Desktop を使い始めるには](http://qiita.com/PowerBIxyz/items/6c4735cb5b5712e70981)
- [Excel で Power Query を使い始めるには](http://qiita.com/PowerBIxyz/items/52e563037b855a099ca9)