0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

青果需要予測の誤差要因分析でやったこと

0
Posted at

こんにちは。アポロ株式会社でデータサイエンティストをしている八子です。

今回は、私が直近で取り組んだ 輸入青果の需要予測プロジェクト の中で、特に注力した 誤差要因分析 について書いていきます。

案件の背景

クライアントさまは、海外産青果の輸入から追熟、量販店への出荷までを一貫して手がける企業です。

海外から運ばれてくる多くの果物は、食べられる状態では輸入できません。そのため、青い状態で輸入された果物は、店頭に並ぶ前に、エチレンガスが充満した部屋で5〜7日ほど追熟し、食べごろの状態にしてから出荷されます。

しかし、この追熟を加味した販売計画を立てるのが大変です。
まず、一度追熟を始めると途中で停止することが出来ないため、長期間在庫しておくことができません。なので、計画ミスは廃棄や欠品に直結してしまいます。
さらに、「青めの状態で店頭に並べたい」「食べごろの熟度で並べたい」など、量販店によって求める熟度も異なるため、それらに応じた適切な販売計画を立てる必要があります。

そのため、販売計画業務には膨大な工数がかかっていました。 これを解消するため、販売計画を最適化するAIの構築を目指すことになり、その最初の一歩として、需要予測モデルの構築に取り組みました。

アプローチ

構築したAIモデルの概略は、図のようになっています。

image.png

一般的には、説明変数の検討などに時間をかけることが多いように思いますが、この案件においては、それ以外の要素も重要でした。
いくつかポイントを挙げると、、、

  • 「需要のまとまり」粒度で予測し、業務で必要となる粒度に後で按分する

1房200円のバナナがフィリピン産でもベトナム産でも、ほとんどの人は気にならないですよね?どちらが多く出荷されるかは、供給側の都合で変わってしまうはずで、対処が必要でした。

  • 「AIの苦手」を取り除く

よく言われている、「決定木系のモデルは水準変化に弱い」「特需の混入により予測が振れる」など、AIの性能を下げてしまうようなデータの動き方への対処が必要でした。

  • 特売日への対応

「特売」とは、クライアントさまが量販店に対して納める価格(納価)を下げて販売することを指します。出荷数量が大きく増加するため、予測誤差が出やすくなります。

これが曲者でして、、、今回お話したいことです。

初期モデル構築後に残った課題

初期モデル構築段階では、対象を「典型的な」量販店に絞ってモデル構築し、高い精度を実現することができました。

ところが、対象となる量販店を広げてみると、精度が低い。これはどうしてだろう・・・
原因を把握しないと手の打ちようがないため、誤差が大きいところを中心に、約数千ある、全量販店 × 全カテゴリの予測カーブを、出荷実績・販売計画・予測値の3本の線をひたすら見比べてみました。

そして、誤差が大きいところで何が発生しているのか?いろいろなデータと見比べながら考えました。

すると、誤差が生じるパターンが見えてきたました。というのも、、、、特売フラグが実態と合っているようには見えない!特売フラグが立っているのに全く出荷されていない日や、反対にフラグがないのに異様に出荷されている日がある。

わかったこと

誤差のパターンを整理したうえでクライアントさまと話してみると、やはり特売フラグが実態とあっておらず、それにはいくつか原因があることがわかりました。

  • 忙しすぎて入力しない

特売フラグはないのに出荷数量が増えている日があり、そのような日は納価が安くなっていた。

特売フラグが立っていない理由としては、日々忙しい営業担当者が更新できていなかったためであった。

このような日の予測精度をあげるために、特売フラグを価格に応じて付与しました。

当たり前すぎることは、入力されない

たくさん売れる日に規則性があるケースがあった。「毎週火曜が特売」「月初の数日が特売期間」etc…

営業担当者の話を聞くと、定期的に特売をやっていたが、担当者からすると当たり前のことになっており、入力されなかった。

そこで、その量販店が持つ「規則性」を検出して特売扱いとしました。

特売自体にも成功・不成功がある。

特売をしているはずなのに、全然出荷が伸びていない日があった。

よく見ると、その多くが 連続する特売の2日目以降 。

連続する特売の2日目以降は、たとえ特売をしていても売上が伸びづらいと考え、通常日として扱いにしました。

そもそも、営業担当者は数字を知っている。

営業担当者が立てた販売計画が、実態と異様に近い(近すぎる)日があり、実は営業担当者が量販店との商談で握った数字だった。

このような情報は人しか知り得ないので、AIで予測するのは不適切だと考え、商談で握った数字は人間が入力、それ以外の需要はAIが予測することとしました。

これらの対応により、最終的には、営業担当者が作成した販売計画を上回る精度を実現できました。ポイントは、誤差要因を徹底的に調べたという点でした。方法としては、「規則性を見つける」こと、「偶然ではありえないことに注目」すること、「データ生成のメカニズムに立ち返って考える」ことなどが有効でした。

まとめ

精度向上において、有効だった考え方は下記の3つです。

① 誤差が大きいところに注目せよ。

精度改善の糸口は、うまくいっている箇所ではなく、誤差が大きい箇所に隠れている。

② 誤差が生じる原因を徹底的に考えよ。精度改善策はそのあと。

「どう直すか」より先に「なぜ外れたか」を突き詰めることが、本質的な改善につながる。

③ 4つの方法で誤差が生じる原因を調べよ。

規則性を見つける/偶然ではありえないことを見つける/データ生成のメカニズムに立ち戻る/分からなければ有識者に聞く

ここまで読んでいただきありがとうございました。
ぜひ、いいねを押していただけると励みになります🐈

また、アポロでは新たなメンバーを募集しています。皆さまのご応募お待ちしております!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?