Печалби:
- Възможност за определяне на типа проблем (класификация, регресия, групиране) и критерии за успех според реалната цена на работата
- Възможност за честно разделяне на данните (без да се докосва наборът от тестове; хронологично във времевия ред) и създаване на база за оценка без течове
- Възможност за избор на интерпретируем модел, като започнете с проста базова линия и добавите сложност само когато го заслужава.
Досега събрахме данни, почистихме ги, проучихме ги и създадохме функции. Сега стигаме до истинската работа, изграждането на модел. Моделът е математическа структура, която научава модел от данни и произвежда прогнози за нови ситуации. Но най-критичната част от изграждането на модел не е самият код, а двете решения, които го предхождат: дефиниране на правилния проблем и правилно разделяне на данните. AI е мощен съветник при избор на алгоритъм, писане на код и настройка на параметри; но човек сам решава какво да прогнозира и какво означава успех. Лошо дефиниран проблем няма да работи дори с перфектно написан модел.
Първо дефиниране на проблема: какво прогнозираме
Всяка работа по моделиране започва с въпрос и този въпрос определя вида на модела. Класификация — изходът е категория: „Този клиент ще напусне ли или ще остане?“, „Фалшива ли е тази транзакция?“. Регресия (на английски regression - изходът е число): "Колко струва тази къща?", "Колко поръчки ще дойдат следващия месец?". Групиране (разделяне на немаркирани данни в естествени групи): „На колко естествени сегмента са разделени клиентите ми?“.
Втората част от изложението на проблема е критерият за успех: какво означава този модел да бъде „добър“? В модел на измама, пропускането на измамник е много по-скъпо от случайното блокиране на честен клиент; Следователно на преден план излиза не "общата точност", а "степента на залавяне на измамници". Ако не дефинирате този критерий от самото начало, заедно със собственика на бизнеса, ще се окажете с „много точен“ модел, който не работи (ще навлезем по-дълбоко в показателите в Раздел 7).
Внимание: „Точността“ може да бъде подвеждаща. Ако 10 от 1000 транзакции са измамни, един глупав модел, който казва, че „нито една не е измамна“, ще даде 99% точност, но няма да хване нито един измамник. Изберете критерии за успех въз основа на реалната цена на проблема.
Разделяне на обучение/тест: честно изследване на модела
Тестването на модел с данните, които е научил, е като да зададете на студента същите въпроси, които е изучавал на изпита; Той получава високи оценки, но не показва това, което наистина знае. Така че разделяме данните на две (често три):
- Набор за обучение (комплект за обучение на английски, обикновено 70-80%): Моделът се учи на това.
- Тестова серия (тестова серия, обикновено 20-30%): Моделът изобщо не вижда това; тук се измерва реалното представяне.
- Набор за валидиране: Междинен набор, използван за настройка на модела (кой параметър е по-добър); за да поддържа тестовия комплект "чист".
Най-основното правило: тестовият комплект никога не се докосва по време на тренировка. Мащабиране, кодиране, избор на функции — всички те просто се научават от набора за обучение, след което се прилагат за тестване (принцип на изтичане от Раздел 5). Тестовият комплект е първият път, когато моделът вижда реалния свят; Ако го включите твърде рано, никога няма да разберете истинското представяне.
Изключение от времеви серии: Ако вашите данни зависят от времето (продажби, фондов пазар, търсене), не се извършва произволно разделяне. Тъй като произволното разделяне кара модела да вижда бъдещето и да предсказва миналото - това е изтичане. Вместо това разделете хронологично: тренирайте със стария период, тествайте с новия период.
Избор на алгоритъм: от прост към сложен
Най-честата грешка на начинаещите е да започнат с най-сложния модел. Правилният подход е обратният: първо установете проста базова линия. "винаги познайте класа на мнозинството" в класификация; "винаги оценявайте средната стойност" в регресия. Този глупав модел дава базова линия; Ако действителният ви модел не може да премине това, има проблем. След това преминете към прости и интерпретируеми модели.
модел
Тип проблем
силна страна
слабост
Базово ниво (мнозинство/средно)
и двете
Дава бенчмарк
не се учи
Логистична регресия
Класификация
Просто, интерпретируемо
Само линейна зависимост
Линейна регресия
регресия
Просто, бързо
линейно предположение
дърво на решенията
и двете
интерпретируем
Лесни запаметявания
произволна гора
и двете
Здрав, издръжлив
По-малко интерпретируем
Градиентно усилване (XGBoost и др.)
и двете
много силен
Трудна настройка, риск от запаметяване
Правило: изберете най-простия „достатъчно добър“ модел. Интерпретируемостта е по-ценна от властта в повечето бизнес контексти; По-добре е да обясните отхвърлянето на заема „защото съотношението дълг/доход е високо“, отколкото „защото черната кутия казва така“.
три мини калъфа
Случай 1 — Неправилна дефиниция на проблема. Екип изгради класификационен модел въз основа на „удовлетворен ли е клиентът“, но избра „точност“ като критерий за успех. В данните 88% от клиентите са доволни; Моделът получи 88% точност, като нарече всички „доволни“ и никога не улови недоволните – въпреки че истинската цел беше да ги намерим. Урок: изберете критерии за успех въз основа на истинската цел.
Случай 2 — Изтичане на време в отделението. В проект за прогнозиране на търсенето данните бяха разделени на случаен принцип. Моделът даде 93% точност, но се срина в производството, тъй като по време на обучението беше предсказал януари, след това ноември, с данни за декември - той беше видял бъдещето. Когато преминахме към хронологично разделяне, действителната производителност се увеличи до 74%. Урок: хронологично разделение във времеви редове.
Случай 3 — Ненужна сложност. Един анализатор започна директно с дълбока невронна мрежа, настройваше я в продължение на седмици и получи 81% точност. Тогава един колега получи 80% с 20 реда логистична регресия — много по-бързо, интерпретируемо и по-лесно за поддръжка. Урок: започнете с базова линия и прост модел, добавете сложност, когато го заслужава.
Четири копируеми шаблона
1) Изясняване на дефиницията на проблема:
Вашата роля: консултант по моделиране. Помогнете ми да дефинирам тази работа: „Искам да намаля оттока на клиентите.“ Попитайте ме и изяснете: (1) това класификация ли е или регресия, (2) каква точно е целевата променлива и как трябва да бъде дефинирана, (3) какви трябва да бъдат критериите за успех и защо. Решението е мое; вие представяте въпросите и опциите.
2) Безопасно отделение за обучение/тест:
Разделете моя df на обучение/тестване 80%/20%. Поддържайте класово разпределение (стратифициране).random_state=42. Това НЕ Е ВРЕМЕВА ПОРЕДИЦА (независими наблюдения). Отпечатайте класовото съотношение на всеки комплект след разделянето. Просто дайте кода за разделяне на тестовия набор, без да прилагате трансформация.
3) Хронологично разделение на времевите редове:
Данните зависят от времето (колона с дата: order_date). НЕ произволно, разделете хронологично: най-старото 80% обучение, най-новото 20% тестване. Разпечатайте диапазоните от дати за обучение и тестване, за да мога да проверя, че бъдещето не е изтекло.
4) Задаване на базова линия:
Имам проблем с класификацията (цел: отлив 0/1). Първо установете базова линия: измерете точността на обучението/тестването с DummyClassifier, който винаги предвижда класа на мнозинството. След това обучете проста логистична регресия и сравнете дали надминава базовата линия. Покажете показателите на двете един до друг.
Слаба подкана / Силна подкана
Слаба подкана:
Изградете най-добрия модел с тези данни.
„Най-добър“ е недефиниран; Няма тип проблем, няма цел, няма критерии за успех и няма стратегия за разделяне. AI генерира случаен модел, вероятно пропусклив.
Мощна подкана:
Вашата роля: асистент моделиране. Проблем: класификация, цел "отлив" (0/1), има дисбаланс на класа (~12% отлив). Критерий за успех: Припомнянето на онези, които се отказват, е приоритет. Наблюдение, независимо от данните (не времеви редове). Задача: (1) 80/20% стратифицирано разделяне, (2) базова линия на DummyClassifier, (3) логистична регресия, всички трансформации в конвейер и научени само от обучение. Не докосвайте тестовия комплект, преди да го разделите.
Тук видът на проблема, дисбалансът, критерият и мярката за теч са ясни.
Често срещани грешки
- Неподбор на критериите за успех според истинската цел. „Точността“ в небалансираните данни е подвеждаща; Ако искате да завладеете класата на малцинството, припомнянето излиза на преден план.
- Докосване на тестовия комплект по време на тренировка. Правенето на мащабиране/кодиране преди разделянето е пропускливо и скрива реалната производителност.
- Случайно разделяне във времеви редове. Моделът вижда бъдещето, колабира в производството; Хронологичното разделение е от съществено значение.
- Прескачане в сложен модел без установяване на базова линия. Без бенчмаркове не можете да разберете дали даден модел е наистина добър или не.
- Игнориране на тълкуемостта. При вземането на бизнес решения простият обясним модел често е по-ценен от черната кутия.
Съвет: Преди да започнете да създавате модел, напишете едно изречение: „Този модел ще предвиди _____, успехът му ще бъде измерен с показателя _____, тъй като истинската цена на работата е _____.“ Ако не можете да попълните това изречение, все още не сте готови да пишете код.
В обобщение
Най-критичната част от изграждането на модел не е кодът, а решенията, които го предхождат: дефиниране на правилния проблем (класификация или регресия, каква е целта, какъв е критерият за успех) и справедливо разделяне на данните (без да се докосва наборът от тестове; хронологично във времевите серии). Винаги започвайте с проста базова линия и добавяйте сложност само когато го заслужава; интерпретируемостта се цени над силата в повечето бизнес контексти. AI е мощен съветник при избора на алгоритъм и код, но човекът решава какво прогнозирате и защо.
Задача за приложение
Дефинирайте проблем с прогнозиране и попълнете писмено следното изречение: „Този модел ще прогнозира ___ (класификация/регресия), целта е ___, критерият за успех е ___, защото ___.“ След това разделете данните с правилната стратегия (хронологична, ако е времева серия), установете базова линия и измерете дали прост модел нарушава тази базова линия.
контролен списък
- [ ] Ясно ли съм дефинирал вида на проблема (класификация/регресия) и целта?
- [ ] Избрах ли критериите за успех въз основа на действителната цена на работата?
- [ ] Оставих ли тестовия комплект недокоснат по време на тренировка?
- [ ] Ако това е времеви ред, разделих ли го хронологично?
- [ ] Установил ли съм базова линия, преди да премина към сложния модел?