0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p><strong>Поиск аномалий</strong>может быть как конечной целью анализа и построения моделей, так и промежуточным этапом подготовки и очистки данных. В первом сценарии мы хотим научиться для каждого объекта выборки выносить вердикт, является ли он аномальным/нестандартным, а во втором мы находим и убираем выбросы в данных, чтобы в дальнейшем получить более устойчивые модели.</p>
1
<p><strong>Поиск аномалий</strong>может быть как конечной целью анализа и построения моделей, так и промежуточным этапом подготовки и очистки данных. В первом сценарии мы хотим научиться для каждого объекта выборки выносить вердикт, является ли он аномальным/нестандартным, а во втором мы находим и убираем выбросы в данных, чтобы в дальнейшем получить более устойчивые модели.</p>
2
<p>В<a>определении</a>из документации scikit-learn, задача поиска аномалий разделяется на два возможных типа:</p>
2
<p>В<a>определении</a>из документации scikit-learn, задача поиска аномалий разделяется на два возможных типа:</p>
3
<ul><li><strong>Outlier detection</strong>(поиск выбросов): в тренировочной выборке содержатся выбросы, которые определяются как наблюдения, лежащие далеко от остальных. Таким образом, алгоритмы для детектирования выбросов пытаются найти регионы, где сосредоточена основная масса тренировочных данных, игрорируя аномальные наблюдения.</li>
3
<ul><li><strong>Outlier detection</strong>(поиск выбросов): в тренировочной выборке содержатся выбросы, которые определяются как наблюдения, лежащие далеко от остальных. Таким образом, алгоритмы для детектирования выбросов пытаются найти регионы, где сосредоточена основная масса тренировочных данных, игрорируя аномальные наблюдения.</li>
4
<li><strong>Novelty detection</strong>(поиск "новизны"): тренировочная выборка не загрязнена выбросами, и мы хотим научиться отвечать на вопрос "является ли новое наблюдение выбросом".</li>
4
<li><strong>Novelty detection</strong>(поиск "новизны"): тренировочная выборка не загрязнена выбросами, и мы хотим научиться отвечать на вопрос "является ли новое наблюдение выбросом".</li>
5
</ul><h3>Сложности при поиске аномалий</h3>
5
</ul><h3>Сложности при поиске аномалий</h3>
6
<p>На практике задача поиска аномалий зачастую не сводится к построению бинарного классификатора "выброс/не выброс". Реальные данные редко бывают размечены, и мы вынуждены использовать методы обучения без учителя.</p>
6
<p>На практике задача поиска аномалий зачастую не сводится к построению бинарного классификатора "выброс/не выброс". Реальные данные редко бывают размечены, и мы вынуждены использовать методы обучения без учителя.</p>
7
<p>Одновременно с этим возникает вопрос о построении надежной схемы валидации, ведь если "правильных ответов" у нас нет, то и понять, насколько алгоритм справляется со своей задачей, уже сложнее. Здесь очень помогут экспертные оценки о проценте аномальных объектов, которые ожидаются в выборке, так как с ними можно будет сравнивать прогнозные значения и варьировать тем самым чувствительность алгоритмов.</p>
7
<p>Одновременно с этим возникает вопрос о построении надежной схемы валидации, ведь если "правильных ответов" у нас нет, то и понять, насколько алгоритм справляется со своей задачей, уже сложнее. Здесь очень помогут экспертные оценки о проценте аномальных объектов, которые ожидаются в выборке, так как с ними можно будет сравнивать прогнозные значения и варьировать тем самым чувствительность алгоритмов.</p>
8
<p>Если же поиск и очистка от аномалий - это шаг в подготовке данных для последующего моделирования, то можно использовать стандартные подходы: разбиение на train/test, кросс-валидацию и т. д. Конечно, чтобы избежать переобучения, очистка в этом случае должна проводиться только на тренировочной части датасета.</p>
8
<p>Если же поиск и очистка от аномалий - это шаг в подготовке данных для последующего моделирования, то можно использовать стандартные подходы: разбиение на train/test, кросс-валидацию и т. д. Конечно, чтобы избежать переобучения, очистка в этом случае должна проводиться только на тренировочной части датасета.</p>
9
<h3>Коротко о Support Vector Machine</h3>
9
<h3>Коротко о Support Vector Machine</h3>
10
<p>Если совсем вкратце, SVM - базовая линейная модель. Основная идея алгоритма (в случае с классификацией) - разделить классы гиперплоскостью так, чтобы максимизировать расстояние (зазор) между ними. Изначально алгоритм был способен работать только с линейно разделимыми классами, однако в 90-е годы прошлого века метод стал особенно популярен из-за внедрения "Kernel Trick" (1992), позволившего эффективно работать с линейно неразделимыми данными.</p>
10
<p>Если совсем вкратце, SVM - базовая линейная модель. Основная идея алгоритма (в случае с классификацией) - разделить классы гиперплоскостью так, чтобы максимизировать расстояние (зазор) между ними. Изначально алгоритм был способен работать только с линейно разделимыми классами, однако в 90-е годы прошлого века метод стал особенно популярен из-за внедрения "Kernel Trick" (1992), позволившего эффективно работать с линейно неразделимыми данными.</p>
11
<h3>Kernel Trick</h3>
11
<h3>Kernel Trick</h3>
12
<p>Ядро (kernel) - это функция, которая способна преобразовать признаковое пространство (в том числе нелинейно), без непосредственного преобразования признаков.</p>
12
<p>Ядро (kernel) - это функция, которая способна преобразовать признаковое пространство (в том числе нелинейно), без непосредственного преобразования признаков.</p>
13
<p>Крайне эффективна в плане вычисления и потенциально позволяет получать бесконечноразмерные признаковые пространства.</p>
13
<p>Крайне эффективна в плане вычисления и потенциально позволяет получать бесконечноразмерные признаковые пространства.</p>
14
<p>Идея заключается в том, что классы, линейно неразделимые в текущем признаковом пространстве, могут стать разделимыми в пространствах более высокой размерности:</p>
14
<p>Идея заключается в том, что классы, линейно неразделимые в текущем признаковом пространстве, могут стать разделимыми в пространствах более высокой размерности:</p>
15
<h3>One Class SVM</h3>
15
<h3>One Class SVM</h3>
16
<p>One Class SVM - это одна из форм классического алгоритма, однако, как следует из названия, для его обучения нам достаточно иметь всего один класс.</p>
16
<p>One Class SVM - это одна из форм классического алгоритма, однако, как следует из названия, для его обучения нам достаточно иметь всего один класс.</p>
17
<p>Если мы имеем дело с задачей novelty detection, где для тренировки нам доступны только "хорошие" наблюдения без аномалий, то мы можем воспользоваться этой моделью и научиться для каждого нового наблюдения говорить, является ли оно аномальным или нет.</p>
17
<p>Если мы имеем дело с задачей novelty detection, где для тренировки нам доступны только "хорошие" наблюдения без аномалий, то мы можем воспользоваться этой моделью и научиться для каждого нового наблюдения говорить, является ли оно аномальным или нет.</p>
18
<p>Общая идея: преобразовать признаковое пространство и провести разделяющую гиперплоскость так, чтобы наблюдения лежали как можно дальше от начала координат:</p>
18
<p>Общая идея: преобразовать признаковое пространство и провести разделяющую гиперплоскость так, чтобы наблюдения лежали как можно дальше от начала координат:</p>
19
<p>В результате мы получаем границу, по одну сторону которой максимально плотно упакованы наблюдения из нашей чистой тренировочной выборки, а по другую будут находится аномальные значения, не похожи на то, что алгоритм видел во время обучения.</p>
19
<p>В результате мы получаем границу, по одну сторону которой максимально плотно упакованы наблюдения из нашей чистой тренировочной выборки, а по другую будут находится аномальные значения, не похожи на то, что алгоритм видел во время обучения.</p>
20
<h3>Плюсы и минусы</h3>
20
<h3>Плюсы и минусы</h3>
21
<p>+ Благодаря kernel trick, модель способна проводить<strong>нелинейные разделяющие границы</strong></p>
21
<p>+ Благодаря kernel trick, модель способна проводить<strong>нелинейные разделяющие границы</strong></p>
22
<p>+ Особенно удобно использовать, когда в данных недостаточно "плохих" наблюдений, чтобы использовать стандартный подход обучения с учителем - бинарную классификацию</p>
22
<p>+ Особенно удобно использовать, когда в данных недостаточно "плохих" наблюдений, чтобы использовать стандартный подход обучения с учителем - бинарную классификацию</p>
23
<p>- Может очень сильно<strong>переобучиться</strong>и выдавать большое количество ложно отрицательных результатов, если разделяющий зазор слишком мал</p>
23
<p>- Может очень сильно<strong>переобучиться</strong>и выдавать большое количество ложно отрицательных результатов, если разделяющий зазор слишком мал</p>
24
<p>- И, конечно, нужно быть абсолютно уверенным, что<strong>тренировочные данные не содержат никаких выбросов</strong>, иначе алгоритм будет считать их нормальными наблюдениями</p>
24
<p>- И, конечно, нужно быть абсолютно уверенным, что<strong>тренировочные данные не содержат никаких выбросов</strong>, иначе алгоритм будет считать их нормальными наблюдениями</p>
25
<p>Больше о различных методах детектирования аномалий вы сможете узнать на занятии "<strong>Поиск аномалий в данных</strong>" в рамках курса<strong><a>Machine Learning</a></strong>.</p>
25
<p>Больше о различных методах детектирования аномалий вы сможете узнать на занятии "<strong>Поиск аномалий в данных</strong>" в рамках курса<strong><a>Machine Learning</a></strong>.</p>
26
26