Mavzu: Modelni baholash va tanlash. Tasniflash aniqligini oshirish usullari
Baholashning asosiy jihatlari quyidagilardan iborat:
Modelning ishlashini xolis baholash
Mashinani o'rganish algoritmlari bilan umumiy muammolarni hal qilish
Mashina modelini o'rnatish
Turli xil ishlash ko'rsatkichlari yordamida bashoratli modellarni baholash
Konversiyaga asoslangan ish jarayoni - ushbu bo'limda scikit-learn har qanday miqdordagi ishlov berish bosqichlarini o'z ichiga olgan modelni moslashtirish va yangi ma'lumotlarni bashorat qilish uchun Pipline sinfidan foydalanadi.
Ma'lumotlarni o'zgartirish va baholash operatsiyalarini konversiya liniyasiga integratsiya qilish va ishlashni optimallashtirish uchun ko'plab o'rganish algoritmlari turli funktsiyalarning qiymatlarini bir xil diapazonga o'lchashni talab qiladi. Ma'lumotlar to'plamini tahlil qilish uchun logistik regressiya modellari kabi chiziqli tasniflagichlardan foydalanishdan oldin, biz uning xususiyat ustunlarini standartlashtirishimiz kerak. Mos ravishda o'quv ma'lumotlar to'plami va test ma'lumotlar to'plamida modellashtirish va ma'lumotlarni o'zgartirishni amalga oshirishimiz shart emas, lekin biz StandardScaler, PCA va LogisticRegression ob'yektlarini konversiya liniyasi orqali ketma-ket ulaymiz:
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
pipe_lr=Pipeline([('scl',StandardScaler()),('pca',PCA(n_components=2)),('clf',LogisticRegression(random_state=1))])
pipe_lr.fit(X_train,y_train)
print('Test Accuracy:%.3f'%pipe_lr.score(X_test,y_test))
Konversiya liniyasi ob'yekti kirish sifatida kortejlar ketma-ketligini oladi, bunda har bir kortejdagi birinchi qiymat satr bo'lib, u har qanday identifikator bo'lishi mumkin, biz undan konversiya liniyasidagi elementlarga kirish uchun foydalanamiz va kortejning ikkinchi qiymati Value transformatori bo’ladi, Yoki scikit-learnda baholovchi bo’ladi.
Konversiya liniyasi scikit-learnda ma'lumotlarni oldindan qayta ishlash uchun sinflarni o'z ichiga oladi va baholovchini ishga tushuradi. Oldingi kod misolida, konversiya liniyasida ikkita oldindan ishlov berish bosqichi mavjud, ya'ni ma'lumotlarni o'lchash va o'zgartirish StandardScaler. PCA va logistik regressiya klassifikatori baholovchi sifatida ishlatiladi.
from IPython.display import Image
Model ishlashini baholash uchun k-qatlamali o'zaro tekshirishdan foydalanamiz.
Agar model juda oddiy bo'lsa, u noto'g'ri muammoga duch keladi (katta og'ish) va model juda murakkab o'quv ma'lumotlariga asoslangan bo'lsa, bu haddan tashqari moslashish muammosiga (yuqori farq) olib keladi.
Ushlab turish usuli - Holdover usuli bilan biz asl ma'lumotlar to'plamini o'quv ma'lumotlar to'plamiga va test ma'lumotlar to'plamiga ajratamiz: birinchisi modelni o'rgatish uchun, ikkinchisi esa ishlashni baholash uchun ishlatiladi.
Ammo, noma'lum ma'lumotlarni bashorat qilishda modelning ishlashini yanada yaxshilash uchun biz turli parametr sozlamalarini sozlashimiz va solishtirishimiz kerak. Bu jarayon model tanlash deb ataladi, bunda biz berilgan muammo uchun optimal qiymatni topish uchun parametrlarni sozlash jarayonini bildiramiz (giperparametr deb ham ataladi).
Model tanlashda kechikishdan foydalanishning eng yaxshi usuli ma'lumotlarni uch qismga bo'lishdir: o'quv ma'lumotlar to'plami, tekshirish ma'lumotlar to'plami va test ma'lumotlar to'plami.
Saqlash usulining kamchiliklaridan biri shundaki, model samaradorligini baholash o'quv ma'lumotlar to'plamini o'qitish va tasdiqlash kichik to'plamlariga bo'lish usullari: turli namunalar uchun baholash natijalari har xil bo'ladi.
K-qatlama o'zaro tekshirish - K-qatlama o'zaro tekshirishda biz o'quv ma'lumotlar to'plamini takrorlamasdan tasodifiy ravishda k ga bo'lamiz, shundan k-1 modelni o'rgatish uchun ishlatiladi va qolgan 1 sinov uchun ishlatiladi. Ushbu jarayonni k marta takrorlang va biz k modelni va modelning ishlashini baholaymiz
Quyidagilar scikit-learn-da StratifiedKFold iteratori yordamida namoyish etilgan.
Do'stlaringiz bilan baham: |