Machine learning modeli yasash raketa ilmi emas. Aslida juda sodda matematika ekanini ko'rsatmoqchiman. Tashqaridan qaraganda qo'rqinchli ko'rinishi mumkin, lekin ichida juda oddiy mantiq bor. Boshlash uchun noldan bitta oddiy Uy narxini bashoratlovchi model yasaymiz. Hech qanday kutubxona ishlatmaymiz – faqat matematika va sof Python. Shundan keyin esa mashhur kutubxonalarga o'tamiz va ularning ichida nimalar bo'layotganini aniq tasavvur qila olasiz, chunki avval o'zingiz hammasini qo'lda qurasiz.
Features(x) va Targets(y)
Murakkab kodlarni yozib tashlashdan oldin biz kompyuterlar muammoni qanday "ko'rib" tushuna olishini o'rganishimiz kerak. Tasavvur qiling, siz ko'chmas mulk agentisiz (ha, makler so'zining uzun va o'zbekcha varianti shunday bo‘ladi). Agar sizga kimdir kelib: "Hey, anavi uyni narxi qancha deb o'ylaysan?" desa, siz darhol kallangizga kelgan narxni aytmaysiz deb umid qilaman. Ehtimol avval: "U uyning xajmi qancha o'zi?" deb so'raysiz.
Machine Learning'da 2 ta muhim atama bor: Feature (x) va Target (y).
- Feature (x): bu input ma'lumot — sizda bor informatsiya.
(Masalan: uyning xajmi.) - Target (y): bu output ma'lumot — siz bashorat qilmoqchi bo'lgan qiymat.
(Masalan: uyning narxi.)
Modelning maqsadi oddiy: x ga qarab y ni topish – ya'ni ularning orasidagi matematik bog‘liqlikni o‘rganish.
Kompyuterga biror narsani "o'rgatish" uchun bizga ko'p misollar kerak bo‘ladi. Keling, hozircha 3 ta uy haqida ma'lumotimiz bor deb tasavvur qilamiz:
- Uy A: 600 kv metr → 150,000
- Uy B: 1000 kv metr → 250,000
- Uy C: 1500 kv metr → 375,000
Ko‘p dasturlash tillarida buni array (ro‘yxat) sifatida saqlashimiz mumkin. Masalan, Python’da u quyidagicha ko‘rinadi:
"Magic number" (Weight)
Bizda ma'lumot bor, lekin hali idrok yo‘q. Bizda emas – biz o‘rgatayotgan mashinada. Machine Learning’dagi "intelligence" (intellekt) aslida qandaydir fantastika emas, shunchaki matematik bog‘liqlikni ifodalovchi tenglama, xolos.
Biz hozir mana bunday ko‘rinishdagi munosabatni qidirmoqdamiz:
Bu yerda weight (w) — biz izlayotgan "sehrli son". U input (xajm) outputga (narxga) qanchalik ta'sir qilishini bildiradi. Agar weight katta bo‘lsa, xajmdagi kichik o‘zgarish ham narxni ancha oshiradi.
Endi savol: yuqoridagi uylarda price’ni size’ga aylantirib beradigan umumiy son nechchi? Har bir xajmni bitta son bilan ko‘paytirib, tegishli narxni olamiz. Buni hatto bog‘cha bolasi ham topa oladi – u 250.
Topish formulasi juda oddiy:
Endi model faqat xajmga qarab narxni hisoblay oladi. Juda sodda, lekin juda muhim birinchi qadam.
Loss (Qancha xato qildik?)
Yuqoridagi misolda hamma narsa juda chiroyli edi — har bir uy size * 250 qoidaga hech qanday xatosiz mos keldi. Ammo real hayotda ma'lumot hech qachon bunday ideal bo‘lmaydi.
Tasavvur qiling, yangi uy sotuvga chiqdi:
- Xajmi: 1200 kv metr
- Haqiqiy narxi: 330,000 (balki manzara juda zo‘rdir)
Bizning model (w = 250) bo‘yicha bashorat:
Model 300,000 deb aytyapti, lekin haqiqiy narx 330,000. Farq 30,000. Shu farq — Loss (xato). Uni quyidagicha hisoblaymiz:
Modul belgisidan foydalanishimiz sababi — loss manfiy bo‘lmasligi kerak. Machine learning’ning butun maqsadi: shu xatoni imkon qadar 0 ga yaqinlashtirish.
Hot or Cold (Issiq-sovuq o‘yini)
Endi eng qiziqarli qismiga keldik. Bizda model bor, lossni ham hisoblay olamiz. Lekin hali optimizer – ya'ni weight’ni avtomatik ravishda yaxshilab boradigan mantiq yetishmayapti.
Buni bolalikdagi "issiq-sovuq" o‘yiniga o‘xshatish mumkin. Kimdir siz izlayotgan narsaga yaqinlashsangiz "issiqroq", uzoqlashsangiz "sovuqroq" deydi.
Jarayon taxminan shunday:
- Weight uchun tasodifiy boshlang‘ich qiymat olamiz (masalan, 0).
- Bashorat qilamiz.
- Loss’ni hisoblaymiz.
- Yangilash: agarda xato katta bo‘lsa, weight’ni o‘zgartiramiz.
- Xato kamayguncha takrorlayveramiz.
Gradient Descent
Brute force (bitta-bitta sinab chiqish) bizda faqatgina to‘g‘ri javob kichkina va chiroyli bo‘lgani uchun ishladi. Agar weight 250.4217 yoki 1,000,000 bo‘lsa-chi? Bunda har bir sonni alohida tekshirish juda samarasiz (inefficient) bo‘lib qoladi.
Haqiqiy AI tizimlar bunday qilmaydi. Ular xatolikning "nishabligi"ga qarab aqlli harakat qilishadi. Bu usul Gradient Descent (gradient bo‘ylab pastga tushish) deb ataladi.
Tasavvur qiling, siz tuman bosgan tog‘da yuribsiz:
- Agar yer pastga qarab qiya bo‘lsa – shu tomonga yurasiz.
- Agar tepaga qarab ko‘tarilsa – ortga qaytasiz.
Biz ham xuddi shunday qilamiz:
- Bashorat qilamiz.
- Agar bashorat juda past bo‘lsa, weight’ni oshiramiz (
+ step). - Agar bashorat juda baland bo‘lsa, weight’ni kamaytiramiz (
- step).
Line of Best Fit
Hozirgacha biz bitta uyga juda yaxshi mos tushadigan weight topdik. Ammo real hayotda ma'lumotlar juda chalqanchasiga bo‘ladi – minglab uylar, har xil sharoit, shovqin va noodatiy holatlar (outlier) bo‘ladi.
Misol uchun, faqat bitta xajmga ega bo‘lgan, lekin narxi har xil bo‘lgan 2 ta uy:
- Uy A: 1000 kv metr → 200,000 (ratio: 200)
- Uy B: 1000 kv metr → 300,000 (ratio: 300)
Balki 300,000 lik uyning ta'miri zo‘rdir yoki manzili yaxshi? Qanday bo‘lmasin, bitta weight ikkala uyni ham ideal qilib bera olmaydi:
- Agar weight 200 bo‘lsa, Uy A ideal, Uy B xato.
- Agar weight 300 bo‘lsa, Uy B ideal, Uy A xato.
Mukammal yechim bo‘lmaganda biz eng kam xato qiladigan yechimni qidiramiz. Ya'ni chiziq hamma nuqtalardan iloji boricha o‘rtadan o‘tishi kerak. Bunga Line of Best Fit (eng mos chiziq) deyiladi.
Uni topish uchun biz Total Error (umumiy xato) ni hisoblaymiz:
Qaysi weight umumiy xatoni eng kam qilsa, o‘sha eng yaxshi weight bo‘ladi.
Ma'lumotlar:
- Uy A: size = 1000, price = 200,000
- Uy B: size = 1000, price = 300,000
Sizga topshiriq(cha):
calculate_total_error(weight)funksiyasini yuqoridagidek yozib chiqing.- Funksiya ichida hamma uylar uchun xatoni hisoblang (masalan, yuqoridagi 2 uy).
- Har birining xatosini qo‘shib, umumiy natijani qaytaring.
- Va funksiyangizga
calculate_total_error(250)vacalculate_total_error(200)ni hisoblatib ko‘ring.
Qaysi biri kamroq xato qilsa, o‘sha weight yaxshiroq hisoblanadi.
Yetishmayotgan bo‘lak (Bias)
Hozirgacha biz faqat shu formuladan foydalandik:
Bu yerda bitta muammo bor: agar uyning xajmi 0 bo‘lsa, modelning bashorati ham 0 chiqadi. Bu esa real hayotda mantiqsiz. Hatto kichkina kulba ham yerda turadi, yerning o‘zi ham pul turadi. Maktabda ko‘rgan chiziqli tenglamani eslang:
Machine learning’da ham shu g‘oya ishlatiladi, faqat belgilar boshqacha:
- w (weight): input (x) natijaga qanchalik ta’sir qilishini bildiradi — chiziqning qiyaligi.
- b (bias): x = 0 bo‘lganda ham chiqadigan “bazaviy” qiymat — yerning o‘zi narxi, boshlang‘ich nuqta.
Endi formulamiz shunday ko‘rinishga keladi:
Natija 300,000 bo‘lib chiqadi.
Aynan shu (w * x + b) bitta neyronga teng.
Zamonaviy AI’lar nima qiladi? Shunday millionlab, milliardlab (w * x + b) larni bir-biriga ulab qo‘yadi, xolos.
Kutubxonalarga o‘tish / Sklearn bilan xuddi shu ish
Hozirgacha hamma narsani qo‘lda yozdik:
- O‘zimiz
predictfunksiyalarini yozdik. - O‘zimiz weight topdik.
- O‘zimiz xato (loss) ni hisobladik.
Bu o‘rganish uchun zo‘r, lekin real loyihalarda hech kim har safar shunday “noldan” model yozmaydi. Buning uchun allaqachon million marta sinab ko‘rilgan kutubxonalar bor. Ulardan eng mashhurlaridan biri Scikit-Learn (sklearn).
Kutubxona bilan mantiq taxminan shunday ishlaydi:
model = LinearRegression()— bo‘sh model yaratamiz.model.fit(x, y)— modelga ma’lumot berib,wvabni ichida o‘rgatib oladi.model.predict(x)— o‘rganilgan formula asosida yangi qiymatlarni bashorat qiladi.
Bitta nozik joy: bunday kutubxonalar odatda ma’lumotni 2D formatda kutadi.
Biz ilgari sizes = [600, 1000, 1500] deb yozgan edik — bu 1D ro‘yxat.
Lekin real hayotda uy faqat xajmdan iborat bo‘lmaydi: xonalar soni, yoshi, manzili va hokazo bo‘ladi. Shuning uchun kutubxona bunday ko‘rinishdagi ma’lumotni kutadi:
[[600], [1000], [1500]]
Har bir ichki ro‘yxat — bitta uyning feature’lari. Quyida aynan shu uy narxi masalasini sklearn bilan qiladigan mini misol. Biz bu yerda kodni faqat ko‘ramiz, uni o‘z kompyuteringizda ishlatishingiz mumkin. Chunki bizda bu kutubxona o'rnatilmagan
Bu yerda:
trainfunksiyasi aslida biz yuqorida qo'lda yozgan barcha steplarni bitta qadamga yig'ib beradi.model.fitichida weight va bias topiladi.model.predictesa aslida(size * w) + bni bajaradi — lekin biz endi matematik detalga emas, biznes muammoga ko'proq e'tibor qaratishimiz mumkin.
Machine Learning Asoslari Viktorinasi
Machine Learning asosiy tushunchalari haqida bilimingizni tekshiring
Question 1 of 6
Machine Learning'da Feature (x) nima?


