Asosiy kontentga o‘tish
Innovialabs

Chakana savdoda talabni prognozlash: Excel’dan machine learning’gacha

Chuqur4 daq

Qisqacha

Tozalangan ma’lumotlar va oddiy statistik prognozdan etalon sifatida boshlang; ML SKU, aksiya va tashqi omillar ko‘p bo‘lganda o‘zini oqlaydi, prognoz qiymati esa u avtomatik ravishda yetkazib beruvchiga buyurtmaga aylanganda paydo bo‘ladi.

Qisqa javob

Talab prognozi — ma’lum do‘konda ma’lum davrda tovardan necha dona sotib olinishini baholash. Odatiy yo‘l: Excel → statistik usullar → ML modellar, va har bir keyingi qadam faqat sizning ma’lumotlaringizda oldingisidan aniqroq bo‘lsa o‘zini oqlaydi.

Asosiy qoida: ma’lumot sifati algoritm tanlovidan muhimroq. «Iflos» savdolarda o‘qitilgan model kechagi xatolarni ishonch bilan bashorat qiladi.

Savdo — bu talab emas

Cheklarda talab emas, savdo yoziladi. Uchta omil ularni farqlaydi:

  • Taqchillik (stockout). Tovar tokchada bo‘lmasa, savdo nolga teng, garchi talab bo‘lgan bo‘lsa ham. Bunday kunlarni belgilash va yo chiqarib tashlash, yo talabni tiklash kerak (masalan, o‘xshash kunlardagi o‘rtacha savdo bo‘yicha).
  • Aksiyalar. Chegirma savdoni vaqtincha oshiradi, aksiyadan keyin esa ko‘pincha pasayish bo‘ladi — xaridorlar zaxira qilib olgan. «Tovar aksiyada» belgisi, mexanika turi va chegirma chuqurligi kerak.
  • Mavsumiylik va kalendar. Haftalik sikl, bayramlar, Ramazon, o‘quv yili boshlanishi, ob-havo. Suzuvchi bayram sanalarini model o‘zi «ko‘radi» deb umid qilmasdan, aniq belgilash kerak.

Qo‘shimcha: kannibalizatsiya (bir tovarga aksiya qo‘shni tovarlar savdosini kamaytiradi), assortiment o‘zgarishi, yaqinda raqobatchi ochilishi, terish tartibi o‘zgarishi.

Oddiy usullar: solishtirish uchun etalon

ML qurishdan oldin bazaviy chiziq yarating:

UsulQachon mosCheklovlar
Sodda (bir hafta oldingidek)Haftalik sikli barqaror tovarTrend va aksiyani hisobga olmaydi
Sirpanuvchi o‘rtachaMavsumiyliksiz tekis talabO‘zgarishlarga kechikib javob beradi
Eksponensial silliqlash (Holt-Winters)Trend va mavsumiylik borAksiya va tashqi omillarni yomon hisobga oladi
ARIMA/SARIMAUzun tarix, bitta qatorMinglab SKU’ga kengaytirish qiyin

Murakkab model sodda prognozdan yaxshiroq natija bermasa — muammo ma’lumotlarda yoki vazifa qo‘yilishida.

Qachon ML’ga o‘tish kerak

Gradient boosting (LightGBM, XGBoost) kabi modellar barcha tovar va do‘konlarda birdaniga o‘qitiladi va quyidagi belgilardan foydalanadi:

  • savdo laglari va sirpanuvchi o‘rtachalar;
  • kalendar: hafta kuni, bayramlar, maosh kunlari;
  • narx, aksiya mexanikasi, chegirma chuqurligi;
  • tovar va do‘kon atributlari;
  • tashqi ma’lumotlar: ob-havo, tadbirlar — agar ular prognoz paytida haqiqatan mavjud bo‘lsa.

ML SKU ko‘p, aksiyalar tez-tez va tarix yetarli bo‘lganda o‘zini oqlaydi. Tarixi yo‘q yangi tovarlar uchun kategoriya va atributlar bo‘yicha analoglardan foydalaniladi.

Asosiy texnik qoidalar:

  • Kelajak sizib chiqmasin. Belgilar prognoz paytida mavjud bo‘lishi kerak. Prognoz kunidagi haqiqiy ob-havo — sizib chiqish, ob-havo prognozi esa yo‘q.
  • Vaqt bo‘yicha validatsiya. O‘tmishda o‘qiting, keyingi davrda tekshiring (sirpanuvchi oynali backtesting), tasodifiy tanlovda emas.
  • Iyerarxiya. Do‘kon va tovar bo‘yicha prognozlar kategoriya va tarmoq prognozi bilan mos kelishi kerak.

Aniqlik metrikalari

  • MAE — donalardagi o‘rtacha mutlaq xato. Tushunarli, lekin tovarlar o‘rtasida solishtirib bo‘lmaydi.
  • MAPE — foizdagi xato. Savdosi nol bo‘lgan tovarlarda buziladi.
  • WAPE — mutlaq xatolar yig‘indisi haqiqiy savdolar yig‘indisiga bo‘lingan. Nollarga chidamliroq va agregatlar uchun qulay.
  • Bias — tizimli oshirib yoki kamaytirib ko‘rsatish. Xatosi kichik, lekin doimiy kamaytirib ko‘rsatadigan model surunkali taqchillik yaratadi.
import numpy as np

def wape(actual, forecast):
    actual, forecast = np.asarray(actual), np.asarray(forecast)
    return np.abs(actual - forecast).sum() / actual.sum()

def bias(actual, forecast):
    actual, forecast = np.asarray(actual), np.asarray(forecast)
    return (forecast - actual).sum() / actual.sum()

Metrikalarni segmentlar bo‘yicha alohida baholang: tez aylanadigan tovarlar, «uzun dum», aksiya davrlari.

Prognozdan avtobuyurtmaga

Prognozning o‘zi hech narsani o‘zgartirmaydi — qiymat avtobuyurtmada paydo bo‘ladi:

  1. Gorizont bo‘yicha talab prognozi = yetkazib berish muddati + buyurtmalar orasidagi davr.
  2. Sug‘urta zaxirasi — prognoz xatosining tarqoqligi va kategoriya uchun maqsadli xizmat darajasidan.
  3. Buyurtma = prognoz + sug‘urta zaxirasi − joriy qoldiq − yo‘ldagi tovar.
  4. Cheklovlar: qadoq karraligi, minimal partiya, tokcha va ombor sig‘imi, yaroqlilik muddati.
  5. Tavsiya kategoriya menejeriga tasdiqlash uchun yuboriladi, vaqt o‘tib barqaror pozitsiyalar uchun avtomatik.

Buning uchun aniq qoldiqlar, yo‘ldagi tovarlar haqida ma’lumot va ERP yoki tovar hisobi tizimi bilan integratsiya kerak.

Keng tarqalgan xatolar

  • Taqchillikni hisobga olmasdan savdoda o‘qitish — model talabni kamaytirib ko‘rsatadi.
  • Aniqlikni faqat tarmoq bo‘yicha o‘rtacha baholash, segmentlarsiz.
  • Monitoring yo‘q: assortiment o‘zgargandan keyin model yomonlashadi va buni hech kim sezmaydi.
  • Prognoz buyurtma jarayoniga ulanmagan va «qiziqish uchun hisobot» bo‘lib qoladi.

Ko‘p beriladigan savollar

Yillik mavsumiylikni hisobga olish uchun kamida bir-ikki to‘liq yil bo‘lgani ma’qul. Haftalik sikllar uchun kamroq yetadi, lekin yillik tarixsiz model bayramlar va mavsumiy cho‘qqilarni o‘rganmaydi.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.