ブルベースの諫山です。
先日、機械学習の勉強会を職種・役職関係なく、非エンジニアも含め20名以上で開催しました。会社として今後、機械学習に力を入れていくに際し、共通言語を持つ必要性を感じたため、開催に至りました。
その研修ではAzureMLを使って簡単な回帰モデルの作成ができることをゴールとして課題設定したため、営業メンバーでも問題なく課題をこなすことができました。AzureMLでなければ、営業メンバーはきっと課題を完成させることはできなかったでしょう。今回はAzureMLが初学者の学習プラットフォームとしては最適である理由などをお伝えしたいと思います。
AzureMLを選んだ理由
エンジニアのみであれば、Pythonでコードを書くことも出来たでしょう。しかし、今回は営業メンバーも含まれているため、コードを書かせることは出来ません。一方、AzureMLはドラッグ&ドロップで機械学習のステップやアルゴリズムを選択し、いくつかの設定を入力すれば、機械学習モデルを作成することができます。
これなら営業メンバーでもきっと出来るでしょう…。
回帰モデルの作成プロセス
今回は木の胴回り、木の高さから木の体積を予測する、回帰モデルを作成しました。予測するプロセスを下図に示します。
手順としては、
- 元データを教師データと評価データに分割する。
- 教師データを学習アルゴリズム(回帰)を噛ませ、学習済みモデルを作成する。
- 学習済みモデルに対し、教師データを用いて予測させる。
-
評価データに対し、学習済みモデルを用いて予測させる。
3と4の予測結果を比較して、学習済みモデルを評価する
となります。ここまで出来れば、機械学習がどんなプロセスで進むのか理解してくれることでしょう。
Step1:学習済みモデルを作成する
とはいえ、先ほどの図を1から作っても、単なる作業をしたぐらいにしかならないので、いくつかのステップに分けて、何度も繰り返し練習することにしました。
まずは、学習済みモデルを作成します。Step1の範囲を下記に示します。
これをAzureML上で再現するには、次のように作業します。基本的にはドラッグ&ドロップで作業ができるので、プログラムコードを書く必要は一切ありません。
作業の前に予めデータセットを準備します。tree.csvをアップロードし、ファイル形式や列見出しを設定すれば完了です
さて、本題に入ります。AzureMLでStep1を実行するには、左メニューから必要な項目をドラッグ&ドロップして、必要に応じ、パラメーターを設定していきます。一通り並べ、送信ボタンをクリックすれば学習済みモデルの出来上がりです。
このようにコードを記述することなく、視覚的に機械学習を学べるので、非エンジニアも苦手意識を持つことなく勉強できます。
Step2:教師データと評価データに分割後、予測させる
Step1の状態から徐々に発展させて、冒頭に示した完成形を目指していきます。Step1では学習済みモデルが出来ただけでこれにデータを与えなければ、何も起きません。よって、元のデータを教師データと評価データに分割し、評価データを学習済みモデルを用いて予測させます。Step2の流れを下図に示します。
データを分割する時は、AzureML上でSplit Dataを選択し、分割する割合、分割の方法などが設定できます。
送信ボタンをクリックして、Score Modelを可視化すると下図の結果が得られます。この結果表示もAzureML上で簡易的な表&グラフで表示されるので直感的です。
Step3:モデルを評価する
Score Modelで予測結果を得ることはできましたが、これがどのぐらいの精度のものか説明することはできません。予測結果を評価するため、そこで先ほどの状態にEvaluate Modelを加えます。
この状態で実行し、Evaluate Modelをクリックして確認します。各種評価指標の詳細については割愛させていただくとして、今回のテストでは決定係数(1に近づくほど精度が高い)が0.89となりました。これは今回構築したモデルで木の体積の変動を89%説明できるということを示しています。
そもそも、なぜ、このような勉強会をしたのか。
冒頭で次のように説明しましたが、もう少し補足します。
機械学習の勉強会を職種・役職関係なく、非エンジニアも含め20名以上で開催しました。会社として今後、機械学習に力を入れていくに際し、共通言語を持つ必要性を感じたため、開催に至りました。
弊社では人材事業やシステムの受託開発を行っています。人材事業を例に説明すると、機械学習プロジェクトを進めている企業の案件に対し、どのフェーズでの人材が必要なのか、どのようなスキルが必要なのかが曖昧だと、エンジニアに求人を説明することも困難ですし、企業に対しても的確なエンジニアの提案ができません。よって、営業の質、エンジニアの育成を目的に今回の勉強会を開催しました。
AzureMLで作成した図で示すと、必要なスキルや職種は下図のように分割して考えることができます。
機械学習プロジェクトではここから更にアプリケーションエンジニア(iOS、Android、Web)が必要になるケースもあります。
このAzureMLを用いて、営業メンバーには機械学習プロジェクトにおけるフェーズ、登場人物、必要なスキルを整理させたかったのです。エンジニアは機械学習の流れが理解できれば、各フェーズをコード化すれば自分でも出来るという自信、苦手意識の克服に繋がると考えました。
さいごに
弊社では不定期ではありますが、このような勉強会を開催しております。これは「人を育てられる人を育てる」という経営理念に従って開催しています。