Baholar
Sinflash masalalari
Biz Mashinali o’rganish (MO)ning boshlang’ich qismlarini o’rganib chiqdik. Zarur bo’lgan ushbu tushunchalar keyingi qimslarni o’rganish uchun bizga yo’l ochadi. Chunki biror algortimni qanday tarzda natija berayotgani yoki uni qanday qilib tuzish zarurligini bilish ham ma’lum bir boshlang’ich bilimlarni talab qiladi. Xususan, biz Mashinali o’rganish qismida algoritmlarning turini va aynan nima maqsada ushbu algoritmlar kerakligini to’lamlar, algoritmga kiruvchi va chiqivchi namunalar haqida ma’lumotga ega bo’ldik. Bundan keyingi MOga bag’ishlangan qismlarda biz to’g’iridan-to’g’iri ushbu mavjud algoritmlarni o’tganib ketamiz. Albatta, keyinchalik biz o’rgatuvchili o’rganish turiga yana bir qancha turlarni qo’shib ketamiz. Ularni esa o’rni kelganda ta’riflaymiz.
Hozir bu qismda qarab o’tishimiz zarur bo’lgan navbatdagi tushuncha Baholardir. Biz ikki turdagi MO masalasini ta’rifladik, hamda sinflash uchun esa ikkita namuniviy masalani qarab o’tdik. Bu masalalarda tuzilgan algoritmlarni xato(Aniqiq)ligi bilan baho berdik. Endi bu qismda shu baholarni batafsil ko’rib o’tamiz hamda regressiya va sinflash algoritmlari uchun bir qancha baholarni berib, ularning qo’llanish sohasi, yutuqlar va kamchiliklarini umumiy holda berib o’tamiz. Keyinchalik bu baholar asosida biz qolgan algoritmlarni ham tekshirib chiqamiz. Albatta biz bu bo’limda hamma narsalarni qamrab olalmaymiz, chunki biz endi ikki turdagi masalalarga ta’rif berdik. Bu kabi baholar masalalar berilish davomida har xil bo’ladi, lekin ko’pincha bir nechta baho bir algoritmning ishlashni baholash uchun ishlatiladi. Ba’zida bir algoritm aynan bitta masalada ma’lum baho asosida yaxshi natija bersa, yana bir boshqasi bo’yicha umuman yaxshi natija bermaydi.
Bu holni ko’rish uchun keling bizda quyidagicha haqiqiy va algoritm tomonidan aniqlangan natijalarni ko’raylik. Ushbu masalada biz ikkita sinf bor deb tassavur qilamiz, hamda \(\mathbf{y}\in \{0, 1\}\) va \(\mathbf{\hat{y}}\in \{0, 1\}\) orqali mos ravishda haqiqiy qiymatlarni va algoritm topgan qiymatlarni belgilaylik. Ushbi ikki vektorning mos ravishdagi natijalari quyidagi jadvalda berilgan:
# |
\(\mathbf{y}\) |
\(\mathbf{\hat{y}}\) |
---|---|---|
1 |
0 |
0 |
2 |
0 |
0 |
3 |
1 |
0 |
4 |
0 |
0 |
5 |
0 |
0 |
6 |
0 |
0 |
7 |
1 |
0 |
8 |
1 |
0 |
9 |
0 |
0 |
10 |
0 |
0 |
11 |
0 |
0 |
12 |
0 |
0 |
13 |
0 |
0 |
14 |
1 |
0 |
15 |
0 |
0 |
16 |
0 |
0 |
17 |
0 |
0 |
18 |
0 |
0 |
19 |
1 |
0 |
20 |
0 |
0 |
Yuqoridagi jadval 20 ta obyektning \(\mathbf{y}\in \{0, 1\}\) haqiqiy va algoritmning \(\mathbf{\hat{y}}\in \{0, 1\}\) taqribiy qiymatlarini tasvirlaydi. Ushbu qiymatlardan agar biz algoritm to’g’ri topganlarini hisoblasak, bu 15 tasi to’g’iri bo’ladi. Bu soni jami obyektlar soniga bo’lsak u holda biz \(\frac{15}{20}=0.75\), ya’ni 75% obyektni to’g’iri topayabdi. Lekin yaxshilab e’tibor bilan qarasak algoritm faqat hamma obyekt uchun 0 qiymatini chiqarmoqda. Boshqa so’z bilan aytganda hamma namunalarni bitta sinfga tegishli deb qaror chiqarayabdi. Bu esa umuman noto’g’iri. Demak, birinchi ikkita masalada qo’llagan baholash har doim ham o’rinli bo’lmas ekan. Yuqoridagi muammo Sinflar nomutonosibligi deb ataladi, chunki bizda ikkita sinf bor va ular \(0\) va \(1\) orqali belgilangan hamda ulardagi har bir sinfga tegishli namunalarning soni bir yoki bir-biriga yaqin emas. Ushbu masala uchun yillar davomida ko’plab usullar taklif qilingan, lekin hozirgi kunda ham umumiy holda ochiq savollardan biri hisoblanadi. Biz bu muommoni yechish haqida qayg’urmasdan, o’rniga uni aniqlovchi boshqa turdagi baholashni keltirmoqchimiz.
Ushbu baholash usulini muvozanatlashgan aniqlik deb nomlaymiz, ingliz tilida esa balanced accuracy deb ataladi. Bu baholashning mazmuni quyidagicha: har bir sinfdagi algoritm to’g’iri deb topgan natijalar sonini shu sinfdagi namumanalar soniga bo’lamiz; keyin esa hamma natijalarni yig’ib chiqib; oxirida ularni sinflarning umumiy soniga bo’lamiz. Quyida umumiy formulasi:
\begin{equation} M_{aniqlik}=\frac{\sum_{i=1}^{c}\frac{d_i}{\vert \mathbf{K}_i \vert}}{c} \end{equation}
bu yerda \(c\) sinflar soni(hozir \(c=2\)), \(d_i\) \(i\)-sinfdan algoritm to’g’iri topganlar soni (hozir \(d_0=15\) va \(d_1=0\)) va \(\vert \mathbf{K}_i \vert\) har bir sinfdagi umumiy namunalar soni (hozir \(\vert \mathbf{K}_0 \vert=15\) va \(\vert \mathbf{K}_1 \vert=5\)). Odatda sinflash masalari uchun baholash usullari faqat \([0, 1]\) oraliqda qiymat chiqaradi, shunga ko’ra yuqoridagi forumulaning qiymati ham shu oraliqdadir. Keling avval bu baholashni yuqoridagi jadval uchun qo’llasakda keyin ikki baholashining natijalarini muhokama qilsak.
\begin{equation*} M_{aniqlik}=\frac{\sum_{i=1}^{c}\frac{d_i}{\vert \mathbf{K}_i \vert}}{c}=\frac{\sum_{i=1}^{2}\frac{d_i}{\vert \mathbf{K}_i \vert}}{2}=\frac{\frac{15}{15}+\frac{0}{5}}{2}=0.5 \end{equation*}
Ko’rib turganimizdek bu baholash natijasi juda ham kichik, yuqoridagi esa juda yaxshi. Ba’zida yuqoridagi natija bundan ham yaxshi bo’ladi, lekin oxirigi baholash esa juda past bo’ladi. Bu esa ushbu baholashining qanchalik zarur ekanligini bizga tasdiqlaydi.
Bundan tashqari boshqa baholash usullari ham mavjud bo’lib, ulardan ba’zilarini statistika va ehtimollar nazariyasi qismlariga qoldiramiz, chunki ular shu sohalarda yuqori darajada tadqiq etilgan. Biz keyinchalik masalalarimizni ikki baholash usulidan ham doimiy foydalanamiz. Lekin ko’pinchi birinchisi yetarli bo’ladi, chunki biz ko’pchilik holatlarda sinflardagi obyektlarni sonini oldindan bilamiz.
To’plamlar uchun baholar
Biz oldingi ko’rilgan masalalarda bizga berilgan to’plamni ikki qismga ajratdik yoki ikki qims ko’rnishida berilgan. Bu qimslarni esa mos ravishda o’rgatuvchi va sinov to’plamlar deb nomladik. Hozir ushbu ikki to’plam uchun baholarning ma’nolari ustida qisqacha mulohaza yuritamiz. Birinchidan, ikki to’plamning nomlaridan kelib chiqqan holda biz ikkita aniqlik bahosini sinflash muammolari uchun kiritamiz, bular: o’rganish aniqligi va sinov aniqligi. Bu atamalarning ingliz tilidagi nomlari esa training accuracy and test accuracy. Ushbu ikki qiymatning birining ikkinchisidan kattaligiga ko’ra algoritmning o’rganish darajasini belgilaymiz, ular: kam, yetarli hamda ortiqcha o’rgangan. Bu atamalar ingliz tilida mos ravishda underfitting, just fitting va overfitting deb nomlanadi.
Kam o’rganish muammosi bu bir qancha omillarga bog’liq bo’lib, ulardan ba’zilari: modelning kuchsizligi, modelning yetarlicha o’rgatilmagani yoki to’g’iri alomatlar tanlanmaganligidir. Agar algoritmning o’rganish aniqligi uning sinov aniqligidan kichik bo’lsa, ushbu muammo yuzaga chiqadi. Biz yaqin qo’shni algoritmidan MNIST rasmlar ustida olgan natijamizda ushbu holatni uchratmagan edik.
Navbatdagi holat esa odatda shu ikki aniqliklar bir-birga juda yaqin bo’lganda yuz beradi va ushbu holatdni biz kutilgan hol deb nomlaymiz. MNIST rasmlari uchun ushbu holatni to’g’iri deyish mumkin. Lekin umumiy holda yaqin atamasi baholarning turlariga va modelni ishlab chiqayotgan izlanuvchiga bog’liq bo’ladi. Shuning uchun ham biz bu yerda nibiylikka etibor beramiz va aniq biror sonni ayta olmaymiz.
Shunday bo’lsada, odatda biz oxirgi holtaga ko’proq duch kelamiz chunki modellarni hozirgi kunda yetarlicha ko’p parameterli qilishimiz mumkin. Bu kabi holatlarni bitta yoki ikkita algoritmlar bilan umumiy holda yechib bo’lmaydi, ya’ni o’rtadagi holatni yuzaga chiqarish uchun umumiy xulosa ayta olmaymiz. Ushbu bobda aytmoqchi bo’lganimiz esa ushbu holatlarni biz kelajakda uchratamiz va har bir muammoga alohida yondashamiz.
Regressiya masalari
Mashinali o’rganishining birinchi qismida tariflaganimizdek regressiya masalasi sinflash masalasidan keskin farq qiladi hamda biz bunday muammolar uchun baholashni aniqlik deb kiritishimiz ham umumiylikda o’rinli bo’lmaydi. Chunki biz sinflash muammolarirda algoritm to’g’iri topgan javoblar sonini bilish orqali aniqlik bahosini kiritayotgan edik. Bu yerda esa ushbu natijalar diskret sonlar yoki nomlar (guruhning nomlari) bo’lmasdan, odatda haqiqiy son bo’ladi va natijalarni sinflash masalasidagi aniqlik asosida solishtirish bahoning \(0\) qiymat chiqishiga olib keladi. Buning asosiy sababi esa biror \([a, b]\), \(a<b\) haqiqiy sonlardan iborat intervaldagi haqiqiy qiymatlar soni soniqsizligidadir. Boshqa so’z bilan aytganda shu intervaldagi hamma qiymatlar sonini sanab bo’lmaydi. Ammo ba’zida biz faqat diskret qiymat qaytaruvchi model ishlab chiqishimizga ham to’g’iri keladi. Bunday hollarda eng qulayi sifatida yaxlitlab chiqarishni qo’llash mumkin. Masalan, dengiz mollyuskalarining yoshini fizik o’lchamlar asosida aniqlash topshirig’ida biz yoshni butun sonlarda topishimiz kerak. Umumiy olda model haqiqiy natijalar chiqarsada oxir oqibatda biz butun son sifatida yoshni aniqlaymiz.
Bu muammoni yechish uchun, biz vektorlar o’rtasida kiritigan masofa kabi, farq tushunchasini kiritamiz. Keling bu farqlarni topish uchun haqiqiy va taqribiy qiymatlar vektorini mos ravishda, yuqoridagiga o’xshash, \(\mathbf{y}\in [a, b]\) va \(\mathbf{\hat{y}}\in [a, b]\) kabi belgilaylik, faqat ularning qiymatlari ma’lum bir oraliqda bo’lishi mumkin. Eslatma. Biz algoritm taqribiy topgan \(\mathbf{\hat{y}}\) qiymatlarni har doim \([a, b]\) da joylashgan deb ayta olmaymiz, chunki algoritm har doim har xil qiymat qaytarishi mumkin va bu qiymat ushbu intervaldan tashqarida bo’lish holatlari ham uchraydi. Ushbu farqlarni aniqlovchi baholarni biz odatda bir nechta nom bilan aniqlaymiz: yuqotish (loss), xatolik (error) va boshqalar. Bu nomlanishlar har xil soha vakillari tomonidan kiritilgan va mos sohalarda qo’llash uchun qulay hisoblanadi.
Eng avvalgi xatolik funksiyasi bu ikki haqiqiy va taqribiy qiymatlarning ayirmasining musbat qiymatining yig’indisini olamiz. Bu funksiya xudi oldingi darslarimizda o’tilgan yaqinlik masofasiga o’xshaydi, faqat ulardan eng asosiy farqi bu - biz o’rtacha xatoliklarni olamiz. Chunki, odatda bitta namunaning to’g’iri va model qilgan bashorat qilgan qiymatlarining farqini topamiz. Agar shu namunalar soni bittadan ortiqcha bo’lsa, unda biz shu xatoliklarning o’tachasini hisoblaymiz va uni ushbu masalala uchun umumiy xatolik deb qaraymiz. Bu xatolik nomini O’rtacha absolyut xatolik (OAX) deb nomlaymiz.
\begin{equation} OAX(\mathbf{\hat{y}}, \mathbf{y})=\frac{1}{M}\sum_{i=1}^M\vert \mathbf{\hat{y}}_i - \mathbf{y}_i \vert \end{equation}
Ushbu xatolik funksiyasi odatda modelning to’g’iri ishlayotgani yoki ishlamayotganini aniqlash uchun qulay. Lekin biz umumiy modellar qurganimizda ushbu xatolik funksiyasidan ko’ra, xatolik funksiyasining hosilasi uzliksiz bo’lganlarini ko’proq e’tiborga olamiz. Chunki ko’pchilik modellarning parameterlarini topishda hosilalardan foydalanamiz. Quyida shunday eng ko’p ishlatiladigan xatolik funksiyalaridan biri, O’rtacha kvadratik xatolik (OKX), berilgan.
\begin{equation} OKX(\mathbf{\hat{y}}, \mathbf{y}) = \frac{1}{M}\sum_{i=1}^M\left(\mathbf{\hat{y}}_i - \mathbf{y}_i \right)^2 \end{equation}
Ushbu funksiya farqlarni musbatini oladi oldingi xatolik funksiyasiga o’xshab, faqat ularni kvadratga oshirib yozadi. Bu esa bizga ham farqni musbat holatda saqlab qolish ham hosilasi uzliksiz bo’lishini ta’minlaydi. Biz regressiya masalalari uchun shu ikkita xatolik funksiyasi bilan hozircha cheklanamizda keyingi qismlarda boshqa turdagi xatolik funksiyalarini masalamizga zarur hollarda kiritamiz.
[2]:
a = 15.647843
b = 8.5434398
c = a * b
d = c / a
d == b
[2]:
True