Обнаружение аномалий — одна из самых сложных областей машинного обучения, но также и одна из самых важных. Приложения и области использования многочисленны; в таких областях, как диагностика рака в медицинской отрасли, до обнаружения мошенничества в финансовой сфере. Это даже полезно для прогнозирования отказов машин в часто упускаемой из виду отрасли, когда речь идет о машинном обучении и производстве.

Но как предсказать событие, вероятность наступления которого составляет 0,1% времени? Или даже 0,01% времени? Сегодня у нас есть возможность погрузиться в проблему, которая представляет еще большую сложность, — сбой жесткого диска. «Существует более высокая вероятность того, что астероид уничтожит Землю в течение миллиона лет», чем потеря файла при резервном копировании с помощью технологии облачного хранения BackBlaze. Это в значительной степени связано с долговечностью примерно 75 000 жестких дисков, которые они используют.

Но даже самые прочные накопители не выдерживают выхода из строя по ряду причин. Каждый отдельный привод работает месяцами, а иногда и годами и состоит из множества движущихся частей и схем. Хорошей новостью является то, что они также используют технологию самоконтроля и отчетности (S.M.A.R.T), которая помогает вам просматривать их статус по запросу.

Вопрос в том, могут ли эти данные помочь предсказать, когда жесткий диск выйдет из строя? Благодаря приверженности BackBlaze к открытым данным мы можем использовать S.M.A.R.T. статистика, которую они публикуют ежеквартально, чтобы погрузиться в эту проблему.

Поскольку приводы выходят из строя очень редко, обнаружение аномалий будет нашим *способом работы*. Это позволит нам предложить вероятность того, что конкретный жесткий диск выйдет из строя, в отличие от прямой классификации «да» или «нет». В сочетании с этой методологией мы также будем использовать AUC в качестве нашей метрики для оценки наших результатов, поскольку она скажет нам, ранжирует ли наш алгоритм случайно выбранный случай сбоя выше, чем случайно выбранный случай нормального поведения.

Доступные нам данные представляют собой 62 необработанных и нормализованных значения, сообщаемых жестким диском S.M.A.R.T. статистика. Данные также включают дату записи, серийный номер каждого диска, типы их моделей и, к счастью для нас, метку, указывающую, что жесткий диск вышел из строя. Одна из трудностей заключается в том, что эти отчеты ежедневно генерируются для более чем 75 000 дисков. Работа с этими данными чуть более чем за неделю приводит к более чем миллиону образцов! В довершение всего, за указанный период времени было всего 53 отказа. Это составляет всего 0,005% от общего числа образцов.

Изучение данных показывает, что в эти отчеты было включено 44 модели. Из этих моделей 9 содержали сбои.

Эти графики показывают, что тип модели не является сильным предиктором отказа. Лучшие предсказатели будут найдены в тесте S.M.A.R.T. статистика. Проблема с этими функциями заключается в том, что они обычно варьируются от одного производителя к другому. В этой отрасли нет стандартизации диагностических отчетов. К счастью, большинство производителей договорились о некоторых функциях, чтобы сообщать об этом одинаково. Мы рассмотрим Smart 9, который сообщает, сколько часов накопитель находится в эксплуатации.

Опять же, Smart 9 оказался плохим предсказателем неудачи. Сбои следуют нормальному распределению поведения со средним сроком службы 500 дней. Похоже, что большая часть дисков, которые достигают 1500 дней, выходят из строя.

Теперь мы готовы выбрать алгоритм. Обнаружение аномалий было в центре внимания исследований в течение ряда лет, и в результате существует множество моделей на выбор. Я дам общий обзор некоторых моделей, которые я пробовал, но все они требуют более глубокого изучения, если представится такая возможность.

ADABoost

ADABoost (сокращение от Adaptive Boost) — это алгоритм, который использует ансамбль пней дерева решений (слабых учеников) для классификации. На каждом этапе процесса обучения эти слабые ученики находятся под влиянием предыдущих классификаций, сосредотачиваясь на уменьшении ошибок и сходимости к окончательной модели, которая может оказаться сильным учеником.

Изоляция Лес

IsolationForest — еще один ансамбль, использующий деревья решений. Здесь цель состоит в том, чтобы определить среднее время, необходимое для достижения конечного узла (окончательное решение). Чтобы измерить это, разделите или сделайте на основе минимального и максимального значения функции. Идея состоит в том, чтобы изолировать эту функцию как можно быстрее. Если требуется меньше шагов, чтобы отделить эту функцию от остальных, это явно выброс. Нормальные функции должны требовать больше времени для изоляции. Этот процесс повторяется для определенного количества деревьев, результаты которых усредняются до конечной оценки аномалии.

RUBoost

Случайная неполная выборка (рус) — это метод, который берет класс большинства и уменьшает количество сэмплов в попытке уравнять игровое поле. Это используется в сочетании с AdaBoost, так что на каждом этапе перед сбором образцов для нового ученика длина основного класса уменьшается на некоторое число *n*, чтобы улучшить его способность предсказывать класс меньшинства. Случайная неполная выборка также может использоваться с другими классификаторами ДО моделирования. Но есть аргумент, что можно сделать это на каждом этапе процесса обучения. Общая проблема с RUS заключается в том, что мы получаем меньше данных, иногда гораздо меньше данных, чем нам нужно было изначально. Большинство моделей процветают на большем количестве данных.

SMOTEBoost

Техника передискретизации синтетического меньшинства (smote) является противоположностью RUS. Здесь мы производим образцы класса меньшинства интуитивно на основе его ближайших соседей. Как и RUS, это делается на каждом этапе модели ADABoost, создавая образцы до того, как будет сгенерирован каждый учащийся. Аргумент против SMOTE заключается в том, что, хотя выборки генерируются интуитивно, все же будут дубликаты или почти дубликаты, созданные таким образом, что это уменьшит дисперсию признаков. Большинство моделей процветают за счет дисперсии. Кроме того, он может генерировать сэмплы только из своего функционального пространства, а не за его пределами. Это означает, что он действительно может «дублировать» только те аномалии, которые были замечены ранее.

Судя по предоставленным описаниям, Isolation Forest был бы идеальным решением. Алгоритм интуитивно понятен, работает с данными высокой размерности и не имеет реальных недостатков. К сожалению, по причинам, которые я не могу объяснить, IsolationForest работал ужасно. Результаты, которые я получил, были не лучше, чем случайная догадка. Однако я не буду винить полностью модель. С объемом данных, с которыми мы имеем дело, и ограничениями моего оборудования я не смог должным образом настроить и, следовательно, улучшить его производительность.

AdaBoost работал как хороший базовый уровень, но также не лучше, чем случайное предположение. RUSBoost немного улучшил наш результат, но не столь явным победителем оказался SMOTEBoost. Это имеет смысл. Наш класс меньшинства крошечный по сравнению с остальными данными. Все остальные модели пытались найти иголки в стоге сена. SMOTEBoost заполняет стог сена иголками, а затем пытается их найти. В итоге мы получили оценку AUC ~ 60%, что, учитывая данные и ограничения моего оборудования, является настолько хорошим, насколько это возможно прямо сейчас.

Некоторые будущие соображения включают более глубокое изучение S.M.A.R.T конкретных моделей жестких дисков для разработки новых функций. Кроме того, работа с RUS и SMOTE без ADABoost и внедрение методов в некоторые другие алгоритмы. И, наконец, сборка ПК, чтобы я мог настраивать гиперпараметры IsolationForest без 10 миллионов сбоев системы.

###Ссылки и ресурсы:

Данные: https://www.backblaze.com/b2/hard-drive-test-data.html

Обнаружение аномалий: https://www.svds.com/learning-imbalanced-classes/

код: https://github.com/unburied/DS-UNIT-2-Project

портфолио: https://unburied.github.io