To‘r bo‘yicha qidiruv (grid search)


ULASHISH

Grid qidiruvi

Mashinani o‘rganish modellarining aksariyati modelni o‘rganish usulini o‘zgartirish uchun sozlanishi mumkin bo‘lgan parametrlarni o‘z ichiga oladi. Misol uchun,sklearndan logistik regressiya modeli, modelning murakkabligiga ta’sir qiluvchi, tartibga solishni boshqaruvchi C parametriga ega.

C uchun eng yaxshi qiymatni qanday tanlaymiz? Eng yaxshi qiymat modelni o‘rgatish uchun ishlatiladigan ma’lumotlarga bog‘liq.


U qanday ishlaydi?

Usullardan biri turli qiymatlarni sinab ko‘rish va keyin eng yaxshi ball beradigan qiymatni tanlashdir. Ushbu usul grid qidiruvi sifatida tanilgan. Agar biz ikki yoki undan ortiq parametrlar uchun qiymatlarni tanlashimiz kerak bo‘lsa, biz qiymatlar to‘plamining barcha kombinatsiyalarini baholaymiz va shu bilan qiymatlar panjarasini hosil qilamiz.

Misolga kirishdan oldin, biz o‘zgartirayotgan parametr nima qilishini bilish yaxshidir. C ning yuqori qiymatlari modelni bildiradi, o‘quv ma’lumotlari haqiqiy dunyo ma’lumotlariga o‘xshaydi, mashg‘ulot ma’lumotlariga kattaroq og‘irlik qiladi. C ning past qiymatlari esa buning aksini qiladi.


Standart parametrlardan foydalanish

Birinchidan, faqat asosiy parametrlar yordamida panjara qidiruvisiz qanday natijalarni yaratishimiz mumkinligini ko‘rib chiqaylik.

Boshlash uchun avval biz ishlayotgan ma’lumotlar to‘plamini yuklashimiz kerak.

from sklearn import datasets
iris = datasets.load_iris()

Modelni yaratish uchun biz X mustaqil o‘zgaruvchilar to‘plamiga va y bog‘liq o‘zgaruvchiga ega bo‘lishimiz kerak.

X = iris['data']
y = iris['target']

Endi biz iris gullarini tasniflash uchun logistik modelni yuklaymiz.

from sklearn.linear_model import LogisticRegression

Modelni yaratish, model natijani topishini ta’minlash uchun max_iter ni yuqoriroq qiymatga o‘rnatish.

Logistik regressiya modelida C uchun standart qiymat 1 ekanligini yodda tuting, biz buni keyinroq taqqoslaymiz.

Quyidagi misolda biz iris ma’lumotlar to‘plamini ko‘rib chiqamiz va logistik regressiyada C uchun o‘zgaruvchan qiymatlarga ega modelni o‘rgatishga harakat qilamiz.

logit = LogisticRegression(max_iter = 10000)

Modelni yaratganimizdan so‘ng, biz modelni ma’lumotlarga moslashtirishimiz kerak.

print(logit.fit(X,y))

Modelni baholash uchun biz ball usulini ishlatamiz.

print(logit.score(X,y))

Misol

from sklearn import datasets from sklearn.linear_model import LogisticRegression iris = datasets.load_iris() X = iris['data'] y = iris['target'] logit = LogisticRegression(max_iter = 10000) print(logit.fit(X,y)) print(logit.score(X,y))
Misolni ishga tushirish »

Standart C = 1 sozlamasi bilan biz 0.973 ballga erishdik.

Keling, farq qiymatlari 0,973 bo‘lgan panjara qidiruvini amalga oshirish orqali yaxshiroq ish qila olamizmi yoki yo‘qligini bilib olaylik.



Grid qidiruvini amalga oshirish

Biz avvalgi qadamlarni bajaramiz, bundan tashqari bu safar biz C uchun bir qator qiymatlarni o‘rnatamiz.

Qidirilayotgan parametrlar uchun qaysi qiymatlarni o‘rnatishni bilish domen bilimi va amaliyotining kombinatsiyasini talab qiladi.

C uchun standart qiymat 1 bo‘lgani uchun biz uning atrofidagi qiymatlar oralig‘ini o‘rnatamiz.

C = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]

Keyin biz C qiymatlarini o‘zgartirish uchun for siklini yaratamiz va har bir o‘zgarishda modelni baholaymiz.

Avval ballni saqlash uchun bo‘sh list yaratamiz.

scores = []

C qiymatlarini o‘zgartirish uchun biz qiymatlar oralig‘ida aylanishimiz va har safar parametrni yangilashimiz kerak.

for choice in C:
  logit.set_params(C=choice)
  logit.fit(X, y)
  scores.append(logit.score(X, y))

Ro‘yxatda saqlangan ballar bilan biz C ning eng yaxshi tanlovi nima ekanligini baholashimiz mumkin.

print(scores)

Misol

from sklearn import datasets from sklearn.linear_model import LogisticRegression iris = datasets.load_iris() X = iris['data'] y = iris['target'] logit = LogisticRegression(max_iter = 10000) C = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] scores = [] for choice in C:   logit.set_params(C=choice)   logit.fit(X, y)   scores.append(logit.score(X, y)) print(scores)
Misolni ishga tushirish »

Natijalar tushuntirildi

Biz C ning pastki qiymatlari 1 ning asosiy parametridan yomonroq ishlaganligini ko‘rishimiz mumkin. Biroq, biz C qiymatini 1.75ga oshirganimizdan so‘ng, model yuqori aniqlikni boshdan kechirdi.

Ko‘rinishidan, C ni bu miqdordan ortiq oshirish model aniqligini oshirishga yordam bermaydi.


Eng yaxshi amaliyotlar haqida eslatma

Biz logistik regressiya modelimizni o‘rgatish uchun ishlatilgan ma’lumotlardan foydalangan holda topdik. Agar model ushbu ma’lumotlarga juda yaqin bo‘lsa, u ko‘rinmas ma’lumotlarni bashorat qilishda unchalik yaxshi bo‘lmasligi mumkin. Ushbu statistik xatolik haddan tashqari o‘rnatish deb nomlanadi.

O‘quv ma’lumotlari bo‘yicha ballar bilan chalg‘itmaslik uchun biz ma’lumotlarimizning bir qismini chetga surib, modelni sinab ko‘rish uchun foydalanishimiz mumkin. Adashib qolmaslik va haddan tashqari moslashishga yo‘l qo‘ymaslik uchun poezd/testni ajratish haqidagi ma’ruzaga qarang.


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!