Изменения

Перейти к: навигация, поиск

Выброс

11 979 байт добавлено, 10:54, 25 января 2020
Источники информации
[[Файл:Outlier_boxplot.png|upright=1.0|thumb|Рис 1.График boxplot населения регионов России в 1990 году, где можно заметить 5 выбросов]]'''Выброс'''(англ. ''outliersoutlier'') — такая часть {{---}} это экстремальные значения во входных данных, которая сильно выделяется из общей выборкикоторые находятся далеко за пределами других наблюдений. Например, все предметы на кухне имеют температуру около 22-25 грудусов Цельсия, а {{---}} духовка 220.  Многие алгоритмы машинного обучения чувствительны к разбросу и распределению значений атрибутов во входных данныхпризнаков обрабатываемых объектов. Выбросы Соответственно, выбросы во входных данных могут исказить и ввести в заблуждение процесс обучения алгоритмов машинного обучения, что приводит к увеличению времени обучения, снижению точности моделей и, в конечном итоге, к снижению результатов. Даже до подготовки предсказательных моделей на основе обучающих данных выбросы могут приводить к ошибочным представлениям и в дальнейшем к ошибочной интерпретации собранных данных.===Виды выбросов===На основе размерности изучаемого массива данных выбросы подразделяют на одномерные и многомерные.;Одномерные выбросы:Точка является выбросом только по одной из своих координат.;Многомерные выбросы:Точка является выбросом сразу по нескольким координатам. Другой подход классификации выбросов {{---}} по их окружению.;Точечные выбросы:Единичные точки, выбивающиеся из общей картины. Точечные аномалии часто используются в системах контроля транзакций для выявления мошенничества, например, когда с украденной карты совершается крупная покупка.;Контекстуальные выбросы:Для того, чтобы определить, является ли точка выбросом необходим контекст. Например, в Петербурге +15 градусов Цельсия. Зимой такая температура является выбросом, а летом нет. ;Коллективные выбросы:Здесь выбросом является не точка, а группа точек. Примером таких выбросов могут служить, например, задержки поставок на фабрике. Одна задержка не является выбросом. Но если их много, значит это может стать проблемой. 
===Причины возникновения выбросов===
* Сбой работы оборудования;* Человеческий фактор;* Случайность;* Уникальные явления;
* и др.
==Примеры=={|align="center" |-valign="top" |[[Файл:Outlier_norm.png|200px|thumb|Рис 2. Хорошо обученная модель с выбросами]] |[[Файл:Outlier_bad.png|200px|thumb|Рис 3. Переобученная модель на выбросах]] |}Рис 2 показывает хорошо обученную модель, в которой присутствуют два выброса. Как видно из рисунка данная модель показала себя устойчивой к выбросам, либо же вовремя прекратила своё обучение. Обратная ситуация обстоит с Рис 3, где модель сильно переобучилась из-за присутствующих в ней выбросов.
==Методы обнаружения и борьбы с выбросами==
===Методы обнаружения выбросов===
[[Файл:Outlier_normal_distribution.png|upright=1.0|thumb|[http://work.thaslwanter.at/Stats/html/statsDistributions.html Рис 4. Так как t-распределение имеет более длинный хвост, нежели у нормального распределения, поэтому t-распределение менее чувствительно к выбросам.]]]
# Экстремальный анализ данных(англ. ''extreme value analysis''). При таком анализе не применяются какие-либо специальные статистические методы. Обычно этот метод применим для одномерного случая. Алгоритм использования таков:
#* Визуализировать данные, используя диаграммы, и гистограммы и _, для нахождения экстремальных значений. ; #* Задействовать распределение, например Гауссовское, и найти значения, чье стандартное отклонение отличается в 2-3 раза от математического ожидания или в полтора раза от первой либо третьей квартилей. ; #* Отфильтровать предполагаемые выбросы из обучающей выборки и оценить работу модели.;# Апроксимирующий Аппроксимирующий метод (англ. ''proximity method''). Чуть более сложный метод, заключающийся в применении кластеризующих методов.;#* Использовать метод кластеризации для определения кластеров для в данных.;#* Идентифицировать и отметить центроиды каждого кластера.;#* Соотнести кластеры с экземплярами данных, находящимися на фиксированном расстоянии или на процентном удалении от центроиды центроида соответствующего кластера.;#* Отфильтровать предполагаемые выбросы из обучающей выборки и оценить работу модели.;# Проецирующие методы (англ. ''projections methods''). Эти методы довольно быстро и просто определяют выбросы в выборке. ; #* Использовать один из проецирующих методов, например , метод главных компонент (англ. ''principal component analysis'', ''PCA''<ref>[https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D1%85_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82Метод главных компонент]</ref>) или самоорганизующиеся карты Кохонена(англ. ''self-organizing map'', ''SOM''<ref>[https://habr.com/post/338868/Самоорганизующиеся карты Кохонена]</ref>) или проекцию Саммона(англ. ''Sammon mapping'', ''Sammon projection''<ref>[https://en.wikipedia.org/wiki/Sammon_mappingПроекция Саммона]</ref>), для суммирования обучающих данных в двух измерениях.;#* Визуализировать отображение;#* Использовать критерий близости от проецируемых значений или от вектора таблицы кодирования (англ. ''codebook vector'') для идентифицирования выбросов.;
#* Отфильтровать предполагаемые выбросы из обучающей выборки и оценить работу модели.
===Алгоритмы борьбы с выбросамиЛокально взвешенное сглаживание===* Локально взвешенное сглаживание(англ. ''LOcally WEighted Scatter plot Smoothing'', ''LOWESS'')<ref>[http://www.aliquote.org/cours/2012_biomed/biblio/Cleveland1979.pdf Локально взвешенное сглаживание]</ref>. Данная методика была предложена Кливлендом (Cleveland) в 1979 году для моделирования и сглаживания двумерных данных <math>X^m={(x_i, y_i)}_{i=1}^m</math>. Эта техника предоставляет общий и гибкий подход для приближения двумерных данных. Локально-линейная модель может быть записана в виде: <math>y_t=\alpha_t+\beta_t x_t + \varepsilon_t</math>. Эта модель может быть расширена на случай локально-квадратичной зависимости и на модель с большим числом независимых переменных. Параметры <math>\alpha_t</math> и <math>\beta_t</math> локально линейной модели оцениваются с помощью локально взвешенной регрессии, которая присваивает объекту тем больший вес, чем более близок он к объекту t. Степень сглаживания определяется параметром сглаживания <math>f</math>, который выбирает пользователь. Параметр <math>f</math> указывает какая доля (англ. ''fraction'') данных используется в процедуре. Если <math>f = 0.5</math>, то только половина данных используется для оценки и влияет на результат, и тогда мы получим умеренное сглаживание. С другой стороны, если <math>f = 0.8</math>, то используются восемьдесят процентов данных, и сглаживание намного сильнее. Во всех случаях веса данных тем больше, чем они ближе к объекту <math>t</math>.====Постановка задачи====Пусть задано пространство объектов $X$ и множество возможных ответов <math>Y = \mathbb{R}</math>. Существует неизвестная зависимость <math>y^*\colon X \to Y</math>, значения которой известны только на объектах обучающией выборки <math>X^l = (x_i\ ,\ y_i)^l_{i=1},\ y_i = y^*(x_i)</math>. Требуется построить алгоритм <math>a\colon X\to Y</math>, аппроксимирующий неизвестную зависимость <math>y^*</math>. Предполагается, что на множестве $X$ задана метрика <math>\rho(x,x')</math>. Также стоит определить следующее. Для вычисления <math>a(x) = \alpha</math> для <math>\forall x \in X</math> воспользуемся методом наименьших квадратов:<math>Q(\alpha;X^l) = \sum_{i=1}^l \omega_i(x)(\alpha-y_i)^2 \rightarrow \underset{\alpha \in \mathbb{R}}{min}</math>, где <math>\omega_i</math> {{---}} это вес $i$-ого объекта.  Веса <math>\omega_i</math> разумно задать так, чтобы они убывали по мере увеличения расстояния <math>\rho(x,x_i)</math>. Для этого можно ввести невозрастающую, гладкую, ограниченную функцию <math>K:[0, \infty) \rightarrow [0, \infty)</math>, называемую [[Ядра|ядром]]<sup>[на 28.01.19 не создан]</sup>, и представить <math>\omega_i</math> в следующем виде:  <math>\omega_i(x) = K\left(\frac{\rho(x,x_i)}{h} \right )</math>, где $h$ {{---}} ширина окна.  Приравняв равной нулю производную <math>\frac{\partial Q}{\partial \alpha} = 0</math> и выразив <math>\alpha</math>, получаем ''формулу Надарая-Ватсона''<ref>[http://www.machinelearning.ru/wiki/index.php?title=%D0%9E%D1%86%D0%B5%D0%BD%D0%BA%D0%B0_%D0%9D%D0%B0%D0%B4%D0%B0%D1%80%D0%B0%D1%8F-%D0%92%D0%B0%D1%82%D1%81%D0%BE%D0%BD%D0%B0 Формула Надарая-Ватсона]</ref> :<math>a_h(x;X^l) = \frac{\sum_{i=1}^{l} y_i\omega_i(x)}{\sum_{i=1}^{l} \omega_i(x)} = \frac{\sum_{i=1}^{l} y_iK\left(\frac{\rho(x,x_i)}{h} \right )}{\sum_{i=1}^{l} K\left(\frac{\rho(x,x_i)}{h} \right )}</math>. ====Проблема выбросов в этой задаче====Большие случайные ошибки в значениях <math>y_i</math> сильно искажают оценку Надарая-Ватсона.  ====Идея====Чем больше величина невязки <math>\varepsilon_i = \left | a_h\left (x_i;X^\ell\backslash\left \{x_i\right \} \right )-y_i\right |</math>, тем меньше должен быть вес i-го объекта <math>\omega_i(x)</math>.====Эвристика====Домножить веса <math>\omega_i(x)</math> на коэффициенты <math>\gamma_i = \widetilde{K}\left ( \varepsilon_i \right )</math>, где <math>\widetilde{K}\left ( \varepsilon \right )</math> — ещё одно ядро, вообще говоря, отличное от <math>K\left ( \rho \right )</math>. ====Псевдокод==== ВХОДINPUT: <math>X^\ell</math> (-) обучающая выборкаtraining sample; ВЫХОДOUTPUT: коэффиценты coefficents <math>\gamma_i, i = 1,...,\ell</math>;
________________________________________________________
1: инициализацияinitialization: <math>\gamma_i := 1, i = 1,...,\ell</math>;<span style="color:green">//инициализация коэффициентов</span> 2: повторятьdo 3: для всех объектов for each object <math>i = 1,...,\ell</math>; 4: calculate cross-validation estimates: <span style="color:green">//вычислить оценки скользящего контроля:</span>
<math>a_i := a_h(x_i;X^\ell\setminus{x_i}) = \frac{\sum\limits^{\ell}_{j=1,j\ne i} {y_j\gamma_j K \left ( \tfrac{\rho\left (x_i,x_j \right )}{h\left (x_i \right)} \right )}}{\sum\limits^{\ell}_{j=1,j\ne i}{\gamma_j K\left(\tfrac{\rho\left (x_i,x_j \right )}{h\left (x_i\right )}\right )} }</math>
5: для всех объектов for each object <math>i = 1,...,\ell</math>;
6: <math>\gamma_i := \widetilde{K}\left (\left | a_i-y_i \right | \right );</math>
7: пока коэффиценты while coefficents <math>\gamma_i</math> not stabilized; <span style="color:green">//пока коэффициенты не стабилизируются;</span> ====Пример. Допустим на языке R==== В этом примере мы пытаемся восстановить зависимость, используя ''формулу Надарая-Ватсона'' по некоторым данным попытаемся локально регрессировать и сгладить среднюю продолжительность безработицы на основе набора экономических данных из n наблюденийпакета $ggplot2$ языка $R$. Мы рассматриваем только первые 80 строк для этого анализа, 2 из которых имеют излишне высокое и излишне низкое значения соответственночтобы легче было наблюдать степень сглаживания на приведенных ниже графиках. Большие ошибки<br> data(economics, вызванные этими выбросами, довольно заметно исказят полученный результат по формуле. В методе локально взвешенного сглаживания мы домножаем веса объектов package="ggplot2") <mathspan style="color:green">w_i# загрузка данных</mathspan> на коэффиценты economics$index <math>\gamma_i=\widetilde{K}\left- 1:nrow(\varepsilon_i\righteconomics) <span style="color:green"># создание индексной переменной</mathspan> economics <- economics[1:80, значения которых тем меньше, чем величина ошибки ] <mathspan style="color:green">\varepsilon_i# усечение до 80 строк для более наглядного демонстрирования</mathspan> loessMod10 <- loess(uempmed ~ index, data=economics, span=0. Для этого мы возьмём квартическое ядро (не обязательно совпадающее с основным ядром10) <mathspan style="color:green"># 10% параметр сглаживания span</span>\widetilde{K}\left loessMod25 <- loess(\varepsilon\rightuempmed ~ index, data=economics, span=0.25)<span style=K_Q\left"color:green"># 25% параметр сглаживания span</span> loessMod50 <- loess(\frac{\varepsilon}{6Me\left\{\varepsilon_i\right\}}\rightuempmed ~ index, data=economics, span=0.50)<span style="color:green"># 50% параметр сглаживания span</mathspan>, где   <mathspan style="color:green">Me\left \{\varepsilon_i\right \}# получить сглаженный результат</mathspan> — медиана множества значений smoothed10 <- predict(loessMod10) smoothed25 <- predict(loessMod25) smoothed50 <- predict(loessMod50)  <mathspan style="color:green">\varepsilon_i# Нарисовать</mathspan> plot(economics''$''uempmed, x=economics''$''date, type="l", main="Локально взвешенное сглаживание", xlab="Дата", ylab="Длительность безработицы") lines(smoothed10, x=economics''$''date, col="red") lines(smoothed25, x=economics''$''date, col="green") lines(smoothed50, x=economics''$''date, col="blue"){|align="center" |-valign="top" |[[Файл:LOWESS. png|400px|thumb|Рис 5. На приведенном графике показано, что чем больше параметр сглаживания span, тем более сглаженной выглядит восстановленная регрессия]] |} ===Другие алгоритмы борьбы с выбросами===Таким образом выбросы будут нивелироваться автоматически при использовании данного подхода. В статистике методы, устойчивые к нарушениям модельных предположений о данных, называются ''робастными''. Метод локально взвешенного сглаживания относится к ''робастным'' методам, так как он устойчив к наличию небольшого количества выбросов. Помимо описанного метода * [[Дерево решений и случайный лес|Дерево принятия решения]] (англ. ''decision tree''<ref>[https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B9 Дерево принятия решения]</ref>). Это дерево, как и уже описанный алгоритм локально взвешенного сглаживания, относится к ''робастным'' методам ;* [[Вариации регрессии|Робастная регрессия]] (англ. ''robust regression''<ref>[https://en.wikipedia.org/wiki/Robust_regression Робастная регрессия]</ref>). В отличие от регрессии, использующей, например, метод наименьших квадратов, в этом алгоритме не строится идеализированное предположение, что вектор ошибок <math>\varepsilon</math> распределен согласно нормальному закону. Однако на практике зачастую имеют место отклонения от этого предположения. Тогда можно также отнести деревья принятия решения применить метод наименьших модулей (англ. ''decision treeLeast Absolute Deviation, LAD ''<ref>[https://en.wikipedia.org/wiki/Least_absolute_deviations Метод наименьших модулей]</ref>) в случае, если распределение ошибок измерений подчиняется распределению Лапласа (англ. Laplace distribution <ref>[https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%9B%D0%B0%D0%BF%D0%BB%D0%B0%D1%81%D0%B0 Распределение Лапласа]</ref>).
==См.также==
* [[АномалияОбщие понятия]]
* [[Переобучение]]
* [[Дерево решений и случайный лес]]
==Примечания==
<references/>==Источники информации==# https://habrmachinelearningmastery.com/post/338868how-to-identify-outliers-in-your-data/# https://ru.wikipediacoursera.org/wikilecture/vvedenie-mashinnoe-obuchenie/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D1%85_%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82obnaruzhieniie-vybrosov-t9PG4# https://en.wikipedia.org/wiki/Sammon_mapping# http://www.machinelearningreg.ru/wikiblog/index.php?title=%D0%9E%D1%86%D0%B5%D0%BD%D0%BA%D0%B0_%D0%9D%D0%B0%D0%B4%D0%B0%D1%80%D0%B0%D1%8Fishchem-anomalii-s-python-chast-%D0%92%D0%B0%D1%82%D1%81%D0%BE%D0%BD%D0%B01/ # http[[Категория://www.aliquote.org/cours/2012_biomed/biblio/Cleveland1979.pdfМашинное обучение]]# https[[Категория://ru.wikipedia.org/wiki/%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B9Статистика]]
Анонимный участник

Навигация