Табыстар:
- Домендік біліммен мағыналы туынды мүмкіндіктерді шығару және категориялық санаттарды сәйкес әдістермен кодтау мүмкіндігі (бір ыстық, белгі, мақсат)
- Үлгі түріне (стандарттау, қалыпқа келтіру) сәйкес сандық айнымалыларды масштабтау және қажетсіз немесе толық емес масштабтауды болдырмау мүмкіндігі
- Жаттығу/сынақ бөлінгеннен кейін және тек жаттығудан кейін барлық түрлендірулерді үйрену арқылы мүмкіндіктердің ағып кетуін болдырмау мүмкіндігі
Машиналық оқытуда ескі сөз бар: «Қолданбалы машиналық оқыту - бұл негізінен инженерия». Модельдің жетістігі көбінесе қандай алгоритмді таңдағаныңызға емес, үлгіге қандай кірістер бергеніңізге байланысты болады. Функциялық инженерия - бұл модель үйренуге болатын бастапқы деректерден мағыналы сигналдар жасау өнері. Жасанды интеллект осы кезеңде идеялардың бай көзі болып табылады: «осы деректерден қандай мүмкіндіктерді шығаруға болады» деп сұрағанда, онда ондаған ұсыныстарды тізімдейді. Бірақ бұл ұсыныстардың кейбіреулері құнды болуы мүмкін, кейбіреулері пайдасыз болуы мүмкін, ал кейбіреулері қауіпті болуы мүмкін (ағып кету). Оны реттеу сіздің міндетіңіз.
Неліктен инжиниринг
Шикі деректер модельге ең жақсы пішінде сирек келеді. «Туған күні» бағанының өзі мағынасыз болғанымен, одан жасалған «жас» мәні күшті сигнал болып табылады. «Тапсырыс уақыты белгісінен» «апта күні», «күн/түн», «бұл мереке ме» сияқты атрибуттарды шығаруға болады. Сіз арақатынасты («қарыз/табыс қатынасы») шығару үшін екі бағанды біріктіре аласыз. Мұнда функциялық инженерия домендік білімді математикалық сигналға аударады; Міне, сондықтан да бұл кезең адами ақыл-ойды қажет етеді.
Категориялық айнымалыларды сандарға түрлендіру: кодтау
Модельдер әдетте мәтінмен емес, сандармен жұмыс істейді. Категориялық айнымалыларды (қала, түс, өнім түрі сияқты) сандарға түрлендіру кодтау деп аталады. Үш жалпы әдіс:
Бір жылдам кодтау: әрбір санат үшін 0/1 мәні бар бөлек бағанды ашады. «Қала» үшін Ыстамбұл, Анкара, Измир бағандары қалыптасады; Тұтынушы Стамбулдан болса, тек сол баған 1 болады. Санаттардың саны аз болған кезде өте қолайлы; Егер санаттар тым көп болса, ол жүздеген бағандарды шығарады (бұл «өлшемді жарылыс» деп аталады).
Label encoding: Gives a number to each category (Istanbul=0, Ankara=1). It's simple, but it may accidentally teach the model a sequence (like Ankara > Istanbul); so it is used with caution in unordered categories.
Target encoding: Replaces each category with the average of the target variable in that category. It is very powerful, but the most dangerous source of leakage: if you take into account the target of the test data, the model sees the future. It should be calculated only from training data and carefully (within cross-validation).
Scaling: large numbers do not overwhelm the model
Some models (distance-based ones, linear models, neural networks) are sensitive to the scale of the variables. If "income" (0-500,000) and "age" (0-100) fall into the same pattern, income may dominate simply because it is larger. Масштабтау мұны түзетеді. Екі жалпы әдіс: стандарттау (әрбір мәнді «орташа мәннен қанша стандартты ауытқуға» түрлендіреді) және қалыпқа келтіру (min-max нормализация — мәндерді 0-1 диапазонына қысады). Tree-based models (decision trees, random forest) are scale insensitive, they do not require scaling.
Абайлаңыз: Масштабтау және кодтау параметрлері (орташа, стандартты ауытқу, санат-орташа салыстыру) тек оқу деректерінен есептелуі керек, содан кейін сынақ деректеріне де бірдей қолданылуы керек. Сынақ деректерін қосу ағып кету болып табылады және сіздің үлгіңізді бұрынғыдан жақсырақ етеді.
Функционалдық инженериядағы ағып кетудің жүрегі
Функцияларды генерациялау - бұл деректердің ағып кетуі жиі пайда болатын жер. Екі әдеттегі қате: Уақыттың ағып кетуі — болашақ ақпаратты қамтитын мүмкіндікті шығару («соңғы 30 күндегі орташа мәнді» есептеу кезінде болжамды күннен кейінгі күндерді қоса). Статистиканың ағып кетуі — жаттығу/сынақ бөлінуіне дейінгі барлық деректерден мүмкіндікті (орташа масштабтау, мақсатты кодтау мәні) есептеу. Ереже: бірінші және тек жаттығу деректерінен пойыз/сынақ бөлуді орындағаннан кейін әрбір түрлендіруді үйреніңіз. Мұны жүйелі түрде жасаудың ең қауіпсіз жолы - құбыр желісін пайдалану - барлық түрлендірулерді бір тізбекте жинайтын және оларды бөлінгеннен кейін қолданатын құрылым.
Әдіс
не үшін
Ағып кету қаупі
ескертпе
Бір жылдам кодтау
Бірнеше санаттары бар айнымалы
төмен
Өлшемді бірнеше санатта жарып жібереді
Белгілерді кодтау
Сұрыпталған санат
төмен
Тәртіпсіздік дұрыс емес тәртіпті үйретеді
мақсатты кодтау
Көп санатты, күшті сигнал
өте жоғары
Тек білімнен, түйіндемеде
стандарттау
Сызықтық/қашықтық модельдер
орташа
Параметр тек білімге байланысты
Уақыт терезесі мүмкіндігі
уақыт қатары
жоғары
Болашақты қосыңыз
үш шағын іс
1-жағдай – Бағалы мүлік. Несие тобы шикі «айлық кіріс» және «ай сайынғы қарызды төлеу» бағандарынан «қарыздың кіріске қатынасы» мүмкіндігін жасады. Бұл жалғыз туынды мүмкіндік үлгі дәлдігін 71%-дан 79%-ға дейін арттырды; өйткені тәуекелді нақты анықтайтын абсолютті табыс емес, мөлшерлеме болды. Сабақ: домендік біліммен құрылған коэффициенттер күшті сигналдар болып табылады.
2-жағдай — Мақсатты кодтау ағуы. Бір команда «почталық индексті» мақсатты кодтауы бар санға түрлендірді (сол аймақтағы орташа шығын жылдамдығы), бірақ бөлуге дейін мұны барлық деректерден жасады. Модель сынақ жиынтығында 94% берді, өндірісте 68% дейін төмендеді. 6 апталық күш-жігер босқа кетті. Сабақ: мақсатты кодтау тек оқу барысында мұқият орындалады.
3-жағдай – масштабтауды ұмыту. Бір талдаушы кірісті (0-400 000) және тұтынушы жасын (18-75) масштабтаусыз қашықтыққа негізделген модельге берді. Модель жастық әсерді жойып, тек табысқа қарады. Масштабтау қосылған кезде сегменттеу мағыналы болды. Сабақ: қашықтық/сызықтық модельдерде масштабтау назардан тыс қалмайды.
Көшірілетін төрт үлгі
1) Функция идеясын құру (жою сізге байланысты):
Сіздің рөліңіз: инженерлік көмекші. Менің df бағандарым: туған_күн, тапсырыс_уақыты (уақыт белгісі), кіріс_tl, қарыз_tl, қала, өнім_санаты. Нысаналы: «несие өтеле ме» (0/1). Осы бағандардан жасауға болатын 15 мүмкіндікті ұсыныңыз; әрқайсысы үшін ағып кету қаупін (төмен/орташа/жоғары) көрсетіңіз. Болашақ ақпаратты қамтитындарды анық белгілеңіз.
2) Қауіпсіз кодтау (пост-бөлу):
"Қаланы" және "өнім_санатын" бір уақытта кодтайтын кодты жазыңыз. МАҢЫЗДЫ: кодтауды тек жаттығу деректеріне сәйкестендіру, содан кейін сынақ деректерін түрлендіру (sklearn OneHotEncoder көмегімен). Білім берудегі көрінбейтін санатты (handle_unknown) қалай өңдейтініңізді түсіндіріңіз.
3) Құбырмен ағып кетусіз түрлендіру:
Set up sklearn Pipeline: apply StandardScaler to numeric columns, OneHotEncoder to categorical columns, add a classifier at the end. Guarantee all transformations are learned AFTER the train/test split and only from training. Кодты түсіндіріңіз және неге ол ағып кетпейді.
4) Уақыт терезесі мүмкіндігі (ағып кетуді бақылау):
Әрбір тұтынушы үшін "соңғы 30 күндегі тапсырыстар саны" төлсипатын жасаңыз, бірақ болжамды күннен кейінгі деректерді ЕШҚАШАН қоспаңыз. Explain line by line that the code does not look into the future. Мен анықтамалық күн бағанасын беремін.
Әлсіз шақыру / Күшті шақыру
Әлсіз шақыру:
Бұл деректерге жақсы қасиеттерді қосыңыз.
“Good” is undefined, the target is unclear, there is no leakage control. AI кездейсоқ, мүмкін ағып кететін мүмкіндіктерді жасайды.
Күшті шақыру:
Сіздің рөліңіз: инженер-функция. Мақсат: "30 күндегі шығын" (0/1), болжалды сілтеме күні: сақтау_күні. df.Тапсырмада транзакциялар тарихы бар: 8 мүмкіндікті жасаңыз, ӘРСІЗ үшін «Болжау кезінде менде бұл ақпарат бар ма?» деген сұраққа жауап беріңіз. Adding the date after the reference date in time window features. Кодты пойыз/сынақ бөлімінен кейін орындалатын құбырмен үйлесімді түрде жазыңыз.
Мұнда мақсат, анықтамалық уақыт және ағып кетуді бақылау басынан бастап анықталады.
Жалпы қателер
- Бөлу алдында барлық деректерден түрлендіруді үйрену. Масштабтау/кодтау параметрі сынақ деректерін көрсе, ағып кету орын алады.
- Мақсатты кодтауды ұқыпсыз пайдалану. Бұл ең күшті, бірақ ең ағып кететін әдіс; тек жаттығудан, кросс валидацияда.
- Уақыт терезесі мүмкіндігімен болашақты қосу. Егер «соңғы 30 күн» есебі болжамды күннен кейін енгізілсе, модель болашақты көреді.
- Ағаш үлгісінде қажетсіз масштабтау және сызықтық модельде толық емес масштабтау. Масштабтау шешімдері үлгі түріне сәйкес қабылданады.
- Жасанды интеллекттің әрбір ұсынысын сұрақсыз қосу. Ұсыныстар пайдасыз және ағып кететін мүмкіндіктерді қамтуы мүмкін.
Кеңес: Сіз жасаған әрбір мүмкіндік үшін бір сұрақты жазыңыз: «Болжам жасаған кезде менде бар ақпарат арқылы бұл мәнді есептей аламын ба?» Егер жауап нақты «иә» болмаса, мүмкіндікті пайдаланбаңыз. Бұл жалғыз тәртіп мүмкіндіктерге қатысты көптеген ағып кетулерді жояды.
Қысқаша
Функциялық инженерия - бұл бастапқы деректерден мағыналы сигналдар жасау өнері және көбінесе алгоритмге қарағанда модельдің сәттілігін анықтайды. Категориялықтарды кодтау (бір ыстық, белгі, мақсат), сандарды масштабтау (стандарттау, нормалау) және домендік біліммен туынды мүмкіндіктерді шығару негізгі құралдар болып табылады. Бірақ бұл фаза сонымен қатар ағып кетудің негізі болып табылады: барлық түрлендірулерді жаттығу/сынақ бөлінгеннен кейін және тек оқу деректерінен үйрену керек. AI көптеген идеяларды тудырады; Құнды және қауіптіні ажырататын адамның пайымдауы.
Қолданбалы тапсырма
Мақсатты айнымалыны таңдап, бар бағандардан кемінде бес туынды мүмкіндікті құрастырыңыз. Олардың әрқайсысына жазбаша түрде «болжау кезінде мен қол жетімдімін бе» деген сұраққа жауап беріңіз және кем дегенде біреуін «ағып кету қаупі жоғары» ретінде жойыңыз. Then code the secure features in a pipeline to be implemented post-partition.
бақылау парағы
- [ ] Пойыз/сынақ бөлінгеннен кейін барлық түрлендірулерді қолдандым ба?
- [ ] Мен жаттығулардан тек масштабтау/кодтау параметрлерін үйрендім бе?
- [ ] Әрбір мүмкіндік үшін "болжау кезінде менде бар ма" деген сұраққа жауап бердім бе?
- [ ] Мақсатты кодтау сияқты жоғары тәуекелді әдістерге ерекше көңіл бөлдім бе?
- [ ] Үлгі түріне (ағаш/сызықтық) сәйкес масштабтауды шештім бе?