コミュニティ

AzureMLは機械学習をこれから勉強する人にとって最高の環境だった

バレットグループ・ブルベースの諫山です。

先日、機械学習の勉強会を職種・役職関係なく、非エンジニアも含め20名以上で開催しました。会社として今後、機械学習に力を入れていくに際し、共通言語を持つ必要性を感じたため、開催に至りました。

その研修ではAzureMLを使って簡単な回帰モデルの作成ができることをゴールとして課題設定したため、営業メンバーでも問題なく課題をこなすことができました。AzureMLでなければ、営業メンバーはきっと課題を完成させることはできなかったでしょう。今回はAzureMLが初学者の学習プラットフォームとしては最適である理由などをお伝えしたいと思います。

AzureMLを選んだ理由

エンジニアのみであれば、Pythonでコードを書くことも出来たでしょう。しかし、今回は営業メンバーも含まれているため、コードを書かせることは出来ません。一方、AzureMLはドラッグ&ドロップで機械学習のステップやアルゴリズムを選択し、いくつかの設定を入力すれば、機械学習モデルを作成することができます。
ドラッグアンドドロップ.png
これなら営業メンバーでもきっと出来るでしょう…。

回帰モデルの作成プロセス

今回のは木の胴回り木の高さから木の体積を予測する回帰モデルを作成しました。予測するプロセスを下図に示します。
作成するモデル概要.png
手順としては、

  1. 元データを教師データ評価データに分割する。
  2. 教師データを学習アルゴリズム(回帰)を噛ませ、学習済みモデルを作成する。
  3. 学習済みモデルに対し、教師データを用いて予測させる。
  4. 評価データに対し、学習済みモデルを用いて予測させる。 3と4の予測結果を比較して、学習済みモデルを評価する

となります。ここまで出来れば、機械学習がどんなプロセスで進むのか理解してくれることでしょう。

Step1:学習済みモデルを作成する

とはいえ、先ほどの図を1から作っても、単なる作業をしたぐらいにしかならないので、いくつかのステップに分けて、何度も繰り返し練習することにしました。

まずは、学習済みモデルを作成します。Step1の範囲を下記に示します。
step1_new.png
これをAzureML上で再現するには、次のように作業します。基本的にはドラッグ&ドロップで作業ができるので、プログラムコードを書く必要は一切ありません。

作業の前に予めデータセットを準備します。tree.csvをアップロードし、ファイル形式や列見出しを設定すれば完了です
データセット.png
さて、本題に入ります。AzureMLでStep1を実行するには、左メニューから必要な項目をドラッグ&ドロップして、必要に応じ、パラメーターを設定していきます。一通り並べ、送信ボタンをクリックすれば学習済みモデルの出来上がりです。
step1_azure.png
このようにコードを記述することなく、視覚的に機械学習を学べるので、非エンジニアも苦手意識を持つことなく勉強できます。

Step2:教師データと評価データに分割後、予測させる

Step1の状態から徐々に発展させて、冒頭に示した完成形を目指していきます。Step1では学習済みモデルが出来ただけでこれにデータを与えなければ、何も起きません。よって、元のデータを教師データ評価データに分割し、評価データを学習済みモデルを用いて予測させます。Step2の流れを下図に示します。
step2.png
データを分割する時は、AzureML上でSplit Dataを選択し、分割する割合、分割の方法などが設定できます。
step2_azure.png
送信ボタンをクリックして、Score Modelを可視化すると下図の結果が得られます。この結果表示もAzureML上で簡易的な表&グラフで表示されるので直感的です。
score_model.png

Step3:モデルを評価する

Score Modelで予測結果を得ることはできましたが、これがどのぐらいの精度のものか説明することはできません。予測結果を評価するため、そこで先ほどの状態にEvaluate Modelを加えます。
evaluate_model.png
この状態で実行し、Evaluate Modelをクリックして確認します。各種評価指標の詳細については割愛させていただくとして、今回のテストでは決定係数(1に近づくほど精度が高い)が0.89となりました。これは今回構築したモデルで木の体積の変動を89%説明できるということを示しています。

決定係数.png
これで冒頭に紹介した一連のプロセスが学べたことになります。(再掲)
作成するモデル概要.png
そして、その後も使用する列の選択、欠損値への対応などを行い、最終的に下図にまで発展しました。
最終形態.png
ここまでやっても一切コードに触れることはありませんでした。もちろん、営業メンバーも最後まで実行することが出来ました。冒頭の図とAzureML上で作成したものが類似しているので、今何をやっているのか、指差し確認しながら作業出来たのがポイントだったと考えます。

そもそも、なぜ、このような勉強会をしたのか。

冒頭で次のように説明しましたが、もう少し補足します。

機械学習の勉強会を職種・役職関係なく、非エンジニアも含め20名以上で開催しました。会社として今後、機械学習に力を入れていくに際し、共通言語を持つ必要性を感じたため、開催に至りました。

弊社では人材事業やシステムの受託開発を行っています。人材事業を例に説明すると、機械学習プロジェクトを進めている企業の案件に対し、どのフェーズでの人材が必要なのか、どのようなスキルが必要なのかが曖昧だと、エンジニアに求人を説明することも困難ですし、企業に対しても的確なエンジニアの提案ができません。よって、営業の質、エンジニアの育成を目的に今回の勉強会を開催しました。

AzureMLで作成した図で示すと、必要なスキルや職種は下図のように分割して考えることができます。
役割分担.png
機械学習プロジェクトではここから更にアプリケーションエンジニア(iOS、Android、Web)が必要になるケースもあります。

このAzureMLを用いて、営業メンバーには機械学習プロジェクトにおけるフェーズ、登場人物、必要なスキルを整理させたかったのです。エンジニアは機械学習の流れが理解できれば、各フェーズをコード化すれば自分でも出来るという自信、苦手意識の克服に繋がると考えました。

さいごに

弊社では不定期ではありますが、このような勉強会を開催しております。これは「人を育てられる人を育てる」という経営理念に従って開催しています。どのようにして経営理念を組織文化として落とし込んでいるかはこちらの記事をご覧ください。
https://www.wantedly.com/companies/bulletgroup/post_articles/293935

nisayama
ブルベース株式会社に所属しているWebエンジニアです 近年のDXの時代に付いていこうと機械学習を勉強中です! 機械学習についての記事をこれから載せていこうと思います! 一緒に勉強してくださる方募集中です!!
https://blog.bltinc.co.jp/
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
ユーザーは見つかりませんでした