ブログ

Blog

絞り込んで表示する

2018.06.11 - 

MAGELLAN BLOCKSを用いた機械学習への取り組み方

初めまして。グルーヴノーツ コンサルタントの吉村と申します。

私はMAGELLAN BLOCKSの機械学習の仕組みを用いてお客様のビジネスに活用してもらうことを仕事としています。そんな私がこれまでお客様と進めてきた経験を踏まえて機械学習へどう取り組んでいくと良いのかということをお伝えしたいと思います。

 


 

最初のきっかけ

まず最初のきっかけです。
色々なお客様とお話してきましたが、最初のきっかけはこういったお話がありました。

  • 機械学習を使って解決したい課題がある
  • 新しいことに取り組んでみたい
  • 上から「AIでなんかやってみたい」って言われた

最後のとかあるあるだったりします。
でもきっかけは何であっても、実は進め方は大きく変わりません。

必ず「ビジネス上の目的・課題から考える」と言うことです。

実際の取り組み方の大きな流れとしてはこのようになります。

  1. 課題をブレイクダウンし問題を式にする
  2. 何を予測・判定するのか決定する
  3. 業務での使い方を考える
  4. データを準備する
  5. 学習・予測・評価する

これからこの1〜5について説明していきます。

 

1.課題をブレイクダウンし問題を式にする

企業には必ずビジネス上の目的や課題があります。
その目的・課題をどのように達成・解決するのかを定式化します。

例えばビジネス上の目的が「利益率を上げる」だったとします。
その時に現状の利益率に対する問題へブレイクダウンできます。

「利益率を上げる」という目的は簡単な例ですが

  • 売値が低い
  • 原料コストが高い
  • ロス率が高い

などにブレイクダウンできるかと思います。
今回はこの「ロス率が高い」に着目してみます。

ロス率とは要するに「ロス率 = 廃棄数 ÷ 生産数」です。
この廃棄数を減らすことがロス率の改善に繋がります。

2.何を予測・判定するのか決定する

個人的には私はこのステップが一番大事だと考えていて、ここのボタンをかけ間違うと上手く進まなくなることがあります。
このステップでの大事なポイントは3つです。

  1. 何を予測するかとアクションをセットで考える
  2. 予測したいものが何単位かを考える
  3. 予測したいものに影響しうるもの・ことを考える

順に進めますね。

a) 何を予測するかとアクションをセットで考える
「廃棄数を減らしてロス率を改善する」ためには「販売数を予測」し「適切な数量生産する」ことができれば実現できそうです。
意外と予測することに固執してその後でどう動くか決めずに走り始める場合があります。

b) 予測したいものが何単位かを考える
何を予測するかによっても変わってくるのですが、

  • 需要予測であれば
    1回毎、時間毎、日毎、週毎、月毎、年毎
  • 工場の生産であれば
    製品個体毎、製造ロット毎、製品種類毎
  • 売買契約などであれば
    契約毎、人毎、会社毎、地域毎

の様にどの単位で予測するかを考えます。
もちろん日毎×製品種類毎などの様に掛け算になる場合も多いです。

c) 予測したいものに影響しうるもの・ことを考える
これは業務的に考えることが大事です。
業務的に考える時もパターンはあります。

  • 月、曜日、休日、時間
  • 天気(気温、降水量、日照時間、日中時間)
  • 何かの数量(人数、個数、回数、金額、年齢、距離、サイズ)
  • 何かの種類(性別、業種、婚姻、地域)
  • 何かの有無(発生有無、経験有無、保有有無)

繰り返しになりますが業務をもとに考えることが大事です。
またこの段階では今あるデータに固執せず、ある程度曖昧な表現でも問題ありません。

3.業務での使い方を考える

予測できて予測結果に基づくアクションを考えたとして、業務の中でどの様に使うのか考えます。

日々の販売数を予測する場合であれば、「現場で明日の数を予測する」のかそれとも「本部で30日分の見通しを予測する」のかなどを考えます。
また機械学習で予測された値に100%はあり得ずに誤差を含みます。その誤差をどこで吸収するか例えば「そのまま使って誤差を受け入れる」のか「最終判断として人間に調整の余地を残す」などを考えておきます。

この辺りを考えた段階で準備すべきデータに制約条件が出てきます。
1ヶ月の予測を行う場合には1ヶ月先の天気予報は得られません。そのため予測因子から「天気の情報を外す」または「シミュレーターとして使う」などが決まります。

4.データを準備する

これまでに考えてきた「予測したいものに影響しうる・こと」を予想因子というデータにしていきます。また今あるデータの単位と「予測したいものの単位」が違う場合もあるので適宜集計などを行います。

商品種類毎の日々の販売数を予測するのであれば、POSデータと商品マスタのデータから予測したい数字を集約・合計します。
併せてカレンダーや天気、イベント有無などの情報を予測因子として組み立てていきます。

例えばこの様な項目になるかもしれません。

  • 商品種類(A,B,C,D,E….)
  • 月(1〜12)
  • 曜日(0〜6)
  • 休日(0,1)
  • 天気(晴,曇,雨,雪)
  • 最高気温
  • 最低気温
  • 降水量
  • キャンペーン有無(0,1)
  • 近隣イベント有無(0,1)
  • 販売数(日毎×商品種類毎)

データの形が決まったら実際に元データから加工します。
加工には以下のような様々な手法・ツールがありますが、なるべくなら試行錯誤で繰り返すことになるので何度も同じ操作をしなくてよい方法が良いでしょう。

  • Excel/Googleスプレッドシート
  • BIツール/データ抽出ツール等
  • MAGELLAN BLOCKSのData Editor
  • MAGELLAN BLOCKSのフローデザイナー

5.学習・予測・評価する

学習と予測についてはモデルジェネレーターとフローデザイナーを使って行います。具体的な操作についてはここでは割愛しますが、大事なのは最後の評価です。
機械学習に取り組む際には学習させたらすぐに業務に利用できるわけではなく、「業務に適応できる精度が出ているのか」評価する必要があります。

2015年1月1日〜2018年3月31日までのデータを準備したのであれば、全て学習させるわけではなく学習用と評価用(予測用)に分割します。
学習用を2015年1月1日〜2017年12月31日までの3年間とし、残りの2018年1月1日〜2018年3月31日の3ヶ月を使って日々の誤差がどれくらい出たか評価します。

需要予測の場合であれば日々の数が得られるのでまずは予測した3ヶ月をグラフにして見てみます。


グラフにして出してみると、どういうところが当たっていてどういうところが外れているかを視覚的に理解できます。
大事なのは外しているところで「なぜ外しているのか?その日に何があったのか?」を考えることで新たな因子に気づくこともできます。

新たな因子が得られればまたデータを準備して学習・予測し再評価を行います。
グラフにしてみると若干よくなったのかなー?と感じられると思います。

しかしながらグラフだけでは前より良くなったか「なんとなく」な判断しかできません。なんとなくではなく判断するために評価指標を利用します。

需要予測であれば誤差を平均して、その平均誤差がどう変わっていくか評価します。
この2つのグラフであれば、平均誤差が160→110へと改善しています。
(評価指標は様々あるので、別の記事にてご紹介させていただこうと思います)

機械学習に取り組むときの進め方はこの様な流れになりますが、最後の部分が繰り返しになります。

このサイクルを数回繰り返してその精度が「ビジネス上の目的・課題を満たす」レベルになれば業務に適用して活用が始まる様になります。

最後に

MAGELLAN BLOCKSを使うことでこのサイクルを簡単に早く回すことができます。
「機械学習にどう取り組んでいいか分からない」という方も、ぜひこの進め方を参考に最初の一歩を踏み出していただければと思います。