Домашнє завдання

Що таке машинне навчання

Тема концептуальна, тож і завдання не про «навчити модель». Вони про те, щоб побачити межу власними числами: де правила ще працюють, де вже ні і де модель починає вигадувати.

Домен той самий, що в лекції та практиці — дошка оголошень про продаж вживаних телефонів. Датасет міняти не треба: усе робиться на тому, що згенеровано в practice.ipynb.


рівень 1Рівень 1 — База

Побудуй власний набір правил і поміряй, чого він вартий.

  1. Візьми ads із практики (або згенеруй такий самий у новому зошиті).
  2. Напиши чотири правила фільтрації шахрайства. Два вже є в практиці (price_ratio < 0.60, account_age_days < 7) — придумай ще два своїх, наприклад комбіновані: «ціна нижча за 85 % і акаунту менше 30 днів».
  3. Для всіх 16 поєднань правил (увімкнене / вимкнене) порахуй на тестовій вибірці три числа: спіймано, хибних тривог, пропущено. Функція count_hits із практики вже це вміє.
  4. Склади результат у DataFrame і відсортуй за кількістю спійманих.

Зроблено, якщо: є таблиця з 16 рядками, і ти назвав словами два поєднання — те, що ловить найбільше шахраїв, і те, що дає найменше хибних тривог. Поясни одним реченням, чому це різні поєднання, а не одне.


рівень 2Рівень 2 — Плюс

Покажи, що модель старіє, а правила старіють ще швидше.

  1. Розділи оголошення на «старі» й «нові» не випадково, а за account_age_days: уяви, що це два різні місяці роботи дошки.
  2. Зміни поведінку шахраїв у «новому» місяці: підніми їм знижку з 0.35–0.95 до 0.70–0.98 (шахраї перестали демпінгувати) і вік акаунта — з 0–60 до 0–120 днів (навчилися чекати).
  3. Візьми набір правил і модель, навчені на «старому» місяці, і застосуй обидва до «нового». Порахуй три числа для кожного.
  4. Перенавчи модель на «новому» місяці й порахуй ще раз.

Зроблено, якщо: є таблиця з трьома рядками — правила, стара модель, перенавчена модель — і всі три числа для кожного. Назви, на скільки впав показник «спіймано» у правил і у старої моделі, і поясни, чому перенавчання допомогло, а правила довелося б переписувати руками.


рівень 3Рівень 3 — Виклик

Змоделюй упереджені дані й покажи числами, як упередження переходить у модель.

  1. Додай до ads колонку city із двома значеннями, наприклад "A" і "B", розподіленими приблизно порівну. Простеж, щоб справжня частка шахрайства в обох містах була однаковою — це принципово.
  2. Тепер зіпсуй мітки так, як їх псує реальний процес: уяви, що модератор перевіряв місто B уважніше. Для міста A залиш у колонці is_fraud лише половину справжніх шахраїв (решту познач нулями — їх «не помітили»), для міста B залиш усі.
  3. Навчи модель на ознаках price_ratio, account_age_days і city (місто закодуй pd.get_dummies або OneHotEncoder).
  4. Порахуй окремо для кожного міста: яку частку оголошень модель позначає і яка частка серед них шахрайська за справжніми мітками, а не за зіпсованими.

Зроблено, якщо: є дві пари чисел (по одній на місто), і з них видно, що модель позначає місто B частіше за місто A, хоча справжня частка шахрайства однакова. Назви, яке саме число довело б цю різницю сторонньому спостерігачеві, і поясни в двох реченнях, чому модель тут не помилилась — вона точно відтворила те, що було в мітках.


Підказки