Мы начинаем урок, посвященный задаче обнаружения аномалии. И в данном видео мы обсудим, что это вообще за задача, и чем она отличается от остальных задач обучения без учителя. Вы уже знаете несколько примеров задач поиска структуры данных или обучения без учителя. Например, задача кластеризации, где нужно найти такие группы объектов, что объекты внутри одной группы в некотором смысле похожи друг на друга. Например, можно пытаться кластеризовать клиентов мобильного оператора. Или, скажем, задача понижения размерности, где есть некоторая выборка и нужно спроецировать ее в пространство меньшей размерности так, чтобы сохранить как можно больше информации. То есть найти какие-то направления, которые наиболее информативны для данной выборки. Задача поиска или обнаружения аномалии немного отличается. В ней нужно найти в выборке объекты, которые не похожи на большинство объектов, объекты, которые выделяются, которые являются аномальными. При этом примеров аномалии либо нет вообще, либо их очень мало, и мы даже не знаем, где именно в выборке они находятся. Именно поэтому задача относится к обучению без учителя. У нас нет никакой разметки. Таким образом нам нужно как-то научиться понимать, похож ли новый объект, который к нам приходит, на остальные, на те, которые мы видили до этого. Измерять похожесть можно по-разному. Мы будем далее обсуждать то, как именно это можно делать. Но сначала давайте обсудим несколько примеров применения обнаружения аномалий. Первый пример про клиентов банка. Представьте, что каждый объект — это клиент банка в определенный момент времени. Мы можем его описывать, например, характеристиками его транзакций в данный момент времени, тем, как он ведет себя в интернет-банке и так далее. Собственно, вопрос, на который мы хотим отвечать: не является ли его поведение каким-то необычным, не является ли оно аномальным. Если его поведение выбивается из среднего по всем клиентам, то это повод заподозрить, что клиент делает что-то не так. Возможно, это мошенник, который украл карту и пытается вывести с нее деньги. И это будет повод, например, заблокировать карту и позвонить клиенту банка. Другой пример про мониторинг сложной компьютерной системы, которая состоит из большого количества взаимосвязанных машин. Мы можем отслеживать много показателей: загрузку процессоров, использование памяти на каждой машине, нагрузку на сеть и так далее. А вопрос, на которой хочется отвечать, — это отличается ли текущее состояние системы от характеристик тех состояний, которые мы видели до этого и про которые знаем, что они нормальные. Если отличается, если система ведет себя как-то иначе, не так, как раньше, то опять же это повод задуматься, не случилась ли какая-то поломка, не нужно ли продиагностировать систему и что-то починить в ней. Наконец третий пример состоит в следующем. Представьте, что мы сделали модель, которая по отзыву на банк определяет его тональность: позитивную или негативную, хорошо или плохо клиент отозвался о банке. То есть процедура следующая: клиент банка заходит на сайт этого банка, в специальную форму вводит некоторый отзыв, и дальше этот отзыв приходит нашей модели, которая определяет позитивный он или негативный. Если он негативный, то нужно что-то с этим делать. Нужно сообщить об этом сотрудникам банка, чтобы они могли как-то решить возникшую проблему. Но нам также хотелось бы понимать, когда приходит новый отзыв, можем ли мы вообще применять к нему модель машинного обучения, которую построили. Можем ли мы его классифицировать этой же моделью. Дело в том, что распределение признаков, описание этого объекта могло измениться. Например, банк мог поменять название продуктов, и поэтому теперь слова, которые употребляют в отзыве, совершенно другие. Модель к ним не готова. Или, скажем, банк мог поменять ограничение на длину отзыва. До этого, скажем, длина была не ограничена, и клиенты писали довольно длинные тексты. А теперь длину ограничили, скажем, 1000-ой символов. То есть отзыв должен быть очень коротким. В этом случае понятно, что объекты станут совершенно другими. Клиенты будут стараться максимально сжато объяснить свою проблему. И из-за этого тоже модель может стать непригодной. Если мы бы могли обнаруживать, что объекты, которые к нам приходят, стали другими, стали аномальными по сравнению с теми, на которых мы обучали модель, то это повод обучить модель заново, уже на новых размеченных данных. Мы обсудим 2 подхода к обнаружению аномалий. Первый основан на восстановлении плотности. То есть мы находим некоторое распределение, которое хорошо описывает имеющуюся выборку. И дальше, когда приходит новый объект, мы смотрим, насколько вероятно было его получить из этого распределения. Чем меньше эта вероятность, тем больше шансов, что это аномалия или выброс. Второй подход — это методы, основанные на методах классификации. Об этом будем говорить в последнем видео этого урока. Итак, мы обсудили, в чем заключается задача поиска аномалии. В ней нужно уметь обнаруживать объекты, которые существенно отличаются от тех, которые мы видели раньше, от тех, которые были в обучающей выборке. И рассмотрели пару примеров. Например, про поиск мошенников в банке или про детектирование непригодности модели машинного обучения. В следующем видео мы начнем говорить о методах и начнем с параметрических методов восстановления плотности.