Neyron tarmoq formulalari: qo‘llanma · Yo‘qotishlar — regressiya

MAPE: o‘rtacha absolyut foiz xatosi

Har qanday menejer tushunadigan metrika: «o‘rtacha 12% ga adashamiz». Soddalik ortida tuzoqlar yashiringan: haqiqiy qiymatga bo‘lish nol atrofida portlaydi, kam va ortiq bashorat har xil jazolanadi, MAPE’da o‘qitilgan model esa sistematik ravishda kamaytirib bashorat qiladi. Hammasini mayda detallarigacha tahlil qilamiz — hosila, xatoning 3D sirti, o‘qitish va biznes misoli bilan.

Javharbek Abdulatipov · 35 daq o‘qish
$$\mathrm{MAPE}=\frac{100\%}{n}\sum_{i=1}^{n}\left|\frac{y_i-\hat{y}_i}{y_i}\right|$$

U nima uchun kerak

Savdo bo‘limi so‘raydi: «bashorat qanchalik aniq?». «MAE 37 dona» degan javob kam narsa aytadi: non uchun bu a’lo, avtomobillar uchun esa falokat. «O‘rtacha 12% ga adashamiz» degan javob izohsiz tushunarli va non uchun ham, avtomobillar uchun ham bir xil o‘qiladi. Shuning uchun MAPE (mean absolute percentage error) talabni bashorat qilish, moliya va energetikadagi eng mashhur metrikalardan biri.

U qayerda uchraydi:

  • talab va sotuvlarni bashorat qilish — chakana savdo, logistika, xaridlarni rejalashtirish; ko‘pincha bu bashorat bo‘limining asosiy KPI’i;
  • moliya va iqtisodiyot — tushum, narxlar, makroko‘rsatkichlar bashoratlarining aniqligi;
  • energetika — tarmoq yuklamasini bashorat qilish, bunda xato foizi to‘g‘ridan-to‘g‘ri zaxira narxiga aylanadi;
  • turli masshtabdagi qatorlarni solishtirish — MAPE o‘lchamsiz, shuning uchun aniqlikni minglab tovarlar bo‘yicha o‘rtachalash mumkin;
  • bashorat musobaqalari — Makridakisning M3 musobaqasida uning «simmetrik» varianti sMAPE asosiy metrikalardan biri bo‘lgan, M4 da esa usullar sMAPE va MASE bo‘yicha birgalikda reytinglangan.
Bir daqiqada asosiysi

MAPE — haqiqiy qiymat ulushlarida o‘lchangan o‘rtacha absolyut xato. U masshtabga bog‘liq emas, lekin $y_i=0$ da aniqlanmagan va nol atrofida portlaydi. Musbat haqiqiy qiymat uchun kam bashorat ko‘pi bilan $100\%$ turadi, ortiq bashorat esa istalgancha. MAPE — $1/|y_i|$ vaznli MAE, shuning uchun MAPE bo‘yicha eng yaxshi konstanta pastga siljigan vaznli mediana, MAPE’da o‘qitilgan model esa bashoratlarni kamaytiradi.

Intuitsiya: haqiqiy qiymat ulushlaridagi xato

3 dona sotilganda 1 donaga adashish — uchdan birga xato qilish. 100 dona sotilganda xuddi shu bir donaga adashish — deyarli aniq tegish. MAPE har bir xatoni o‘z haqiqiy qiymatiga nisbatan o‘lchaydi va hosil bo‘lgan foizlarni o‘rtachalaydi.

Ko‘k nuqtalarni — bashoratlarni torting. O‘ngda — har bir obyektning foizdagi xatosi (APE, absolute percentage error) va ularning o‘rtachasi — MAPE.

1-rasm. Umumiy misol: $y=(3;\,5;\,8)$, $\hat y=(2{,}5;\,5;\,10)$. $0{,}5$ va $2$ xatolar $16{,}7\%$ va $25\%$ ga aylanadi, o‘rtacha $\mathrm{MAPE}\approx13{,}9\%$. Birinchi bashoratni 2 gacha tushiring — bir donalik xato $33{,}3\%$ turadi; uchinchi obyektdagi xuddi shunday xato (bashorat 7) atigi $12{,}5\%$ turar edi.
Nimaga e’tibor bering

Uchinchi obyektning absolyut xatosi birinchinikidan to‘rt baravar katta ($2$ va $0{,}5$), foizdagisi esa atigi $1{,}5$ baravar ($25\%$ va $16{,}7\%$): katta haqiqiy qiymat katta xatolarni «kechiradi». MAPE masshtabga befarq va kichik haqiqiy qiymatlarga juda sezgir.

Formula mayda detallarigacha

Formulani ichkaridan tashqariga qarab tahlil qilamiz.

$$e_i=y_i-\hat y_i\;\xrightarrow{\;|\cdot|\;}\;|e_i|\;\xrightarrow{\;:\,|y_i|\;}\;\mathrm{APE}_i=\frac{|e_i|}{|y_i|}\;\xrightarrow{\;\frac1n\sum\;}\;\text{ulush}\;\xrightarrow{\;\times100\%\;}\;\mathrm{MAPE}$$
$y_i$
haqiqiy qiymat; noldan farqli bo‘lishi shart;
$\hat y_i$
model bashorati;
$|y_i-\hat y_i|$
absolyut xato, MAEdagi kabi;
$\frac{|y_i-\hat y_i|}{|y_i|}$
nisbiy xato APE — haqiqiy qiymatning biz adashgan ulushi; o‘lchov birliklariga bog‘liq emas;
$\frac{100\%}{n}\sum_{i=1}^n$
obyektlar bo‘yicha o‘rtacha, foizlarga o‘tkazilgan.

Umumiy misol qadamma-qadam:

$i$$y_i$$\hat y_i$$|y_i-\hat y_i|$$\mathrm{APE}_i$
132,50,516,7%
25500%
3810225,0%
o‘rtacha0,83313,9%
$$\mathrm{MAPE}=\frac{100\%}{3}\Bigl(\frac{0{,}5}{3}+\frac{0}{5}+\frac{2}{8}\Bigr)=\frac{100\%}{3}\,(0{,}1667+0+0{,}25)\approx13{,}9\%$$

Ikkita teng kuchli yozuv metrikaning tuzilishini ochib beradi:

$$\mathrm{MAPE}=\frac{100\%}{n}\sum_{i=1}^{n}\underbrace{\frac{1}{|y_i|}}_{w_i}\,|y_i-\hat y_i|=\frac{100\%}{n}\sum_{i=1}^{n}\Bigl|1-\frac{\hat y_i}{y_i}\Bigr|$$

Birinchisi: MAPE — $w_i=1/|y_i|$ vaznli vaznli MAE; haqiqiy qiymati kichik obyektlar ulkan vazn oladi. Ikkinchisi: musbat haqiqiy qiymatlar uchun APE faqat $q_i=\hat y_i/y_i$ nisbatga bog‘liq, $\mathrm{APE}_i=|1-q_i|$. Shuning uchun barcha haqiqiy qiymatlar va bashoratlar bir xil songa ko‘paytirilsa, MAPE o‘zgarmaydi.

Foizmi yoki ulush

Kutubxonalar ko‘pincha MAPE’ni 100 ga ko‘paytirmasdan, ulush sifatida qaytaradi: sklearn.metrics.mean_absolute_percentage_error umumiy misolda $13{,}9$ emas, $0{,}139$ beradi. Aynan nimani solishtirayotganingizni tekshiring.

Xossalar va nosimmetriklik

  • O‘lchamsizlik: istalgan $c\ne0$ da $\mathrm{MAPE}(c\,y,\,c\,\hat y)=\mathrm{MAPE}(y,\hat y)$. So‘mmi yoki ming so‘mmi — farqi yo‘q.
  • Siljishga invariant emas: haqiqiy qiymatlar va bashoratlarga 1000 qo‘shing — absolyut xatolar o‘sha, MAPE esa bir necha marta tushib ketadi. Shuning uchun MAPE °C dagi harorat va shartli nolga ega boshqa shkalalar uchun ma’nosiz.
  • $y_i=0$ da aniqlanmagan va $y_i\to0$ da cheksiz o‘sadi: haqiqiy qiymat $0{,}01$ bo‘lganda 1 bashorati — $9900\%$ xato.
  • Nol bashorat roppa-rosa $100\%$ turadi: $\hat y_i=0$ da har bir $\mathrm{APE}_i=1$. «Doim nol» modeli istalgan nolmas ma’lumotlarda $\mathrm{MAPE}=100\%$ ga ega.
  • Nosimmetriklik: musbat haqiqiy qiymat va manfiy bo‘lmagan bashorat uchun kam bashorat $\mathrm{APE}\le100\%$ beradi, ortiq bashorat esa chegaralanmagan.
  • Qavariqlik: MAPE — bashoratlarning chiziqli funksiyalari modullari yig‘indisi, shuning uchun u bashoratlar bo‘yicha (va chiziqli model parametrlari bo‘yicha) qavariq; faqat ideal bashoratda nolga teng.

Donada simmetrik, marta bo‘yicha — yo‘q

Agar xatoni birliklarda hisoblasak, MAPE simmetrik: $y-d$ va $y+d$ bashoratlar bir xil, $d/y$ turadi. Lekin biznesda xatolar ko‘pincha marta bilan o‘lchanadi: «bir yarim baravar oshirib yubordik», «ikki baravar kam bashorat qildik». Bu yerda MAPE nosimmetrik: ikki baravar kam ($\hat y=y/2$) $50\%$ turadi, ikki baravar ko‘p ($\hat y=2y$) — $100\%$. Bir xil marta adashgan ikki bashoratdan MAPE doim kamrog‘ini afzal ko‘radi.

2-rasm. Haqiqiy qiymati $y=100$ bo‘lgan bitta obyekt xatosi bashorat funksiyasi sifatida. To‘q sariq APE — $\hat y=y$ da singan «belgi»: chapda u $100\%$ shiftga tiraladi, o‘ngda esa cheksiz o‘sadi. 150 bashorati (haqiqiy qiymatdan $1{,}5$ marta katta) $50\%$ turadi, $100^2/150\approx66{,}7$ bashorati ($1{,}5$ marta kichik) esa atigi $33{,}3\%$. Binafsha sMAPE $200\%$ bilan chegaralangan va xuddi shu absolyut xatoda kam bashoratga qattiqroq: $\hat y=150$ da $40\%$ va $\hat y=50$ da $66{,}7\%$. Pastda — hosilalar: APE’da bu bashoratning har bir birligiga $\pm1\%$ zinapoya.
Nega sMAPE unchalik simmetrik emas

sMAPE xatoni haqiqiy qiymat va bashoratning o‘rtachasiga bo‘ladi: $\mathrm{sAPE}=2|y-\hat y|/(|y|+|\hat y|)$. Marta bo‘yicha u simmetrik: $\hat y=k\,y$ va $\hat y=y/k$ da ($k>0$, $y>0$) bir xil qiymat chiqadi:

$$\frac{2|k-1|\,y}{y+k\,y}=\frac{2|k-1|}{k+1},\qquad\frac{2|1/k-1|\,y}{y+y/k}=\frac{2|1-k|}{k+1}$$

Donada esa yo‘q: $\hat y=y\pm d$ da $2y-d$ va $2y+d$ maxrajlar farq qiladi, va kam bashorat qattiqroq jazolanadi. Bu metrikalarning hech biri bir vaqtda ham «marta bo‘yicha», ham «donada» simmetriyani bermaydi; marta bo‘yicha qat’iy simmetrik — logarifmik xato $|\ln(\hat y/y)|$.

Hosila va eng yaxshi konstanta

Bitta obyekt uchun APE bashoratning chiziqli funksiyasi moduli, shuning uchun uning hosilasi — zinapoya:

$$\frac{\partial\,\mathrm{APE}_i}{\partial\hat y_i}=\frac{\operatorname{sign}(\hat y_i-y_i)}{|y_i|},\qquad\hat y_i\ne y_i$$
Keltirib chiqarish va parametrlar bo‘yicha gradiyent

$\hat y_i>y_i$ da $\mathrm{APE}_i=(\hat y_i-y_i)/|y_i|$ — qiyaligi $1/|y_i|$ bo‘lgan to‘g‘ri chiziq; $\hat y_i<y_i$ da — qiyaligi $-1/|y_i|$ bo‘lgan $(y_i-\hat y_i)/|y_i|$ to‘g‘ri chiziq. $\hat y_i=y_i$ nuqtada hosila yo‘q (sinish); subgradiyent — $[-1/|y_i|;\,1/|y_i|]$ dan istalgan son, kutubxonalar odatda 0 ni oladi. Model parametrlari uchun zanjir qoidasiga ko‘ra:

$$\frac{\partial\,\mathrm{MAPE}}{\partial\theta}=\frac{100\%}{n}\sum_{i=1}^{n}\frac{\operatorname{sign}(\hat y_i-y_i)}{|y_i|}\cdot\frac{\partial\hat y_i}{\partial\theta}$$

Hosila moduli xato kattaligiga bog‘liq emas — MAEdagi kabi, — lekin $1/|y_i|$ ga ko‘paytirilgan: haqiqiy qiymati 1 bo‘lgan obyekt modelni haqiqiy qiymati 100 bo‘lgan obyektdan 100 marta kuchliroq tortadi. Umumiy misolda bashoratning har bir birligiga $\partial\,\mathrm{MAPE}/\partial\hat y=\tfrac{100\%}{3}\,\bigl(-\tfrac13;\;0;\;\tfrac18\bigr)\approx(-11{,}1\%;\;0;\;4{,}2\%)$: xatosi to‘rt baravar kichik birinchi obyekt uchinchisidan $2{,}7$ marta kuchliroq tortadi.

Eng yaxshi konstanta — pastga siljigan vaznli mediana

Barcha obyektlar uchun qaysi yagona $c$ bashorati MAPE’ni minimallashtiradi? $\mathrm{MAPE}(c)=\frac{100\%}{n}\sum_i|y_i-c|/y_i$ funksiyasi bo‘lakli-chiziqli va qavariq; qo‘shni ma’lumot nuqtalari orasida uning qiyaligi $\frac{100\%}{n}\bigl(\sum_{y_i<c}\tfrac1{y_i}-\sum_{y_i>c}\tfrac1{y_i}\bigr)$ ga teng. Minimum qiyalik ishorasini o‘zgartirgan joyda — chapdagi $1/y$ umumiy vazni o‘ngdagisi bilan tenglashgan joyda. Bu $1/y_i$ vaznli vaznli mediana:

$$c^*=\operatorname*{arg\,min}_c\sum_{i=1}^{n}\frac{|y_i-c|}{y_i}=\frac{1}{y_i}\text{ vaznli } y_i \text{ larning vaznli medianasi}$$

Vaznlar $y$ o‘sishi bilan kamayadi, shuning uchun vaznli mediana oddiysidan katta emas: MAPE bashoratni sistematik ravishda pastga tortadi. Lognormal talab uchun buni aniq hisoblash mumkin: agar $\ln y\sim N(\mu,\sigma^2)$ bo‘lsa, $c^*=e^{\mu-\sigma^2}$ — $e^{-\sigma^2}$ ga ko‘paytirilgan $e^{\mu}$ mediana.

e^(−σ²) ko‘paytuvchi qayerdan keladi

Vaznli mediana — zichligi $f(y)/y$ ga proporsional bo‘lgan taqsimotning medianasi. Lognormal $f$ zichlik uchun $t=\ln y$ deb belgilab:

$$\frac{f(y)}{y}\propto\frac{1}{y^2}\,e^{-\frac{(t-\mu)^2}{2\sigma^2}}=\frac{1}{y}\,e^{-\frac{(t-\mu)^2+2\sigma^2 t}{2\sigma^2}}\propto\frac{1}{y}\,e^{-\frac{(t-(\mu-\sigma^2))^2}{2\sigma^2}}$$

Bu yana lognormal zichlik, lekin $\mu-\sigma^2$ parametr bilan; uning medianasi $e^{\mu-\sigma^2}$. Taqqoslash uchun: dastlabki taqsimotning o‘rtachasi $e^{\mu+\sigma^2/2}$ medianadan yuqori. $\sigma=0{,}6$ da MAPE optimumi medianadan $1-e^{-0{,}36}\approx30\%$ past.

3-rasm. Medianasi taxminan 100 bo‘lgan lognormal talabning 60 ta qiymati (generator urug‘i — seed — qayd etilgan). Qora egri chiziq — $c$ konstant bashoratning MAPE’si, pastda — uning qiyaligi, zinapoyasimon funksiya. $\sigma=0{,}6$ da $42{,}5\%$ minimumga $c^*\approx71{,}0$ da erishiladi, mediana esa $101{,}0$, o‘rtacha — $119{,}1$: MAPE bo‘yicha optimal bashorat medianadan $29{,}7\%$ past (nazariya $e^{-0{,}36}-1\approx-30{,}2\%$). Medianaga teng bashorat $51{,}5\%$, o‘rtachaga teng bashorat $63{,}0\%$, nol bashorat esa roppa-rosa $100\%$ turadi.
MAPE’da o‘qitish kam bashoratga olib keladi

MAPE’ni minimallashtirishga o‘qitilgan model bu siljishni meros qilib oladi: uning bashoratlari sistematik ravishda haqiqiy qiymatlardan past. Chakana savdoda bu bo‘sh javonlarni anglatadi, yo‘qotilgan sotuvlar esa hech bir metrikaga tushmaydi: omborda qancha bo‘lsa, roppa-rosa shuncha sotiladi.

Xato xaritasi: (y, ŷ) tekisligi ustidagi APE

Bitta obyekt xatosiga ikki o‘zgaruvchining — haqiqiy qiymat $y$ va bashorat $\hat y$ ning funksiyasi sifatida qaraymiz. APE sath chiziqlari — koordinata boshidan chiqqan nurlar: $|y-\hat y|/y=a$ sharti $\hat y=(1\pm a)\,y$ ga teng kuchli. Absolyut xatoning sath chiziqlari esa, aksincha, parallel $\hat y=y\pm e$ to‘g‘ri chiziqlar. Nurlar nolda tutashadi, shuning uchun $y=0$ yaqinida istalgan qayd etilgan absolyut xato APE’ning barcha sathlarini kesib o‘tadi — «portlash» shundan.

4-rasm. Chapda — $200\%$ da kesilgan $\mathrm{APE}(y,\hat y)$ sirti (uni aylantirish mumkin): $\hat y=y$ diagonali (to‘q sariq chiziq) bo‘ylab nol xato vodiysi va $y\to0$ da devor. O‘ngda — yuqoridan ko‘rinish: qora nurlar — APE sathlari, qizil punktir — 1 va 2 absolyut xato sathlari. $P=(2;\,3)$ va $Q=(8;\,9)$ nuqtalar bir xil bir birlikka adashadi, lekin $\mathrm{APE}(P)=50\%$, $\mathrm{APE}(Q)=12{,}5\%$.

$n$ ta obyekt uchun MAPE — shunday funksiyalarning o‘rtachasi. $(\hat y_1,\dots,\hat y_n)$ bashoratlar fazosida uning sath chiziqlari — markazi $y$ da, yarim o‘qlari $y_i$ ga proporsional bo‘lgan ko‘pyoqlar (2D’da romblar): kichik $y_i$ o‘qlari bo‘ylab katta jarimasiz uzoqqa ketib bo‘lmaydi.

MAPE’da o‘qitish: 1/y vaznlar va kam bashorat

MAPE — $1/|y_i|$ vaznli MAE bo‘lgani uchun, modelni MAPE’da obyekt vaznlari bilan MAE’ni minimallashtiradigan istalgan algoritm bilan o‘qitish mumkin: sample_weight=1/|y| ni bering. LightGBM’da tayyor objective="mape" maqsadi bor, PyTorch’da esa yo‘qotish bir qatorda yoziladi (kod bo‘limiga qarang).

Eng oddiy $\hat y=w\,x$ modelni $y=10\,x\cdot e^{0{,}35\,\varepsilon}$, $\varepsilon\sim N(0,1)$ bo‘lgan 40 ta obyektda o‘qitamiz: haqiqiy qiyalik 10 ga teng, shovqin multiplikativ — uning kattaligi haqiqiy sotuvlardagi kabi $y$ bilan birga o‘sadi.

5-rasm. Chapda — ma’lumotlar ($1/y$ vazn qancha katta bo‘lsa, nuqta shuncha yirik) va ikki model, o‘ngda — $w$ qiyalik funksiyasi sifatida MAPE. «Boshlash»ni bosing: $w=4$ dan $8/\sqrt{t+1}$ qadam bilan MAPE bo‘yicha subgradiyent tushish $\mathrm{MAPE}\approx20{,}28\%$ bilan $w^*\approx9{,}10$ ga yaqinlashadi. Eng kichik kvadratlar usuli $w\approx10{,}74$ va $\mathrm{MAPE}\approx22{,}99\%$ beradi, lekin uning umumiy bashorati deyarli siljimagan ($-0{,}6\%$), MAPE bo‘yicha modelning bashoratlar yig‘indisi esa haqiqiy qiymatlar yig‘indisidan taxminan $16\%$ past.

Nega shunday: kichik $y$ li nuqtalar katta vazn oladi va to‘g‘ri chiziqni pastga tortadi. $q_i=y_i/x_i$ nisbatlar tilida $\mathrm{MAPE}(w)=\frac{100\%}{n}\sum_i|q_i-w|/q_i$, demak, optimum — $1/q_i$ vaznli $q_i$ larning vaznli medianasi. Lognormal shovqinda bu $e^{-\sigma^2}=e^{-0{,}1225}\approx0{,}885$ ga ko‘paytirilgan mediana, ya’ni katta tanlanmada 10 o‘rniga taxminan $8{,}85$ (quyidagi scikit-learn listingidagi 400 ta nuqtada $8{,}85$ chiqadi). 5-rasmdagi 40 ta nuqtada tasodifiy tebranish sezilarliroq, va optimum $9{,}10$ ga teng.

Siljishni qanday chetlab o‘tish mumkin

1) $\ln y$ dan MAE yoki MSE’da o‘qiting, MAPE’ni esa faqat hisobot uchun ishlating. 2) Agar KPI aynan MAPE bo‘lsa-yu, kam bashorat qimmat bo‘lsa (taqchillik), bashoratlarni validatsiyada tanlangan ko‘paytuvchi bilan to‘g‘rilang yoki haqiqiy xarajatlarni aks ettiruvchi metrikani tanlang (WAPE, kvantil yo‘qotish). 3) Ma’lumotlarda nollar yoki nolga yaqin qiymatlar bo‘lsa, MAPE’da o‘qitmang.

MAPE, sMAPE, WAPE va MASE

Sanab o‘tilgan muammolar tufayli MAPE’ning bir nechta mashhur qarindoshlari bor ($e_i=y_i-\hat y_i$):

MetrikaFormula$y$ dagi nollarXususiyati
MAPE$\frac{100\%}{n}\sum\frac{|e_i|}{|y_i|}$aniqlanmaganhaqiqiy qiymat ulushi; marta bo‘yicha nosimmetrik; nol atrofida portlaydi
sMAPE$\frac{100\%}{n}\sum\frac{2|e_i|}{|y_i|+|\hat y_i|}$$\hat y_i\ne0$ bo‘lsa, mumkin (unda $\mathrm{sAPE}_i=200\%$)$200\%$ bilan chegaralangan; donada kam bashoratga qattiqroq
WAPE$100\%\cdot\frac{\sum|e_i|}{\sum|y_i|}$mumkin (yig‘indi nol bo‘lmasin)o‘rtacha haqiqiy qiymatga bo‘lingan MAE; katta obyektlar og‘irroq
MASE$\frac{\frac1n\sum|e_i|}{\frac{1}{T-1}\sum_t|y_t-y_{t-1}|}$mumkin (qator o‘zgarmas bo‘lmasin)«o‘tgan davrdagidek» sodda bashoratga nisbatan MAE; $<1$ — sodda bashoratdan yaxshi

Umumiy misolda $\mathrm{MAPE}\approx13{,}9\%$, $\mathrm{sMAPE}\approx13{,}5\%$, $\mathrm{WAPE}=2{,}5/16\approx15{,}6\%$, masshtabi $\tfrac12\bigl(|5-3|+|8-5|\bigr)=2{,}5$ bo‘lgan MASE esa $0{,}833/2{,}5\approx0{,}33$ ga teng (soddalik uchun masshtab o‘sha uchta nuqta bo‘yicha hisoblangan).

WAPE (uni MAD/Mean ratio deb ham atashadi) — o‘rtacha haqiqiy qiymatga bo‘lingan MAE: sotuvi katta obyektlar og‘irroq, umumiy natija esa talabi nolga yaqin bitta tovar tufayli buzilmaydi. MASE (Xayndman va Kyoler, 2006) model MAE’sini qatorning o‘qitish qismida hisoblangan «o‘tgan davrdagidek» sodda bashorat MAE’si bilan solishtiradi (mavsumiy qatorlarda — mavsumiy sodda bashorat bilan) va hatto nollari bor qatorlar uchun ham yaraydi. sMAPE’ning bir nechta varianti bor: bu yerda M4 dagi kabi $200\%$ bilan chegaralangan $2|e_i|/(|y_i|+|\hat y_i|)$ ishlatiladi; M3 da maxraj modullarsiz, $y_i+\hat y_i$ olingan, ikkisiz va $100\%$ bilan chegaralangan versiya ham uchraydi — sonlarni solishtirishdan oldin formulani aniqlang. Bir xil ma’lumotlarda WAPE va MASE faqat o‘zgarmas ko‘paytuvchi bilan farq qiladi, shuning uchun ularning optimumi bitta.

6-rasm. 52 haftalik talab (nuqtalar) va $k\cdot$baza bashorati (ko‘k chiziq). O‘ngda — $k$ ko‘paytuvchining funksiyasi sifatida metrikalar, nuqtalar — minimumlar. MAPE $k\approx0{,}89$ da, ya’ni 11% ga kamaytirilgan bashoratda minimal; sMAPE — $k\approx1{,}007$ da; WAPE (va MASE) — $k\approx1{,}012$ da. Talab tushishini yoqing — $y=3$ bo‘lgan bitta hafta: $k=1$ da MAPE $24{,}5\%$ dan $68{,}8\%$ gacha sakraydi, uning minimumi esa $k\approx0{,}78$ ga ko‘chadi; WAPE atigi $23{,}5\%$ dan $25{,}4\%$ gacha o‘zgaradi.

Biznes misoli: do‘kon assortimenti

Tarmoq oltita tovarning haftalik sotuvlarini bashorat qiladi. Ulardan beshtasi o‘nlab va yuzlab dona sotiladi va $7{,}5\%$ dan $16{,}7\%$ gacha xato bilan bashorat qilinadi. Oltinchisi, F, — kam sotiladigan tovar: bashorat 10 dona, sotilgani esa 4.

7-rasm. Chapda — haqiqiy qiymat va bashorat (logarifmik shkala), o‘ngda — har bir tovarning APE’si. Sotuvlarning $0{,}15\%$ i to‘g‘ri keladigan F tovari $\mathrm{APE}=150\%$ va barcha APE’lar yig‘indisining $72\%$ ini beradi: $\mathrm{MAPE}=34{,}8\%$, holbuki usiz u $11{,}7\%$ ga teng. Xatoni donada hisoblaydigan WAPE $9{,}4\%$ ga teng: 2714 ta sotilgan donaga 256 dona xato. F sotuvlarini suring: bitta dona sotilganda MAPE deyarli $160\%$ ga yetadi.

Amalda nima qilish kerak:

  • WAPE bilan hisobot bering (yoki tushum bo‘yicha vaznlangan MAPE bilan), agar donada yoki pulda umumiy aniqlik muhim bo‘lsa;
  • MAPE’ni guruhlar bo‘yicha hisoblang — tez va sekin sotiladigan tovarlarni alohida — yoki sotuvi chegaradan past pozitsiyalarni chegarani aniq ko‘rsatgan holda chiqarib tashlang;
  • sekin sotiladigan tovarlar uchun MASE yoki uzilishli talab uchun maxsus metrikalardan foydalaning;
  • xato ishorasini alohida kuzating: bashoratlar yig‘indisining siljishi (bias) — mustaqil KPI, MAPE uni ko‘rsatmaydi.
Nega MAPE shunchalik mashhur

MAPE statistik ma’lumotsiz ham tushunarli, shuning uchun u allaqachon soha hisobotlarining standartiga aylangan. Tanqid ham eski: kam bashoratlar foydasiga siljish va kichik haqiqiy qiymatlar muammosiga 1980–1990-yillardayoq e’tibor qaratilgan (masalan, Armstrong va Kollopi, 1992), Xayndman va Kyoler (2006) esa bu kamchiliklarsiz masshtabga bog‘liq bo‘lmagan muqobil sifatida MASE’ni taklif qilishgan.

Kodda

NumPy’da MAPE — bitta qator; quyida sMAPE, WAPE va formulalarni umumiy misolda tekshirish ham bor.

pythonimport numpy as np

y     = np.array([3.0, 5.0, 8.0])
y_hat = np.array([2.5, 5.0, 10.0])

ape  = np.abs((y - y_hat) / y)      # [0.16666667 0.         0.25      ]
mape = 100 * ape.mean()             # 13.888888888888888

# Xuddi shu, 1/|y| vaznli MAE sifatida
w = 1 / np.abs(y)
print(100 * np.mean(w * np.abs(y - y_hat)))   # 13.888888888888888

def smape(y, f):
    return 100 * np.mean(2 * np.abs(f - y) / (np.abs(y) + np.abs(f)))

def wape(y, f):
    return 100 * np.sum(np.abs(y - f)) / np.sum(np.abs(y))

print(smape(y, y_hat), wape(y, y_hat))        # 13.468013468013467 15.625

scikit-learn ulush qaytaradi va mashina epsilonidan ($\approx2{,}2\cdot10^{-16}$) kichik maxrajlarni epsilon bilan almashtiradi — shuning uchun nolga bo‘lish xatosi o‘rniga ulkan son chiqadi. «MAPE bo‘yicha» o‘qitish uchun $1/y$ vaznli mediana regressiyasi mos keladi:

pythonimport numpy as np
from sklearn.metrics import mean_absolute_percentage_error
from sklearn.linear_model import LinearRegression, QuantileRegressor

# y, y_hat — yuqoridagi listingdan
print(mean_absolute_percentage_error(y, y_hat))            # 0.13888888888888887 — foiz emas, ulush!
print(mean_absolute_percentage_error([0.0, 5.0], [1.0, 5.0]))  # 2251799813685248.0: nol o‘rniga eps ga bo‘lish

# «MAPE bo‘yicha» o‘qitish: 1/y vaznli mediana regressiyasi (MAE)
rng = np.random.default_rng(0)
x = rng.uniform(1, 10, 400)
t = 10 * x * np.exp(0.35 * rng.standard_normal(400))
X = x[:, None]
ols = LinearRegression(fit_intercept=False).fit(X, t)
fit = QuantileRegressor(quantile=0.5, alpha=0, fit_intercept=False).fit(X, t, sample_weight=1 / t)
print(ols.coef_, fit.coef_)   # [10.57549043] [8.85148171] — MAPE bo‘yicha model yig‘indini 16% ga kamaytiradi

PyTorch’da yo‘qotish funksiyasi sifatida MAPE:

pythonimport torch

def mape_loss(pred, target, eps=1e-8):
    """Yo‘qotish funksiyasi sifatida MAPE (ulush). eps 0 ga bo‘lishdan saqlaydi, lekin nol atrofidagi ulkan vaznlardan emas."""
    return torch.mean(torch.abs(target - pred) / target.abs().clamp_min(eps))

y     = torch.tensor([3.0, 5.0, 8.0])
y_hat = torch.tensor([2.5, 5.0, 10.0], requires_grad=True)
loss = mape_loss(y_hat, y)
loss.backward()
print(loss.item(), y_hat.grad)   # 0.1388888955116272 tensor([-0.1111, -0.0000,  0.0417])
Qoida

MAPE’ni hisoblashdan oldin ma’lumotlardagi $|y|$ minimumiga qarang. U yerda nollar yoki odatiy qiymatlarga nisbatan juda kichik qiymatlar bo‘lsa, WAPE yoki MASE bilan hisobot bering va MAPE’ni yo‘qotish funksiyasi sifatida ishlatmang.

Ko‘p uchraydigan xatolar

  1. Nollari bor ma’lumotlarda MAPE. Nolga bo‘lish cheksizlik yoki NaN beradi, $\varepsilon$ orqali «himoya» esa astronomik sonlar beradi: scikit-learn $2{,}25\cdot10^{15}$ qaytaradi. Nollarni aniq filtrlang va bu haqda xabar bering yoki WAPE va MASE’ni oling.
  2. Shartli nolli shkalalar uchun MAPE — °C dagi harorat, indekslar, sanalar. 2° da ham, 30° da ham 1° xato bir xil, MAPE esa 15 marta farq qiladi.
  3. Siljishni hisobga olmasdan MAPE’da o‘qitish. Model bashoratni sistematik ravishda kamaytiradi, chakana savdoda bu javonlardagi taqchillikka aylanadi.
  4. Kichik qiymatlar ulushi har xil bo‘lgan to‘plamlar orasida MAPE’ni solishtirish. Bitta model tez sotiladigan tovarlarda 12%, sekin sotiladiganlarda 60% ko‘rsatadi — gap sifatda emas, ma’lumotlarda.
  5. Ulush va foizni chalkashtirish: scikit-learn $13{,}9$ emas, $0{,}139$ qaytaradi.
  6. «MAPE kichikroq — demak, reja aniqroq». MAPE xatolar ishorasini ko‘rmaydi: MAPE’si kichikroq bashorat 5-rasmdagi kabi talabni yig‘indida 16% ga kamaytirishi mumkin.
  • MAE: MAPE — $1/|y_i|$ vaznli MAE; gradiyent moduli ham xato kattaligiga bog‘liq emas, lekin $1/|y_i|$ ga masshtablangan.
  • MSE va RMSE: absolyut kvadratik xatolar; ularning nisbiy qarindoshi — RMSLE, logarifmik shkaladagi RMSE.
  • Huber: noldagi sinishni silliqlaydi; xuddi shu g‘oyani nisbiy xatoga ham qo‘llash mumkin.
  • SGD: MAPE’da o‘qitish — qadami kamaytirilishi kerak bo‘lgan subgradiyent tushish (5-rasmda — $1/\sqrt t$ kabi).

Xulosa

1) $\mathrm{MAPE}=\frac{100\%}{n}\sum|y_i-\hat y_i|/|y_i|$ — haqiqiy qiymatga nisbatan foizdagi o‘rtacha xato; masshtabga bog‘liq emas va biznesga tushunarli. 2) $y=0$ da aniqlanmagan va nol atrofida portlaydi; nol bashorat roppa-rosa $100\%$ turadi. 3) Marta bo‘yicha nosimmetrik: ikki baravar kam — $50\%$, ikki baravar ko‘p — $100\%$. 4) MAPE — $1/|y|$ vaznli MAE: hosila $\operatorname{sign}(\hat y-y)/|y|$, eng yaxshi konstanta — oddiysidan past vaznli mediana, MAPE’da o‘qitish kam bashoratga olib keladi. 5) Assortiment bo‘yicha hisobotlar uchun odatda WAPE va MASE ishonchliroq.

O‘zingizni tekshiring

1. Haqiqiy qiymat 200, bashorat 150. APE nimaga teng?
2. Haqiqiy qiymat 100. Qaysi bashorat kattaroq APE beradi: 50 yoki 200?
3. Model musbat sotuvlarda doim 0 bashorat qiladi. Uning MAPE’si nimaga teng?
4. Haqiqiy qiymatlar: 1, 10 va 100. Qaysi konstant bashorat MAPE’ni minimallashtiradi?
5. Nega kam sotiladigan tovarlari bor assortimentda WAPE MAPE’dan barqarorroq?