Прогнозировать начало диабета
Набор данных, используемый для этого примера, является началом набора данных о диабете у индейцев Пима.
Это проблема классификации, когда каждый случай представляет медицинские данные для одного пациента, и задача состоит в том, чтобы предсказать, будет ли у пациента начало диабета в течение следующих пяти лет.
Это хороший набор данных для практики масштабирования, так как все 8 входных переменных имеют различные масштабы, например, число случаев, когда пациентка была беременна (PREG) и расчет индекса массы тела пациента (масса).
Вы можете узнать больше об этом наборе данных наСтраница репозитория машинного обучения UCI для набора данных индейцев Пима, Вы можетескачать набор данных напрямуюс этой страницы (обновление:скачать отсюда). Вы также можете получить доступ к этому набору данных в вашей установке Weka, подданные/каталог в файле называетсяdiabetes.arff,
Друзья Александра то и дело хвастаются, что зарабатывают деньги на операциях с ценными бумагами, убеждая его, что это гораздо выгоднее депозитов.
Но Александр никогда раньше не инвестировал и плохо разбирается в фондовом рынке, да и вообще он не склонен к риску. Какие шаги ему стоит предпринять, если он все же поддастся уговорам и решит попробовать инвестировать на фондовом рынке?
Выберите все верные ответы
Пройти бесплатное обучение для начинающих инвесторов
Открыть брокерский счет, спросить у друзей, во что они инвестируют, и можно начинать самому
Для начала: выбрать пассивную стратегию инвестирования (например, используя коллективные инвестиции)
Не нужно ничего делать, инвестиции — это большой риск. Если получилось у друзей, это не значит, что получится у вас
Нормализуйте ваши числовые атрибуты
Нормализация данных — это процесс изменения масштаба одного или нескольких атрибутов в диапазоне от 0 до 1. Это означает, что наибольшее значение для каждого атрибута равно 1, а наименьшее значение равно 0.
Нормализация — это хороший метод, который нужно использовать, когда вы не знаете, как распределены ваши данные, или если вы знаете, что распределение не является гауссовским (кривая колокола).
Вы можете нормализовать все атрибуты в вашем наборе данных с помощью Weka, выбрав фильтр «Нормализация» и применив его к своему набору данных.
Вы можете использовать следующий рецепт для нормализации вашего набора данных:
1. Откройте Weka Explorer.
2. Загрузите ваш набор данных.
3. Нажмите кнопку «Выбрать», чтобы выбрать фильтр, и выберитеunsupervised.attribute.Normalize,
4. Нажмите кнопку «Применить», чтобы нормализовать ваш набор данных.
5. Нажмите кнопку «Сохранить» и введите имя файла, чтобы сохранить нормализованную копию набора данных.
Просмотр сведений о каждом атрибуте в окне «Выбранный атрибут» даст вам уверенность в том, что фильтр был успешным и что каждый атрибут был перемасштабирован в диапазоне от 0 до 1.
Вы можете использовать другие шкалы, например, от -1 до 1, что полезно при использовании машин опорных векторов и adaboost.
Нормализация полезна, когда ваши данные имеют различные масштабы, а используемый вами алгоритм не делает предположений о распределении ваших данных, таких как k-ближайшие соседи и искусственные нейронные сети.
Что такое нормализация данных и чем она отличается от нормировки и нормирования
В случае машинного обучения (Machine Learning), нормализация – это процедура предобработки входной информации (обучающих, тестовых и валидационных выборок, а также реальных данных), при которой значения признаков во входном векторе приводятся к некоторому заданному диапазону, например, или .
Следует отличать понятия нормализации, нормировки и нормирования.
Нормировка – это корректировка значений в соответствии с некоторыми функциями преобразования, с целью сделать их более удобными для сравнения. Например, разделив набор измерений о росте людей в дюймах на 2.54, мы получим значение роста в метрической системе.
Нормировка данных требуется, когда несовместимость единиц измерений переменных может отразиться на результатах и рекомендуется, когда итоговые отчеты могут быть улучшены, если выразить результаты в определенных понятных/совместимых единицах. Например, время реакции, записанное в миллисекундах, легче интерпретировать, чем число тактов процессора, в которых были получены данные эксперимента .
Нормирование – это процесс установления предельно допустимых или оптимальных нормативных значений в прикладных сферах деятельности, например, нормирование труда. Как правило, нормы разрабатываются по результатам исследовательских, проектных или научных работ, а также на основе экспертных оценок .
Нормализация, нормировка и нормирование – это разные понятия
6.3.5. Дискретность
Дискретизация (также известная как квантование или биннинг) обеспечивает способ разделения непрерывных функций на дискретные значения. Определенные наборы данных с непрерывными объектами могут выиграть от дискретизации, потому что дискретизация может преобразовать набор данных с непрерывными атрибутами в набор только с номинальными атрибутами.
Дискретизированные признаки, закодированные одним горячим способом (One-hot encoded), могут сделать модель более выразительной, сохраняя при этом интерпретируемость. Например, предварительная обработка с помощью дискретизатора может внести нелинейность в линейные модели.
6.3.5.1. Дискретизация K-бинов
дискретизирует функции в бункеры:
>>> X = np.array(, ... , ... ]) >>> est = preprocessing.KBinsDiscretizer(n_bins=, encode='ordinal').fit(X)
По умолчанию выходные данные быстро кодируются в разреженную матрицу (см. ), и это можно настроить с помощью параметра. Для каждого объекта границы интервалов вычисляются во время и вместе с количеством интервалов они определяют интервалы. Следовательно, для текущего примера эти интервалы определены как:
- особенность 1: ${[-\infty, -1), [-1, 2), [2, \infty)}$
- особенность 2: ${[-\infty, 5), [5, \infty)}$
- особенность 3: ${[-\infty, 14), [14, \infty)}$
На основе этих интервалов бинов преобразуется следующим образом:
>>> est.transform(X) array(, , ])
Результирующий набор данных содержит порядковые атрибуты, которые в дальнейшем можно использовать в файле .
Дискретизация аналогична построению гистограмм для непрерывных данных. Однако гистограммы фокусируются на подсчете объектов, которые попадают в определенные интервалы, тогда как дискретизация фокусируется на присвоении значений признаков этим интервалам.
реализует различные стратегии биннинга, которые можно выбрать с помощью параметра. «Равномерная» стратегия использует ячейки постоянной ширины. Стратегия «квантилей» использует значения квантилей, чтобы иметь одинаково заполненные ячейки в каждой функции. Стратегия «k-средних» определяет интервалы на основе процедуры кластеризации k-средних, выполняемой для каждой функции независимо.
Имейте в виду, что можно указать настраиваемые интервалы, передав вызываемый объект, определяющий стратегию дискретизации . Например, мы можем использовать функцию Pandas :
>>> import pandas as pd >>> import numpy as np >>> bins = >>> labels = >>> transformer = preprocessing.FunctionTransformer( ... pd.cut, kw_args={'bins': bins, 'labels': labels, 'retbins': False} ... ) >>> X = np.array() >>> transformer.fit_transform(X) Categories (5, object):
Примеры:
- Использование KBinsDiscretizer для дискретизации непрерывных объектов
- Дискретизация функций
- Демонстрация различных стратегий KBinsDiscretizer
6.3.5.2. Бинаризация функций
Бинаризация функций — это процесс определения пороговых значений числовых функций для получения логических значений . Это может быть полезно для последующих вероятностных оценок, которые предполагают, что входные данные распределены согласно многомерному распределению Бернулли . Например, это касается .
В сообществе обработки текста также распространено использование двоичных значений признаков (вероятно, для упрощения вероятностных рассуждений), даже если нормализованные подсчеты (также известные как частоты терминов) или функции, оцениваемые по TF-IDF, часто работают немного лучше на практике.
Что касается класса утилиты, он предназначен для использования на ранних этапах . Метод не делает ничего , поскольку каждый образец обрабатывают независимо от других:
>>> X = , ... , ... ] >>> binarizer = preprocessing.Binarizer().fit(X) # fit does nothing >>> binarizer Binarizer() >>> binarizer.transform(X) array(, , ])
Есть возможность настроить порог бинаризатора:
>>> binarizer = preprocessing.Binarizer(threshold=1.1) >>> binarizer.transform(X) array(, , ])
Что касается класса, модуль предварительной обработки предоставляет вспомогательную функцию, которая будет использоваться, когда API-интерфейс преобразователя не нужен.
Обратите внимание, что это похоже на то, когда k = 2 и когда край ячейки находится на значении . Редкий ввод
Редкий ввод
и принимать как плотные, похожие на массивы, так и разреженные матрицы из scipy.sparse в качестве входных данных .
Для разреженного ввода данные преобразуются в представление сжатых разреженных строк (см . Раздел «Ресурсы» ). Чтобы избежать ненужных копий памяти, рекомендуется выбирать представление CSR в восходящем направлении.
Масштабирование входных переменных
Входные переменные — это переменные, которые сеть принимает на входном или видимом слое для прогнозирования.
Хорошее эмпирическое правило заключается в том, что входные переменные должны иметь небольшие значения, вероятно, в диапазоне 0-1 или стандартизироваться с нулевым средним и стандартным отклонением, равным единице.
Необходимость масштабирования входных переменных зависит от специфики вашей задачи и каждой переменной. Давайте посмотрим на некоторые примеры.
Категориальные входы
У вас может быть последовательность категориальных входных данных, таких как буквы или статусы.
Как правило, категориальные входы сначала кодируются целым числом, а затем — горячим. То есть уникальное целочисленное значение присваивается каждому отдельному возможному входу, затем двоичный вектор из единиц и нулей используется для представления каждого целочисленного значения.
По определению, горячее кодирование гарантирует, что каждый вход имеет небольшое реальное значение, в данном случае 0,0 или 1,0.
Реальные входные данные
У вас может быть последовательность величин в качестве входных данных, таких как цены или температуры.
Если распределение количества нормальное, то оно должно быть стандартизировано, в противном случае ряд должен быть нормализован. Это применимо, если диапазон значений количества велик (10 с 100 с и т. Д.) Или мал (0,01, 0,0001).
Если значения величин малы (около 0-1), а распределение ограничено (например, стандартное отклонение около 1), то, возможно, вы можете уйти без масштабирования ряда.
Другие входы
Проблемы могут быть сложными, и может быть неясно, как лучше масштабировать входные данные.
Если есть сомнения, нормализуйте последовательность ввода. Если у вас есть ресурсы, изучите моделирование с необработанными данными, стандартизированными и нормализованными данными и посмотрите, есть ли полезная разница.
-FAQ по нейронным сетям
Как правильно обращаться с выбросами
До сих пор мы видели методы, которые помогут нам найти выбросы в нашем наборе данных. Но что делать, если вы знаете, что есть выбросы.
Вот несколько методов, которые вы можете использовать для обработки выбросов, чтобы ваш анализ данных был правильным.
Удалить выбросы
Самый простой способ удалить выбросы из набора данных — просто удалить их. Таким образом, это не исказит ваш анализ.
Это более жизнеспособное решение, когда у вас большие наборы данных и удаление пары выбросов не повлияет на общий анализ. И, конечно же, перед удалением данных обязательно создайте копию и выясните, что вызывает эти выбросы.
Нормализовать выбросы (отрегулировать значение)
Нормализация выбросов — это то, что я делал, когда работал полный рабочий день. Для всех значений выбросов я бы просто изменил их на значение, немного превышающее максимальное значение в наборе данных.
Это гарантирует, что я не удаляю данные, но в то же время я не позволяю этому искажать мои данные.
Чтобы дать вам реальный пример, если вы анализируете маржу чистой прибыли компаний, где большинство компаний находится в пределах от -10% до 30%, а есть несколько значений, превышающих 100%, я просто изменит эти выбросы на 30% или 35%.
Итак, вот некоторые из методов, которые вы можете использовать в Excel для поиска выбросов .
После того, как вы определили выбросы, вы можете углубиться в данные и посмотреть, что их вызывает, и в то же время выбрать один из методов обработки этих выбросов (который может удалить их или нормализовать, изменив значение)
Надеюсь, вы нашли этот урок полезным.
Как найти выбросы в Excel (и как с ними справиться)
Зачем нормализовать датасет для Data Mining и Machine Learning
Необходимость нормализации выборок данных обусловлена природой используемых алгоритмов и моделей Machine Learning. Исходные значения признаков могут изменяться в очень большом диапазоне и отличаться друг от друга на несколько порядков. Предположим, датасет содержит сведения о концентрации действующего вещества, измеряемой в десятых или сотых долях процентов, и показатели давления в сотнях тысяч атмосфер. Или, например, в одном входном векторе присутствует информация о возрасте и доходе клиента.
Будучи разными по физическому смыслу, данные сильно различаются между собой по абсолютным величинам . Работа аналитических моделей машинного обучения (нейронных сетей, карт Кохонена и т.д.) с такими показателями окажется некорректной: дисбаланс между значениями признаков может вызвать неустойчивость работы модели, ухудшить результаты обучения и замедлить процесс моделирования. В частности, параметрические методы машинного обучения (нейронные сети, растущие деревья) обычно требуют симметричного и унимодального распределения данных. Популярный метод ближайших соседей, часто используемый в задачах классификации и иногда в регрессионном анализе, также чувствителен к диапазону изменений входных переменных .
После нормализации все числовые значения входных признаков будут приведены к одинаковой области их изменения – некоторому узкому диапазону. Это позволит свести их вместе в одной модели Machine Learning и обеспечит корректную работу вычислительных алгоритмов [1.
Нормализованные данные в диапазоне
Практическим приемам Feature Transformation посвящена наша следующая статья, где мы рассказываем, как именно выполняется нормализация данных: формулы, методы и средства. Все эти и другие вопросы Data Preparation рассматриваются в нашем новом курсе обучения для аналитиков Big Data: подготовка данных для Data Mining. Оставайтесь с нами!
Смотреть расписание
Записаться на курс
Источники
- https://wiki.loginom.ru/articles/normalization.html
- http://molbiol.ru/forums/lofiversion/index.php/t460759.html
- https://btimes.ru/dictionary/normirovanie
- https://neuronus.com/theory/nn/925-sposoby-normalizatsii-peremennykh.html
- https://habr.com/ru/company/ods/blog/325422
О фильтрах данных в Weka
Weka предоставляет фильтры для преобразования вашего набора данных. Лучший способ узнать, какие фильтры поддерживаются и играть с ними в вашем наборе данных, — это использовать Weka Explorer.
Панель «Фильтр» позволяет выбрать фильтр.
Фильтры делятся на два типа:
- Контролируемые фильтры: Это может быть применено, но требует пользовательского контроля в некотором роде. Например, ребалансирование экземпляров для класса.
- Фильтры без присмотра: Это может быть применено не по назначению. Например, измените масштаб всех значений в диапазон от 0 до 1.
Лично я считаю, что различие между этими двумя типами фильтров немного произвольно и сбивает с толку. Тем не менее, так они изложены.
Внутри этих двух групп фильтры дополнительно делятся на фильтры для атрибутов и экземпляров:
- Фильтры атрибутов: Применить операцию к атрибутам или одному атрибуту за раз.
- Фильтры экземпляров: Применить операцию к экземпляру или одному экземпляру за раз.
Это различие имеет гораздо больше смысла.
После того, как вы выбрали фильтр, его имя появится в поле рядом с кнопкой «Выбрать».
Вы можете настроить фильтр, щелкнув его имя, чтобы открыть окно конфигурации. Вы можете изменить параметры фильтра и даже сохранить или загрузить конфигурацию самого фильтра. Это отлично подходит для воспроизводимости.
Вы можете узнать больше о каждом параметре конфигурации, наведя на него курсор и прочитав подсказку.
Вы также можете прочитать все подробности о фильтре, включая конфигурацию, документы и книги для дальнейшего чтения и дополнительную информацию о работе фильтра, нажав кнопку «Дополнительно».
Вы можете закрыть справку и применить настройки, нажав кнопку «ОК».
Вы можете применить фильтр к загруженному набору данных, нажав кнопку «Применить» рядом с именем фильтра.
Нормализуйте данные временного ряда
Нормализация — это изменение масштаба данных из исходного диапазона, чтобы все значения находились в диапазоне от 0 до 1.
Нормализация может быть полезной и даже необходимой в некоторых алгоритмах машинного обучения, когда данные временных рядов имеют входные значения с различными масштабами. Это может потребоваться для алгоритмов, таких как k-Nearest соседей, которые используют вычисления расстояний и линейную регрессию и искусственные нейронные сети, которые весовые значения ввода.
Нормализация требует, чтобы вы знали или могли точно оценить минимальные и максимальные наблюдаемые значения. Возможно, вы сможете оценить эти значения по вашим доступным данным. Если ваш временной ряд имеет тенденцию к повышению или понижению, оценка этих ожидаемых значений может быть затруднена, и нормализация может оказаться не лучшим методом для решения вашей проблемы.
Значение нормализуется следующим образом:
Где минимальные и максимальные значения относятся к значениюИкснормализуется.
Например, для данных о температуре мы могли бы предположить минимальные и максимальные наблюдаемые значения как 30 и -10, которые сильно завышены и недооценены. Затем мы можем нормализовать любое значение, например 18.8, следующим образом:
Вы можете увидеть, что еслиИкспредоставляется значение, которое находится за пределами минимального и максимального значений, что результирующее значение не будет находиться в диапазоне от 0 до 1. Вы можете проверить эти наблюдения перед выполнением прогнозов и либо удалить их из набора данных, либо ограничить их до предопределенных максимальных или минимальных значений.
Вы можете нормализовать свой набор данных, используя объект scikit-learn.MinMaxScaler,
Хорошая практика использования сMinMaxScalerи другие методы масштабирования следующие:
- Установите скейлер, используя доступные данные тренировки, Для нормализации это означает, что данные обучения будут использоваться для оценки минимальных и максимальных наблюдаемых значений. Это делается путем вызовапоместиться()функция,
- Применить шкалу к тренировочным данным, Это означает, что вы можете использовать нормализованные данные для обучения вашей модели. Это делается путем вызовапреобразование ()функция
- Примените масштаб к данным, идущим вперед, Это означает, что в будущем вы можете подготовить новые данные, по которым вы хотите делать прогнозы.
При необходимости преобразование может быть инвертировано. Это полезно для преобразования прогнозов в исходную шкалу для составления отчетов или построения графиков. Это можно сделать, позвонивinverse_transform ()функция.
Ниже приведен пример нормализации набора данных «Минимальные суточные температуры».
Скейлер требует, чтобы данные были представлены в виде матрицы строк и столбцов. Загруженные данные временного ряда загружаются как пандыСерии, Затем он должен быть преобразован в матрицу из одного столбца с 3650 строками.
Затем измененный набор данных используется для подгонки скейлера, набор данных нормализуется, затем преобразование нормализации инвертируется, чтобы снова показать исходные значения.
При выполнении примера печатаются первые 5 строк из загруженного набора данных, отображаются те же 5 значений в их нормализованной форме, а затем значения возвращаются в исходный масштаб с использованием обратного преобразования.
Мы также видим, что минимальное и максимальное значения набора данных равны 0 и 26,3 соответственно.
Существует другой тип масштабирования, который более устойчив к новым значениям, находящимся вне диапазона ожидаемых значений; это называется стандартизацией. Мы посмотрим на это дальше.
Поиск выбросов с помощью функций
Теперь давайте поговорим о более научном решении, которое поможет вам определить, есть ли какие-то выбросы.
В статистике квартиль составляет четверть набора данных. Например, если у вас есть 12 точек данных, то первый квартиль будет тремя нижними точками данных, второй квартиль будет следующими тремя точками данных и так далее.
Ниже приведен набор данных, по которому я хочу найти выбросы. Для этого мне нужно будет вычислить 1-й и 3-й квартили, а затем с его помощью вычислить верхний и нижний предел.
Ниже приведена формула для вычисления первого квартиля в ячейке E2:
=QUARTILE.INC($B$2:$B$15,1)
и вот тот, который вычисляет третий квартиль в ячейке E3:
=QUARTILE.INC($B$2:$B$15,3)
Теперь я могу использовать два вышеупомянутых вычисления, чтобы получить межквартильный размах (который составляет 50% наших данных в пределах 1-го и 3-го квартилей).
= F3-F2
Теперь мы будем использовать межквартильный диапазон, чтобы найти нижний и верхний предел, который будет содержать большую часть наших данных.
Все, что выходит за эти нижние и верхние пределы, будет считаться выбросом.
Ниже приведена формула для расчета нижнего предела:
=Quartile1 - 1.5*(Inter Quartile Range)
который в нашем примере становится:
= F2-1,5 * F4
И формула для расчета верхнего предела:
=Quartile3 + 1.5*(Inter Quartile Range)
который в нашем примере становится:
= F3 + 1,5 * F4
Теперь, когда у нас есть верхний и нижний предел в нашем наборе данных, мы можем вернуться к исходным данным и быстро определить те значения, которые не лежат в этом диапазоне.
Быстрый способ сделать это — проверить каждое значение и вернуть ИСТИНА или ЛОЖЬ в новом столбце.
Я использовал приведенную ниже формулу ИЛИ, чтобы получить ИСТИНА для тех значений, которые являются выбросами.
=OR(B2<$F$5,B2>$F$6)
Теперь вы можете фильтровать столбец Outlier и отображать только те записи, для которых значение TRUE.
В качестве альтернативы вы также можете использовать условное форматирование, чтобы выделить все ячейки, в которых значение TRUE.
Примечание. Хотя это более распространенный метод поиска выбросов в статистике. Я считаю этот метод немного непригодным для использования в реальных сценариях. В приведенном выше примере нижний предел, рассчитанный по формуле, равен -103, в то время как набор данных, который у нас есть, может быть только положительным. Таким образом, этот метод может помочь нам найти выбросы в одном направлении (высокие значения), он бесполезен при выявлении выбросов в другом направлении.
Как нормализовать данные для машинного обучения и Data Mining
Чтобы выполнить нормализацию данных, нужно точно знать пределы изменения значений признаков: минимальное и максимальное теоретически возможные значения. Этим показателям будут соответствовать границы интервала нормализации. Когда точно установить пределы изменения переменных невозможно, они задаются с учетом минимальных и максимальных значений в имеющейся выборке данных .
На практике data scientist нормализует данные с помощью уже готовых функций интегрированных сред для статистического анализа, например, IBM SPSS, SAS или специальных библиотек: Scikit-learn, Auto-sklearn, pandas и т.д. Кроме того, аналитик данных может написать собственный код на языке R или Python для почти любой операции Data Preparation .
Выборку нужно подготовить, чтобы моделирование прошло нормально
Подробно о том, как нормализовать данные и другие аспекты Data Preparation в нашем новом образовательном курсе для аналитиков Big Data в Москве: подготовка данных для Data Mining. Присоединяйтесь!
Смотреть расписание
Записаться на курс
Источники
- https://docs.microsoft.com/ru-ru/azure/machine-learning/team-data-science-process/prepare-data
- https://neuronus.com/theory/nn/925-sposoby-normalizatsii-peremennykh.html
- https://www.bigdataschool.ru/bigdata/data-preparation-operations.html
Выпадание во время теста
Во время тестирования мы рассматриваем исходную нейронную сеть со всеми присутствующими активациями и масштабируем выход каждого узла на значение p. Так как каждый узел активируется только р раз.
Прекращение использования Pytorch
Чтобы визуализировать, как выпадение уменьшает переоснащение нейронной сети, мы сгенерируем простые случайные точки данных, используя Pytorch, Утилита выпадения лучше всего показана на пользовательских данных, которые могут переопределиться.
Как только мы сгенерируем данные, мы можем визуализировать тензоры, используяграфик рассеяния, как показано ниже.
Чтобы показать переоснащение, мы обучим две сети — одну без отсева, а другую с отсевом. Сеть без выпадения имеет 3 полностью связанных скрытых слоя с ReLU в качестве функции активации для скрытых слоев, и сеть с выпадением также имеет аналогичную архитектуру, но с выпадением, примененным после первого и второго линейных слоев.
В Pytorch мы можем применить отсев, используямодуль.
import torch.nn as nnnn.Dropout(0.5) #apply dropout in a neural network
В этом примере я использовал долю отсева 0,5 после первого линейного слоя и 0,2 после второго линейного слоя. После того, как мы обучим две разные модели, то есть… одну без отсева и другую с отсевом и нанесем результаты теста, это будет выглядеть так:
Из приведенных выше графиков можно сделать вывод, что по мере увеличения количества эпох модель без выпадения перезаписывает данные. Модель без отсева изучает шум, связанный с данными, а не обобщает данные. Мы можем видеть, что потери, связанные с моделью без падения, увеличиваются по мере того, как мы увеличиваем количество эпох, в отличие от потерь, связанных с моделью с выпадением.
Найдите выбросы путем сортировки данных
С небольшими наборами данных быстрый способ выявить выбросы — просто отсортировать данные и вручную просмотреть некоторые значения в верхней части отсортированных данных.
А поскольку выбросы могут быть в обоих направлениях, убедитесь, что вы сначала сортируете данные в порядке возрастания, а затем в порядке убывания, а затем просматриваете верхние значения.
Позвольте мне показать вам пример.
Ниже у меня есть набор данных, в котором у меня есть продолжительность звонков (в секундах) для 15 звонков в службу поддержки.
Ниже приведены шаги по сортировке этих данных, чтобы мы могли идентифицировать выбросы в наборе данных:
- Выберите заголовок столбца, который вы хотите отсортировать (в этом примере ячейка B1).
- Перейдите на вкладку «Главная»
- В группе «Редактирование» щелкните значок «Сортировка и фильтр».
- Щелкните Custom Sort (Пользовательская сортировка).
- В диалоговом окне «Сортировка» выберите «Продолжительность» в раскрывающемся списке «Сортировка по» и «От наибольшего к наименьшему» в раскрывающемся списке «Порядок».
- Нажмите ОК
Вышеупомянутые шаги сортируют столбец продолжительности звонка с наивысшими значениями вверху. Теперь вы можете вручную просмотреть данные и посмотреть, есть ли выбросы.
В нашем примере я вижу, что первые два значения намного выше остальных значений (а два нижних намного ниже).
Стандартизировать данные временных рядов
Стандартизация набора данных включает в себя изменение масштаба распределения значений так, чтобы среднее значение наблюдаемых значений было 0, а стандартное отклонение — 1.
Это можно рассматривать как вычитание среднего значения или центрирование данных.
Как и нормализация, стандартизация может быть полезной и даже необходимой в некоторых алгоритмах машинного обучения, когда ваши данные временного ряда имеют входные значения с различными масштабами.
Стандартизация предполагает, что ваши наблюдения соответствуют гауссовскому распределению (кривая колокола) со средним значением и стандартным отклонением. Вы все еще можете стандартизировать данные временных рядов, если это ожидание не будет выполнено, но вы можете не получить надежных результатов.
Это включает в себя алгоритмы, такие как машины опорных векторов, линейная и логистическая регрессия, и другие алгоритмы, которые предполагают или имеют улучшенную производительность с гауссовыми данными.
Стандартизация требует, чтобы вы знали или были в состоянии точно оценить среднее и стандартное отклонение наблюдаемых значений. Возможно, вы сможете оценить эти значения по вашим данным обучения.
Значение стандартизировано следующим образом:
Гдеимею в видурассчитывается как:
Истандартное отклонениерассчитывается как:
Например, мы можем построить гистограмму набора данных «Минимальные суточные температуры» следующим образом:
Выполнение кода дает следующий график, который показывает гауссово распределение набора данных, как предполагается стандартизацией.
Мы можем угадать среднюю температуру 10 и стандартное отклонение около 5. Используя эти значения, мы можем стандартизировать первое значение в наборе данных 20,7 следующим образом:
Оценки среднего и стандартного отклонения набора данных могут быть более устойчивыми к новым данным, чем минимальное и максимальное.
Вы можете стандартизировать свой набор данных, используя объект scikit-learn.StandardScaler,
Ниже приведен пример стандартизации набора данных «Минимальные суточные температуры».
При выполнении примера печатаются первые 5 строк набора данных, печатаются те же стандартизированные значения, а затем печатаются значения обратно в их исходном масштабе.
Мы можем видеть, что расчетное среднее значение и стандартное отклонение составляли 11,1 и 4,0 соответственно.
Поиск выбросов с помощью функций НАИБОЛЬШИЙ / МАЛЕНЬКИЙ
Если вы работаете с большим количеством данных (значения в нескольких столбцах), вы можете извлечь 5 или 7 наибольших и наименьших значений и посмотреть, есть ли в них выбросы.
Если есть какие-либо выбросы, вы сможете их идентифицировать, не просматривая все данные в обоих направлениях.
Предположим, у нас есть приведенный ниже набор данных, и мы хотим знать, есть ли какие-либо выбросы.
Ниже приведена формула, которая даст вам наибольшее значение в наборе данных:
=LARGE($B$2:$B$16,1)
Точно так же второе по величине значение будет равно
=LARGE($B$2:$B$16,1)
Если вы не используете Microsoft 365, в котором есть динамические массивы, вы можете использовать приведенную ниже формулу, и она даст вам пять наибольших значений из набора данных с помощью одной единственной формулы:
=LARGE($B$2:$B$16,ROW($1:5))
Точно так же, если вам нужны 5 наименьших значений, используйте следующую формулу:
=SMALL($B$2:$B$16,ROW($1:5))
или следующее, если у вас нет динамических массивов:
=SMALL($B$2:$B$16,1)
Когда у вас есть эти значения, очень легко обнаружить любые выбросы в наборе данных. Хотя я решил извлечь 5 наибольших и наименьших значений, вы можете выбрать 7 или 10 в зависимости от размера вашего набора данных.
Я не уверен, является ли это приемлемым методом для поиска выбросов в Excel или нет, но это метод, который я использовал, когда мне приходилось работать с большим количеством финансовых данных на моей работе несколько лет назад. По сравнению со всеми другими методами, описанными в этом руководстве, я считаю этот наиболее эффективным.