Блок навчання без учителя завершується задачею, у якій відповіді немає не тимчасово, а принципово. Кластеризація групувала рядки, метод головних компонент стискав стовпці — і в обох випадках ми хоча б знали, що саме шукаємо: групи або напрямки розкиду. Тут завдання формулюється так: знайди оголошення, які не схожі на решту. І перше, що з ним треба зробити, — помітити, що це не задача, а її опис побутовою мовою.
Приклад той самий, що й у двох попередніх темах, — дошка оголошень про вживані
телефони з теми 08. Ті самі 1 100 оголошень
із відомою ціною й ті самі сім числових ознак: ціна, типова ціна для цієї моделі й року,
оцінка з каталогу, рік випуску, памʼять, стан у балах від 1 до 4 і вік акаунта продавця.
У таблиці є ще колонка шахрайське — але жоден метод цієї теми її не побачить.
Ми дістанемо її аж наприкінці, щоб перевірити, чи знайшли те, що хотіли. Спойлер: не
зовсім, і це головне, що варто винести з теми.
01 / ОзначенняСлово без означення
«Аномалія — це те, що не схоже на решту.» Речення звучить як означення, але їм не є: у ньому два невизначені слова. «Решта» — це весь набір даних, чи його частина, чи те, що буває на цій дошці взагалі? «Не схоже» — за якою мірою схожості, порахованою по яких ознаках і в яких одиницях? Змінюєш відповідь на будь-яке з цих питань — і список аномалій змінюється повністю.
Гірше того: під одним словом ховаються три різні задачі. Вони вимагають різних методів, різних порогів і мають абсолютно різну ціну помилки. Плутанина між ними — причина більшості розчарувань у цій темі.
Схема 1 · Три задачі, які називають одним словом
Однакова технічна операція — «знайти несхожі рядки». Різна мета, різний наступний крок і різна ціна того, що ти помилився.
Помилка в даних. Датчик збився, оператор натиснув зайву клавішу, при злитті таблиць зʼїхав рядок. Такі аномалії треба знайти й прибрати — вони не розповідають про світ нічого, крім того, що конвеєр даних десь протікає. Дорого коштує пропуск: одне число з зайвим нулем зсуває середнє й ламає навчання моделі.
Рідкісна подія. Колекційний телефон, землетрус, поломка обладнання, рідкісна хвороба. Це не помилка — це справжнє явище, якого мало. Прибрати такі рядки означає викинути з даних якраз найцікавіше. Часто саме заради них усе й затівається: у виявленні поломок аномалія — це і є прогноз.
Навмисне зловживання. Шахрайське оголошення, накрутка, зламаний акаунт. Головна відмінність від двох попередніх — на тому боці є людина, яка намагається не виглядати аномалією. Метод, що добре ловить помилки датчика, тут може не працювати взагалі: як тільки правило стає відомим, під нього підлаштовуються. І ціна помилки несиметрична — заблокувати чесного продавця значно дорожче, ніж пропустити одного шахрая.
02 / ПостановкаЧому це не класифікація
Спокуса очевидна: у нас же є колонка шахрайське — навчімо на ній
класифікатор і не вигадуймо нічого. Іноді так і треба робити. Але задача пошуку аномалій
виникає саме тоді, коли цей шлях закритий, і закритий він із трьох причин одразу.
Міток немає або майже немає. На реальній дошці ніхто не позначає оголошення як шахрайські в момент публікації. Позначка зʼявляється потім — після скарг, розслідування, повернення грошей, — і то не для всіх. Тобто цільової колонки просто немає, а та, що є, описує лише спійманих.
Аномалії різнорідні. Класифікатор навчається на тому, що спільного між обʼєктами класу. Але в аномалій спільного немає за означенням: кожна не схожа на решту по-своєму. Одне шахрайське оголошення занижує ціну вдесятеро, друге завищує втричі, третє копіює чужий текст. Модель, навчена на перших двох видах, третій не впізнає. Нормальні ж оголошення, навпаки, схожі між собою — і саме тому в цій темі модель описує норму, а аномалією називає все, що в цей опис не вписалось.
Класи вкрай незбалансовані. На нашій дошці шахрайських оголошень 139 із 1 100, тобто 12.6 %. Це вже багато для такої задачі: на справжніх майданчиках частка йде на десяті відсотка. І тут спрацьовує пастка з теми 05: модель, яка каже «усе чесне» і не робить взагалі нічого, отримує на наших даних 87.4 % accuracy, а на реальній дошці з одним відсотком шахрайства — 99 %. Число виглядає чудово й не означає нічого. Тому в цій темі accuracy не згадується більше жодного разу: працюємо з precision і recall.
03 / Одна колонкаДе ламається погляд на одну колонку
У темі 08 ми вже позначали викиди — і робили це так, як робить людина з очима: брали одну колонку, малювали розподіл і дивились, що відірвалось від решти. Правило міжквартильного розмаху й z-оцінка звідти нікуди не діваються, це й досі перше, що варто зробити. Різниця в тому, що там ми шукали підозрілі числа в колонці, а тут — підозрілі рядки в таблиці. Це різні речі, і зараз буде видно наскільки.
Застосуємо обидва одновимірні правила до всіх семи колонок одразу й позначимо оголошення, яке вилетіло хоч за одним:
Тепер порівняй ці числа з часткою шахрайських оголошень на дошці — 12.6 %. Правило z-оцінки дало 6 із 51, тобто 11.8 %: тицьнути пальцем навмання було б не гірше. Правило розмаху дало 26 зі 156, тобто 16.7 %: трохи краще за випадковість, але не так, щоб радіти. І це не тому, що правила погані. Просто обидва відповідають на питання «чи велике це число», а шахрайське оголошення видає не величина, а поєднання.
Оголошення, у якому кожна колонка в нормі
Ось рядок 328 із нашої таблиці. Beta 12, 2021 рік, стан «добре», 64 гігабайти, акаунт створено 93 дні тому, ціна 15 160 грн. Порахуємо z-оцінку кожної з семи ознак:
Жодна ознака не виходить навіть за одне стандартне відхилення від середнього. Жодна не перетинає межу міжквартильного розмаху — ціна 15 160 грн лежить під верхньою межею 16 061 грн, і решта колонок навіть близько не підходять до своїх меж. За будь-яким одновимірним правилом це найзвичайніше оголошення на дошці.
А тепер прочитай рядок цілком. Beta 12 у стані «добре» — модель, яка на цій самій дошці того самого року йде по 4 310 грн, — виставлена за 15 160. Це втричі з половиною дорожче за типову ціну; оголошень із таким перевищенням на дошці лише 2.4 %. Ознака, що видає цей рядок, — не «ціна» і не «типова ціна», а їхнє співвідношення, і жодна колонка окремо його не містить.
Саме тут і закінчується одновимірний погляд. Точка може бути звичайною за кожною віссю окремо й неможливою на площині — покрути її сам.
Інтерактив 1 · Нормальна окремо, аномальна разом
240 оголошень у двох ознаках: ціна й типова ціна для цієї моделі, обидві в тисячах гривень. По краях — розподіли кожної ознаки окремо. Посунь рожеву точку й порівняй два вироки: за осями й за хмарою.
Постав повзунки в 15.2 і 4.3 — це і є наш рядок 328. Обидві осі кажуть «норма», а спільна відстань перевищує поріг більш ніж удвічі. Постав обидва в 20 — ціна висока, типова висока, але одне одному відповідає, і відстань падає до звичайної. Ось у цьому різниця між «велике число» і «неможливе поєднання», і заради неї існує решта теми.
04 / СусідиЛокальна щільність: LOF
Найпряміша багатовимірна ідея виростає з відстані, якою ми користувались у темі 11. Якщо між двома оголошеннями можна поміряти відстань, то в кожного оголошення є сусіди — ті кілька, до яких найближче. Нормальна точка живе в натовпі: її сусіди поруч. Аномальна стоїть осторонь: навіть до найближчих далеко. Отже, візьмімо середню відстань до k найближчих сусідів і назвімо її оцінкою аномальності.
Ідея правильна рівно доти, доки хмара всюди однаково щільна. А вона такою не буває. На нашій дошці дешеві телефони — це тисячі схожих оголошень, що стоять щільно одне до одного; дорогі флагмани трапляються десятками, і між ними завжди великі проміжки. Правило «далеко до сусідів — значить аномалія» позначить весь дорогий сегмент повністю, і буде формально право: там справді порожньо. Змістовно ж воно скаже дурницю.
LOF (local outlier factor, локальний фактор викиду) лагодить це одним поворотом думки. Питання не в тому, наскільки далеко сусіди, а в тому, наскільки далі, ніж у самих сусідів. Точка аномальна, якщо навколо неї значно просторіше, ніж навколо тих, хто поруч. У щільному районі порожнеча помітна, у розрідженому вона — норма.
Схема 2 · Локальна щільність проти глобальної
Дві групи оголошень і одна точка між ними. Колом позначено середню відстань до трьох найближчих сусідів.
Порахуймо це руками для точки А. Крок перший: знаходимо трьох її найближчих сусідів і середню відстань до них.
Три найближчі до А точки лежать на краю щільної групи, на відстанях 2.121, 2.500 і 2.500. Середнє:
Тепер для кожного з цих трьох сусідів рахуємо його власну середню відстань до його трьох найближчих. Вони стоять у щільній групі, тому числа маленькі:
Оцінка LOF — це відношення першого числа до другого. Одиниця означає «навколо мене так само просторо, як навколо моїх сусідів», тобто повна норма:
Навколо точки А вчетверо просторіше, ніж навколо її сусідів. Це аномалія.
Тепер точка S у центрі розрідженої групи. Три її сусіди стоять рівно за 2.000 — майже стільки ж, скільки в А. Але кожен із них теж має сусідів на відстані 2.000:
Абсолютна відстань та сама, вирок протилежний. Ось для чого в назві слово «локальний».
scikit-learn дає для наших точок 3.87 і 0.78 замість 4.54 і 1.00,
а порядок і висновок ті самі.Головний важіль тут — k, кількість сусідів. Замалий (2-3) — і будь-яка пара точок, що випадково стала поруч, оголосить себе окремою щільною групою, а решту світу — аномалією. Завеликий — і «локальний» перестає бути локальним: сусідство розпливається на пів хмари. Типова робоча величина — кілька десятків; ми беремо 20. І тут діє те саме правило без винятків, що й у темі 11: перед LOF обовʼязкове масштабування. LOF рахує відстані, а відстань складається з різниць по всіх колонках — тож без спільної шкали вік акаунта, що йде сотнями днів, перекриє стан, який іде балами від 1 до 4, повністю.
05 / РозрізиIsolation Forest
Найкрасивіша ідея теми починається з питання, яке спершу здається не про те. Скільки випадкових розрізів треба, щоб відрізати точку від усіх інших?
Правила гри такі. Береш випадкову ознаку, береш випадкове значення в межах того, що зараз лишилось, і розрізаєш дані навпіл. Далі береш ту половину, у якій опинилась твоя точка, і повторюєш. Зупиняєшся, коли в цій частині лишилась сама точка.
Кожен розріз ділить одну частину на дві, ті — ще на дві, і будова, що з цього виростає, природно зветься деревом: один стовбур згори, розгалуження на кожному розрізі, окремі точки в кінцях гілок. Слово тут ужите в найпобутовішому сенсі, ніякої теорії за ним поки не стоїть. Важливо тільки одне: кожне питання розрізає простір навпіл, і нас цікавить, скільки таких питань довелось поставити.
Тепер спостереження, на якому все тримається. Точка з гущі схована серед сотні таких самих — щоб відрізати її, доведеться довго відсікати сусідів по одному. А точка, що стоїть окремо, відлітає з першим-другим випадковим розрізом: між нею й рештою багато порожнього місця, тож майже будь-яка лінія проходить між ними. Глибина, на якій точка ізолювалась, і є оцінкою нормальності: мала глибина — аномалія, велика — звичайна точка.
Інтерактив 2 · Скільки розрізів треба, щоб відрізати точку
Ті самі 114 оголошень двічі. Ліворуч ціль — точка, що стоїть осторонь; праворуч — точка з самої гущі. Тисни «розріз» і рахуй.
Ось чому в назві методу стоїть ліс, а не дерево. Розрізи випадкові, тож одне дерево нічого не доводить: буває, що звичайнісіньку точку з гущі відітне другий розріз, а аномалію хтось прикриє невдалою лінією. Це шум конкретного жеребкування. Ліки від такого шуму завжди ті самі, що й у будь-якому вимірюванні: повторити дослід багато разів і взяти середнє. Сто дерев — сто незалежних спроб; середня глибина по них уже майже не залежить від того, як лягли окремі розрізи, і саме вона стає оцінкою. Цей прийом — «багато випадкових спроб, усереднених» — далі в курсі ти зустрінеш ще не раз, і не лише для пошуку аномалій.
IsolationForest будує 100 дерев (у нас 200),
кожне на випадковій підвибірці, для кожної точки усереднює глибину ізоляції й
перетворює її на число від 0 до 1. Ділити доводиться на очікувану глибину для
випадкової точки, бо в дерева з 256 обʼєктів і в дерева з 10 000 «нормальна» глибина
різна.
Три властивості, за які метод люблять. Він не міряє відстаней — отже, не потребує масштабування й не страждає від прокляття розмірності так, як LOF. Він швидкий: дерева будуються на підвибірках по кілька сотень рядків і не ростуть углиб. І він майже не має налаштувань: кількість дерев і розмір підвибірки на результат впливають слабко.
IsolationForest поставив його аж на 568-ме місце з 1 100.06 / ВідновленняПомилка відновлення
Третій метод ми фактично побудували в темі 13, просто не назвали. Схема така: стиснути таблицю до кількох головних компонент, а потім із цих компонент зібрати сім ознак назад. Точка не повернеться на своє місце — частину інформації викинули. Відстань між оригіналом і відновленою копією і є оцінкою аномальності.
Чому це працює. Головні компоненти описують те, як влаштована основна маса даних: дорожчий телефон — свіжіший рік — більша памʼять — вища оцінка каталогу. Оголошення, яке живе за цими правилами, відновлюється майже точно: щоб його описати, вистачає кількох чисел. Оголошення, у якому правила порушені, відновити з цих кількох чисел неможливо — його «неправильність» лежала саме в тих напрямках, які ми викинули.
Беремо три компоненти з семи — це 71.1 % розкиду — і міряємо, наскільки схибило відновлення. Ось що виходить на стандартизованих ознаках:
Перші пʼять рядків за помилкою відновлення — це три колекційні Gamma X і два оголошення із зайвим нулем у ціні. Метод спрацював бездоганно й знайшов рівно те, чого ми не просили: найдивніші рядки таблиці, а не найшахрайськіші. До цього ми ще повернемось.
Кількість компонент тут — головний важіль, і працює він у зрозумілий бік. Лишиш одну компоненту — «нормою» вважатиметься лише найголовніша вісь, і половина чесних оголошень відновиться погано. Лишиш усі сім — відновлення стане точним для всіх, помилка занулиться й метод перестане розрізняти будь-що. Робоче правило: стільки компонент, скільки треба на 70-90 % розкиду.
07 / ПорівнянняТри методи поруч
Три методи ми вже маємо, і разом з одновимірними правилами їх пʼять. Ось таблиця, до якої варто повертатись, обираючи метод під конкретну таблицю.
Шостий спосіб у тебе теж уже є, просто під іншою назвою. Побудуй кластери й подивись, як далеко кожна точка від свого центра: ті, що далеко від усіх, — кандидати в аномалії. А DBSCAN взагалі віддає їх готовим списком: усе, що він позначив шумом, і є те, що не вписалось у жодну щільну область. Різниця між «шум» і «аномалія» тут не в математиці, а в тому, навіщо ти дивишся: для кластеризації це сміття, яке заважає, для тебе — саме те, що шукаєш.
Таблиця 1 · Що припускає метод і коли він ламається
Головна колонка — друга: у кожного методу є припущення, і аномалія, яка в нього вписалась, лишиться непоміченою.
| метод | що припускає | коли ламається | категорійні ознаки |
|---|---|---|---|
| z-оцінка | одна колонка; розподіл приблизно симетричний і без важкого хвоста | скошені дані; будь-яка аномалія, що видно лише в поєднанні колонок | не працює — потрібне число |
| Міжквартильний розмах | одна колонка; форма розподілу будь-яка | там само: бачить лише величину числа, а не рядок | не працює |
| Відстань Махаланобіса | усі дані — одна витягнута еліптична хмара | кілька груп; нелінійні звʼязки; самі аномалії псують оцінку хмари | тільки після кодування числами |
| LOF | відстань має сенс; щільність можна порівнювати з локальною | висока розмірність; чутливий до k та до масштабування | one-hot розтягує простір і розмиває відстані |
| Isolation Forest | аномалії рідкісні й відділені хоча б за однією віссю | аномалія в «дірці» посеред хмари; багато зайвих ознак | працює з числами; порядкове кодування терпить |
| Помилка відновлення (PCA) | основна структура даних лінійна | нелінійні звʼязки; вимагає стандартизації та вибору кількості компонент | тільки після кодування числами |
IsolationForest
ріже кожну вісь окремо, і будь-яке монотонне перетворення однієї ознаки нічого
в ньому не міняє. Махаланобіс, LOF та PCA міряють відстані між ознаками разом —
без StandardScaler вони міряють одиниці вимірювання, а не дані.Практичне питання: чи згодні методи між собою? Візьмімо в кожного топ-50 найаномальніших оголошень і подивімось на перетини.
Перекриття є, але воно далеко не повне. У Isolation Forest 29 рядків із 50 не знайшов жоден інший метод; у LOF таких 18, у помилки відновлення — 20. Це не привід шукати найкращий метод — це підказка запускати кілька. Оголошення, яке потрапило в топ усіх трьох, дивне напевно; оголошення, яке знайшов лише один, варто подивитись окремо — і, можливо, дізнатись про свої дані щось нове.
08 / ПорігПоріг — це рішення
А тепер найпрактичніший розділ теми. Жоден із трьох методів не відповідає на питання «чи це аномалія». Кожен видає число — оцінку. Далі оголошення шикуються за цим числом у стовпчик, і хтось має провести межу.
Спокуса — попросити компʼютер провести її самому. У IsolationForest
навіть є параметр contamination, куди пишуть очікувану частку аномалій.
Варто розуміти, що він робить: він не визначає поріг, а виконує вже прийняте
тобою рішення. Ставиш 0.05 — метод відріже рівно 5 % найгірших, скільки б
справжніх аномалій там не було. Число ти приніс ззовні.
Звідки його брати насправді — з економіки задачі, а не зі статистики. Потрібні дві величини: скільки коштує перевірити один позначений рядок і скільки коштує пропустити один справжній. Якщо перевірка — це погляд модератора на дві секунди, можна позначати щедро. Якщо це дзвінок продавцеві або блокування акаунта, кожна хибна тривога дорога, і поріг має бути жорстким.
Інтерактив 3 · Поріг і його ціна
Оцінки LOF по всіх 1 100 оголошеннях дошки. Повзунок задає частку, яку ми позначаємо аномальною й віддаємо на перевірку. Числа справжні: колонку «шахрайське» видно тільки нам, а не методу.
Прогони повзунок від краю до краю — картина повчальна. На 1 % список складається з 11 оголошень, шахрайських серед них 3. На 3 % — 33 оголошення й 17 знахідок, найкраща точність за всю шкалу. На 10 % на перевірку йде 110 рядків, з яких справжніх 31: модератор витрачає втричі більше часу, щоб знайти вдвічі більше. На 30 % позначено вже кожне третє оголошення на дошці, знайдено 59 шахраїв зі 139, і слово «аномалія» остаточно знецінилось.
09 / ОцінкаЯк оцінювати без міток
Питання, від якого не сховатись: як зрозуміти, що детектор працює, коли правильних відповідей немає? Чесна відповідь — ніяк. Не існує способу поміряти якість пошуку аномалій, не дізнавшись хоча б про частину рядків, аномальні вони чи ні. Усе, що є, — способи дізнатись це дешевше.
Розмітити невелику вибірку. Береш дві-три сотні рядків, дивишся на них очима або віддаєш експерту, отримуєш маленький, але справжній тест. Дорого й повільно, зате далі можна рахувати звичайні precision і recall.
Подивитись на топ-N очима. Найдешевше і найкорисніше на початку. Береш двадцять найаномальніших рядків і читаєш їх повністю. Половина сумнівів знімається на цьому кроці: одразу видно, чи метод знаходить те, що ти вважаєш дивним, чи просто найбільші числа в таблиці.
Порахувати precision@k. Найпоширеніша метрика цієї задачі, і вона буквально описує роботу модератора: серед перших k рядків списку — скільки виявились справжніми? Її головна перевага в тому, що для неї не треба розмічати всю таблицю: досить перевірити ті самі k рядків, які ти й так збирався дивитись.
10 / ЧесністьАномалія — не те, що ти шукаєш
Тепер дістаємо колонку шахрайське, якої жоден метод не бачив, і рахуємо
precision@20: скільки справжніх шахрайських оголошень у перших двадцяти рядках кожного
списку.
Таблиця 2 · Топ-20 кожного методу проти колонки «шахрайське»
1 100 оголошень, 139 із них шахрайські — 12.6 %. Саме з цим числом і треба порівнювати кожен рядок.
| метод | шахрайських у топ-20 | precision@20 | краще за випадковість | що саме в топі |
|---|---|---|---|---|
| LOF | 9 | 45.0 % | у 3.6 раза | перші шість — колекційні й одруки |
| Помилка відновлення | 2 | 10.0 % | гірше | колекційні, одруки, дорогі флагмани |
| Isolation Forest | 1 | 5.0 % | гірше | майже суцільно Gamma X Ultra 2024 |
| Правило 1.5·IQR | — | 16.7 % | у 1.3 раза | 156 позначених, 26 шахраїв |
| Правило |z| більше 3 | — | 11.8 % | гірше | 51 позначене, 6 шахраїв |
Найпоказовіше не в цифрах, а в перетині. У топ-20 усіх трьох багатовимірних методів одночасно потрапили рівно чотири оголошення. Це ті самі чотири колекційні Gamma X 2017 року в стані «нове» з 512 гігабайтами, за 82-95 тисяч гривень, яких ми вже бачили в темі 08. Три незалежні методи, побудовані на трьох різних ідеях, одностайно назвали найдивнішими рядками таблиці чотири абсолютно чесні оголошення.
І вони мають рацію. Ці рядки справді ні на що не схожі: семирічний флагман, запакований, із максимальною памʼяттю, за ціну нового. У даних вони — найяскравіша аномалія. У задачі — ринок колекціонерів.
Дзеркальний випадок — наш рядок 328. Beta 12 за 15 160 грн при типовій ціні 4 310 — шахрайське оголошення, у якому жодна ознака не виходить за одне стандартне відхилення. LOF поставив його на 14-те місце з 1 100 і виявився єдиним, хто його побачив; помилка відновлення дала 278-ме, Isolation Forest — 568-ме. А акуратно складене шахрайське оголошення — з правдоподібною ціною, звичайним роком і нормальною памʼяттю — не потрапить у жоден список узагалі, і жоден із цих методів у цьому не винен.
Де ж тоді пошук аномалій справді потрібен? Там, де «дивне» і є ціллю. Контроль якості даних перед навчанням: перш ніж будувати модель, знайди рядки, яких не мало бути. Моніторинг обладнання: датчик, показання якого перестали бути схожими на власне минуле. Перша розвідка незнайомої таблиці: топ-20 найаномальніших рядків розповідає про дані більше, ніж двадцять гістограм. І — як фільтр перед розміткою: якщо перевірити можна лише сотню рядків, розумно взяти не випадкову сотню, а найдивнішу.
11 / ДаліЩо далі
Підсумок теми в пʼятьох рядках. Аномалія — це не властивість рядка, а результат рішення, як міряти схожість. Одновимірні правила бачать великі числа, а не дивні рядки. LOF порівнює щільність навколо точки зі щільністю навколо її сусідів, Isolation Forest рахує глибину випадкової ізоляції, помилка відновлення міряє, наскільки погано рядок вписався в головну структуру даних. Усі троє дають оцінку, а не відповідь; поріг — це рішення про ціну помилки. І жоден із них не обіцяв шукати саме те, що потрібно тобі.
На цьому блок навчання без учителя завершено. Далі курс повертається до задач із готовими відповідями: наступний блок — перші моделі з учителем, які вчаться на вже розмічених прикладах. А одна ідея з цієї теми чекатиме нас значно пізніше, у блоці про нейромережі, і переїде туди майже без змін. Помилка відновлення після PCA працює тому, що ми стиснули дані до кількох чисел і спробували зібрати назад. Точно так само влаштований автоенкодер: мережа, яку вчать віддавати на виході те саме, що на вході, змушуючи інформацію протиснутись крізь вузький середній шар. Різниця одна, і вона вирішальна: PCA вміє стискати тільки лінійно, а мережа — як завгодно. Тому автоенкодер помічає дивні рядки там, де залежності криві, а PCA бачить лише рівну хмару. Механізм оцінки лишається той самий: подали рядок, отримали копію, поміряли відстань.
practice.ipynb ми беремо ту саму
дошку й проходимо весь шлях: одновимірні правила й скільки вони ловлять; пошук
оголошення, нормального за кожною ознакою окремо; три методи поруч у спільній таблиці
з оцінками; узгодженість між ними; топ-20 кожного проти колонки шахрайське
й чесний висновок про те, що збіглося, а що ні.Далі в темі
Теорію прочитано. Тепер закріпи її на практиці.