精密などんぶり勘定 – 混ぜた飲み物の中身を当てる

11種類の飲み物を、毎日ちがう本数で全部混ぜて、混ざった液だけを分析します。何日か続けると、混ぜる前の1本1本の中身が逆算できます。

精密などんぶり勘定とは

経験と勘で行っていた見積もりを、実績データとの照合で継続的に補正し、人や日によるばらつきを小さくする手法です。補正には機械学習などを使います。

どんぶり勘定なのは、細かいところは丸めて、結果が変わるところだけを見るからです。

精密なのは、人間と違って、過去との答え合わせを自動で続けるからです。人は昨日の外れを忘れたり、たまたま当たった日だけを覚えていたりします。ソフトウェアは毎日の実績を全部同じ重さで覚えていて、ずれた分だけ次の日の見込みを直します。

分からないようで、実は分かる

コーラとオレンジジュースを混ぜてしまったら、どこまでがコーラで、どこからがオレンジジュースかは、もう見えません。混ぜた液をいくら調べても、1本ずつの中身は分からないように思えます。

ところが、混ぜる本数を変えて何回か調べると、分かってしまいます。

1回目:コーラ1本 + オレンジジュース1本 → 糖質 109g
2回目:コーラ2本 + オレンジジュース1本 → 糖質 165.5g

2回目は、1回目よりコーラが1本多いだけです。だから、増えた56.5gはコーラ1本分の糖質です。それが分かれば、1回目の109gから引いて、オレンジジュース1本分は52.5gだと分かります。

ポイントは、1回ずつの結果ではなく、回ごとの「違い」を比べることです。飲み物が11種類に増えても、やることは同じです。混ぜる本数がばらばらな日を何日分も集めて、違いを比べていけば、1本1本の中身が逆算できます。

倉庫でも同じです。オリコンの中で、どの商品がどれだけ場所を取ったのかは、外からは見えません。でも、毎日の出荷数と、実際に使ったオリコンの数の「違い」を比べていけば、商品ごとの場所の取り方は見えてきます。

使う飲み物は11種類、1本500ml

それぞれの中身(100mlあたりの糖質、カフェイン、ビタミンC、ナトリウム)を、分析する側は知らないことにします。下の値は答え合わせ用で、説明のための目安です。

毎日、ちがう本数で全部混ぜる

分かっているのは、その日に何を何本混ぜたかと、混ざった液を分析した結果だけです。1本1本の中身は、混ぜた後には見えません。

何日分も集めると、1本1本の中身が分かる

日ごとに混ぜる本数がばらつくので、「何をどれだけ混ぜたら、分析値がこう変わった」が積み重なります。それを連立方程式として解くと、混ぜる前の中身が逆算できます。種類が11あるので、少なくとも11日分の式が要ります。

–%
逆算した中身の、本当の値とのずれ(平均)
–
コーラ+ぶどうジュースの糖質の合計(推定/本当)

グラフは、使う日数を1日から60日まで増やしたときの、逆算のずれです。

やっていることは、ただの連立方程式

AIも魔法も使っていません。飲み物ごとの「100mlあたりの糖質」を x₁、x₂、… と置くと、1日分の分析結果がそのまま1本の式になります。500mlの本数に5を掛けたものが係数です。

中学校で習う連立方程式は、未知数が2つで式が2本でした。これは未知数が11個になっただけで、式が11本そろえば解けます。分析には誤差があるので、式を多めに集めて、全部の式に一番よく合う答えを選びます(最小二乗法)。全部でせいぜい高校数学の範囲です。

見分けられないものは、見分けなくていい

「コーラとぶどうジュースはいつも同じ本数」に切り替えると、その2本の中身だけ逆算が大きく外れます。いつもセットで混ざるなら、どちらの糖質なのか区別する手がかりがないからです。それでも、2本の合計はきちんと当たります。

ここが大事なところです。見分けられないものは、結果にも違いを生みません。商品で言えば、2つの場合があります。

見分けられない場合なぜ見分けなくていいか
いつも一緒に出る2つの商品いつもセットで場所を取るので、セットの合計さえ当たれば、オリコンの数は当たる
同じくらいの大きさの2つの商品どちらがどちらでも場所の取り方は同じ。入れ替わっても、オリコンの数は変わらない

どちらも、区別できないことが予測の邪魔にはなりません。区別する必要があるのは、区別すると結果が変わるときだけです。

しかも、いつか2つが別々の本数で出るようになれば、その日から実績が勝手に見分け始めます。上の切り替えを「本数はバラバラ」に戻すと、赤字が消えるのがその様子です。見分ける必要が出てきたときに、必要な分だけ、実績が見分けてくれます。

商品マスタを1件ずつ正確にしようとすると、見分けても結果が変わらないところに、一番時間を使うことになります。時間をかけるべきなのは、結果が変わるところだけです。

オリコンの数も、同じ解き方で当たる確率を上げられる

飲み物の話倉庫の話
11種類の飲み物1万種類の商品(SKU)
毎日混ぜる本数毎日の出荷数(明細で分かっている)
混ざった液の分析値実際に使ったオリコンの数(実績)
逆算した1本の中身その商品が実際にどれだけ場所を取るか
いつもセットの2本いつも一緒に出る商品

商品マスタのサイズが多少ずれていても、毎日の出荷数と実績が積み重なれば、商品ごとの「実際の場所の取り方」は実績から逆算できます。詰める人の癖も、隙間も、全部込みの値です。

もちろん、実際の倉庫で台数を当てるには、このページの計算だけでは足りません。めったに出ない商品の扱いや、区分ごとの切り上げ、実績での解き直し方など、説明のためにかなり雑にしています。ただ、原則としては、こういうモノの考え方で台数を推測しています。