единици
1. Въведение в изкуствения интелект в науката за данните и анализа: работен процес, роли, граници, валидиране и етика 2. Събиране на данни и разбиране на източника: схема, вземане на проби, качество и информираност за течове 3. Почистване и предварителна обработка на данни: Липсваща стойност, отклонение и преобразуване на типа 4. Проучвателен анализ на данни (EDA): Разпределения, връзки и първоначални прозрения 5. Инженеринг на функции: Генериране на варианти, кодиране, мащабиране и избягване на изтичане 6. Изграждане на модел: дефиниране на проблем, избор на алгоритъм и разделяне на обучение/тест 7. Оценка на модела: показатели, кръстосано валидиране и екстремно обучение 8. Визуализация и разказване на истории: точни графики, честни графики 9. Генериране на код: AI-подпомогнат анализ с Python (pandas) и SQL 10. Изтичане на данни и възпроизводимост: тихи бедствия и дисциплина 11. Фондация MLOps, етика, поверителност и отговорен анализ
единица 6 / 11

Изграждане на модел: дефиниране на проблем, избор на алгоритъм и разделяне на обучение/тест

Печалби:

  • Възможност за определяне на типа проблем (класификация, регресия, групиране) и критерии за успех според реалната цена на работата
  • Възможност за честно разделяне на данните (без да се докосва наборът от тестове; хронологично във времевия ред) и създаване на база за оценка без течове
  • Възможност за избор на интерпретируем модел, като започнете с проста базова линия и добавите сложност само когато го заслужава.

Досега събрахме данни, почистихме ги, проучихме ги и създадохме функции. Сега стигаме до истинската работа, изграждането на модел. Моделът е математическа структура, която научава модел от данни и произвежда прогнози за нови ситуации. Но най-критичната част от изграждането на модел не е самият код, а двете решения, които го предхождат: дефиниране на правилния проблем и правилно разделяне на данните. 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 е мощен съветник при избора на алгоритъм и код, но човекът решава какво прогнозирате и защо.

Задача за приложение

Дефинирайте проблем с прогнозиране и попълнете писмено следното изречение: „Този модел ще прогнозира ___ (класификация/регресия), целта е ___, критерият за успех е ___, защото ___.“ След това разделете данните с правилната стратегия (хронологична, ако е времева серия), установете базова линия и измерете дали прост модел нарушава тази базова линия.

контролен списък

  • [ ] Ясно ли съм дефинирал вида на проблема (класификация/регресия) и целта?
  • [ ] Избрах ли критериите за успех въз основа на действителната цена на работата?
  • [ ] Оставих ли тестовия комплект недокоснат по време на тренировка?
  • [ ] Ако това е времеви ред, разделих ли го хронологично?
  • [ ] Установил ли съм базова линия, преди да премина към сложния модел?