Методы анализа данных шпоры
Чтобы рассказать что-то релевантное всем слушателям, которые могли быть очень неоднородны по знаниям и умениям, я выбрал тему, которую пропагандировал несколько лет назад… решать можно (и часто нужно) простыми методами, буквально в несколько строк. Ниже сокращённое описание доклада.
Забавно, но часто бывает, что полученный в рамках (качественной!) разведки бенчмарк становится финальным алгоритмом (как раз по причине простоты и надёжности). В бизнесе так бывает существенно чаще, но иногда это можно наблюдать и в спортивном анализе данных, где борьба идёт за доли процентов.
Классификация сигналов в 34 символа
Рис. 1. Сигналы разных классов в задаче FCC-2008.
Здесь, чтобы не загромождать картинку, показано всего 4 сигнала, но если проанализировать большее число, то будет заметно, что сигналы
- непериодические (хотя и напоминают колебания),
- не содержат заметных паттернов,
- неоднородные.
Последнее означает, что какие-то естественные их характеристики заметно меняются со временем. Например, если взять среднее значение сигнала, то в начале измерений и в конце средние слабо связаны, даже не коррелируют, см. рис. 2.
Рис. 2. Средние значения сигналов в начале и конце.
Рис. 3. Среднее и дисперсия модуля производной.
Но если увеличить масштаб…
Рис. 4. Увеличение рис. 3.
Рис. 5. Среднее модуля производной vs число точек с нулевой производной.
Казалось бы мы нашли волшебный признак — число точек (понятно, что лучше взять процент), в которых производная обратилась в ноль! Но давайте на этом не остановимся… Как можно обобщить выражение, которое подсчитывает число точек с нулевой производной? На рис. 6 показано два способа:
- Вместо подсчёта числа точек, в которых разница текущего и следующего значения равна нулю, можно задаться некоторым порогом (чтобы разница отличалась не больше, чем на этот порог).
- Можно считать совпадения не соседних значений, а вообще — все совпадения, которые есть в сигнале (это, правда, не обобщение, а модификация идеи).
Рис. 6. Два обобщения формулы.
На рис. 7 показана диаграмма рассеивания в координатах двух новых признаков, построенных по обобщениям (1) и (2). Обобщение (1) провалилось, но зато обобщение (2) оказалось идеальным признаком! По нему обучающая выборка разделяется со 100%-й точностью!
Рис. 7. Диаграмма рассеивания по обобщениям волшебного признака.
После окончания соревнования выяснилось, что и на тестовой выборке точность также 100% (тогда не было публичных турнирных таблиц, каждый участник делал всего одну отсылку, по которой и считалось качество) — она была лишь у одного участника и была получена с помощью 34 символов кода в системе Matlab
Чтение мысли с помощью параллельного переноса
На рис. 8 показаны диаграммы рассеивания по нескольким придуманным признакам. Видно, что тестовая выборка лежит в стороне… но по форме и некоторому зазору между двумя облаками точек она очень похожа на обучающую.
Рис. 8. Признаковое пространство в задаче классификации кортикограмм.
Узнайте о других решениях
Сейчас уже ликами никого не удивишь и рассказы победителей разных соревнований на 70% состоят из того, как они нашли что-то в данных, от чего зависит решение (хотя это и не может быть использовано при реальной эксплуатации алгоритма — только для фиксированного набора данных).
Автор первый раз столкнулся с ликами где-то 6 лет назад на платформе crowdanalytix. Там решалась задача определения реакции пользователя на рассылку: откликнется (1) или нет (0). Упрощённо (выбрасывая некоторые признаки) обучающая таблица выглядела так:
Нетрудно видеть, что если какое-то предложение было успешным (y=1), то число успешных предложений увеличивалось на единицу в следующей строке. Понятно, что даже если y нам не известен он почти полностью (кроме последнего значения) восстанавливается по парам (число предложенией, число успешных) для каждого клиента! Это следует просто из названий признаков. Любопытно, что только 5 участников из 55 тогда заметили это (т.е. использовали смысл признаков для решения задачи). Полезно также отметить, что культура решения задач заметно выросла за 6 лет. Думаю, сейчас больший процент решателей понимают, что названия признаков тоже важны.
А как сделать метрику? Легко придумать метрики для частей описания видео-лекции:
- Сравнение категорий видео (хэмингово расстояние — совпадают или нет)
- Сравнение авторских коллективов (косинусная мера сходства на характеристических векторах авторов)
- Сравнение языков (хэмингово расстояние — совпадают или нет)
- Сравнение названий (любая метрика над текстами)
- Сравнение описаний (любая метрика над текстами)
- и т.п.
Искомую метрику в простейшем варианте можно искать как линейную комбинацию перечисленных базовых. Хотя конкретно в этой задаче она получалась как сумма квадратных корней из линейных комбинаций квадратов базовых метрик, но почему так… уже другая история (желающие могут почитать статью).
Опрос сотрудников, клиентов, потребителей – не просто сбор информации, это полноценное исследование. А целью всякого исследования является научно- обоснованная интерпретация изученных фактов. Первичный материал необходимо обработать, а именно упорядочить и проанализировать.
Анализ данных исследования – ключевой этап. Он представляет собой совокупность приемов и методов, направленных на то, чтобы проверить, насколько были верны предположения и гипотезы, а также ответить на заданные вопросы. Данный этап является, пожалуй, наиболее сложным с точки зрения интеллектуальных усилий и профессиональной квалификации, однако позволяет получить максимум полезной информации из собранных данных.
Методы анализа данных многообразны. Выбор конкретного метода анализа данных зависит, в первую очередь, от того, на какие вопросы мы хотим получить ответ.
Можно выделить два класса процедур анализа данных:
- одномерные (дескриптивные) и
- многомерные.
Многомерные типы анализа данных
Многомерный анализ данных позволяет одновременно исследовать взаимоотношения двух и более переменных и проверять гипотезы о причинных связях между ними.
Техники многомерного анализа разнообразны. Мы рассмотрим следующие:
- Факторный анализ
- Кластерный анализ
Суть факторного анализа, состоит в том, чтобы имея большое число параметров, выделить малое число макропараметров, которыми и будут определяться различия между измеряемыми параметрами. Это позволит оптимизировать структуру анализируемых данных.
Применение факторного анализа преследует две цели:
- сокращение числа переменных;
- классификация данных.
Факторный анализ довольно полезен на практике. Приведем несколько примеров.
Актуальным примером исследования в сфере банковского дела, может послужить, изучение уровня доверия клиента к банку, которое можно описать следующими факторами:
— надежность сделок (включающий такие параметры, как сохранность средств, возможность беспрепятственного их перевода);
— обслуживание клиентов (профессионализм сотрудников, их благожелательность) и
— качество обслуживания (точность выполнение операций, отсутствие ошибок) и др.
Кластерный анализ (от англ. сluster – сгусток, пучок, гроздь) – это один из способов классификации объектов. Он позволяет рассматривать достаточно большой объем информации, сжимая его и делая компактными и наглядными.
Целью кластерного анализа является выделение сравнительно небольшого числа групп объектов, как можно более схожих между собой внутри группы, и как можно более отличающихся в разных группах. В настоящее время разработано достаточно большое число алгоритмов кластерного анализа. Однако, попробуем объяснить его суть, не прибегая к строгому теоретизированию.
Допустим, вы планируете провести опрос потребителей, (а все потребители разные), и вам, соответственно, необходимы различные стратегии для их привлечения. Для решения данной задачи мы предлагаем сегментировать клиентов, прибегнув к методу кластеризации. Для этого выполняем следующие шаги:
- формируем выборку и проводим опрос клиентов,
- определяем переменные (характеристики), по которым будем оценивать респондентов в выборке,
- вычисляем значения меры сходства и различия между ответами респондентов,
- выбираем метод кластеризации (т.е. правила объединения респондентов в группы),
- определяем оптимальное число кластеров (групп).
В результате получаем таблицу следующего содержания:
Информация, представленная в таблице, позволяет нам составить портрет клиентов каждого кластера, которые впоследствии необходимо учитывать при составлении стратегии успешного продвижения продукта на рынке.
Кластерный анализ хорошо зарекомендовал себя, и на сегодняшний день применяется в различных прикладных областях:
- В социологии: разделение респондентов на различные социально-демографические группы.
- В маркетинге: сегментация рынка по группам потребителей, группировка конкурентов по факторам конкурентоспособности.
- В менеджменте: выделение групп сотрудников с разным уровнем мотивации, выявление мотивирующих/демотивирующих факторов в организации, классификация конкурентоспособных отраслей и поставщиков, и др.
- В медицине — классификация симптомов, признаков заболеваний, пациентов, препаратов для успешной терапии.
- А также психиатрии, биологии, экологии, информатике и т.д.
Рассмотренные методики относятся к анализу данных, полученных в ходе проведения количественных исследований.
По вопросам расчета индексов:
Анализ данных можно описать как процесс, состоящий из нескольких шагов, в которых сырые данные превращаются и обрабатываются с целью создать визуализации и сделать предсказания на основе математической модели.
Анализ данных — это всего лишь последовательность шагов, каждый из которых играет ключевую роль для последующих. Этот процесс похож на цепь последовательных, связанных между собой этапов:
- Определение проблемы;
- Извлечение данных;
- Подготовка данных — очистка данных;
- Подготовка данных — преобразование данных;
- Исследование и визуализация данных;
- Предсказательная модель;
- Проверка модели, тестирование;
- Развертывание — визуализация и интерпретация результатов;
- Развертывание — развертывание решения.
График показывает схематически все этапы анализа данных.
Определение проблемы
Процесс анализа данных начинается задолго до сбора сырых данных. Он начинается с проблемы, которую необходимо сперва определить, а затем и решить.
Определить ее можно только сосредоточившись на изучаемой системе: механизме, приложении или процессе в целом. Исследование может быть предназначено для лучшего понимания функционирования системы, но его лучше спроектировать так, чтобы понять принципы поведения и впоследствии делать предсказания или выбор (осознанный).
Процессы определения и документации результатов научной проблемы или бизнеса нужны для того, чтобы сосредоточить анализ на получении результатов.
На самом деле, всеобъемлющее и исчерпывающее исследование системы — это сложный процесс, и почти всегда нет достаточного количества информации, с которой можно начать. Поэтому определение проблемы и особенно планирование приводят к появлению руководящих принципов, которым необходимо следовать в течение всего проекта.
Когда проблема определена и задокументирована, можно двигаться к этапу планирования проекта анализа данных. Планирование необходимо для понимания того, какие профессионалы и ресурсы понадобятся для выполнения требований проекта максимально эффективно. Таким образом задача — рассмотреть те вопросы в области, которые касаются решения этой проблемы Необходимо найти специалистов с разными интересами и установить ПО, нужное для анализа данных.
Построение хорошей команды — один из ключевых факторов успешного анализа данных.
Также во время фазы планировки выбирается эффективная команда. Такие команды должны быть междисциплинарными, чтобы у них была возможность решать проблемы, рассматривая данные с разных точек зрения.
Извлечение данных
Когда проблема определена, первый шаг для проведения анализа — получение данных. Они должны быть выбраны с одной базовой целью — построение предсказательной модели. Поэтому выбор данных — также важный момент для успешного анализа.
Данные должны максимально отражать реальный мир — то, как система реагирует на него. Например, использовании больших наборов сырых данных, которые были собраны неграмотно, это привести либо к неудаче, либо к неопределенности.
Поэтому недостаточное внимание, уделенное выбору данных или выбор таких, которые не представляют систему, приведет к тому, что модели не будут соответствовать изучаемым системам.
Поиск и извлечение данных часто требует интуиции, границы которой лежат за пределами технических исследований и извлечения данных. Этот процесс также требует понимания природы и формы данных, предоставить которое может только опыт и знания практической области проблемы.
Вне зависимости от количества и качества необходимых данных важный вопрос — использование лучших источников данных.
Если средой изучения выступает лаборатория (техническая или научная), а сгенерированные данные экспериментальные, то источник данных легко определить. В этом случае речь идет исключительно о самих экспериментах.
Но при анализе данных невозможно воспроизводить системы, в которых данные собираются исключительно экспериментальным путем, во всех областях применения. Многие области требуют поиска данных в окружающем мире, часто полагаясь на внешние экспериментальные данные или даже на сбор их с помощью интервью и опросов.
В таких случаях поиск хорошего источника данных, способного предоставить все необходимые данные, — задача не из легких. Часто необходимо получать данные из нескольких источников данных для устранения недостатков, выявления расхождений и с целью сделать данные максимально общими.
Интернет — хорошее место для начала поиска данных. Но большую часть из них не так просто взять. Не все данные хранятся в виде файла или базы данных. Они могут содержаться в файле HTML или другом формате. Тут на помощь приходит техника парсинга. Он позволяет собирать данные с помощью поиска определенных HTML-тегов на страницах. При появлении таких совпадений специальный софт извлекает нужные данные. Когда поиск завершен, у вас есть список данных, которые необходимо проанализировать.
Подготовка данных
Из всех этапов анализа подготовка данных кажется наименее проблемным шагом, но на самом деле требует наибольшего количества ресурсов и времени для завершения. Данные часто собираются из разных источников, каждый из которых может предлагать их в собственном виде или формате. Их нужно подготовить для процесса анализа.
Подготовка данных включает такие процессы:
- получение,
- очистка,
- нормализация,
- превращение в оптимизированный набор данных.
Обычно это табличная форма, которая идеально подходит для этих методов, что были запланированы на этапе проектировки.
Многие проблемы могут возникнуть при появлении недействительных, двусмысленных или недостающих значений, повторении полей или данных, несоответствующих допустимому интервалу.
Изучение данных/визуализация
Изучение данных — это их анализ в графической или статистической репрезентации с целью поиска моделей или взаимосвязей. Визуализация — лучший инструмент для выделения подобных моделей.
За последние годы визуализация данных развилась так сильно, что стала независимой дисциплиной. Многочисленные технологии используются исключительно для отображения данных, а многие типы отображения работают так, чтобы получать только лучшую информацию из набора данных.
Исследование данных состоит из предварительного изучения, которое необходимо для понимания типа и значения собранной информации. Вместе с информацией, собранной при определении проблемы, такая категоризация определяет, какой метод анализа данных лучше всего подойдет для определения модели.
Эта фаза, в дополнение к изучению графиков, состоит из следующих шагов:
- Обобщение данных;
- Группировка данных;
- Исследование отношений между разными атрибутами;
- Определение моделей и тенденций;
- Построение моделей регрессионного анализа;
- Построение моделей классификации.
Как правило, анализ данных требует обобщения заявлений касательно изучаемых данных.
Обобщение — процесс, при котором количество данных для интерпретации уменьшается без потери важной информации.
Кластерный анализ — метод анализа данных, используемый для поиска групп, объединенных общими атрибутами (также называется группировкой).
Еще один важный этап анализа — идентификация отношений, тенденций и аномалий в данных. Для поиска такой информации часто нужно использовать инструменты и проводить дополнительные этапы анализа, но уже на визуализациях.
Другие методы поиска данных, такие как деревья решений и ассоциативные правила, автоматически извлекают важные факты или правила из данных. Эти подходы используются параллельно с визуализацией для поиска взаимоотношений данных.
Предсказательная (предиктивная) модель
Предсказательная аналитика — это процесс в анализе данных, который нужен для создания или поиска подходящей статистической модели для предсказания вероятности результата.
После изучения данных у вас есть вся необходимая информация для развития математической модели, которая кодирует отношения между данными. Эти модели полезны для понимания изучаемой системы и используются в двух направлениях.
Первое — предсказания о значениях данных, которые создает система. В этом случае речь идет о регрессионных моделях.
Второе — классификация новых продуктов. Это уже модели классификации или модели кластерного анализа. На самом деле, можно разделить модели в соответствии с типом результатов, к которым те приводят:
- Модели классификации: если полученный результат — качественная переменная.
- Регрессионные модели: если полученный результат числовой.
- Кластерные модели: если полученный результат описательный.
Простые методы генерации этих моделей включают такие техники:
- линейная регрессия,
- логистическая регрессия,
- классификация,
- дерево решений,
- метод k-ближайших соседей.
Но таких методов много, и у каждого есть свои характеристики, которые делают их подходящими для определенных типов данных и анализа. Каждый из них приводит к появлению определенной модели, а их выбор соответствует природе модели продукта.
Проверка модели
Проверка (валидация) модели, то есть фаза тестирования, — это важный этап. Он позволяет проверить модель, построенную на основе начальных данных. Он важен, потому что позволяет узнать достоверность данных, созданных моделью, сравнив их с реальной системой. Но в этот раз вы берете за основу начальные данные, которые использовались для анализа.
Как правило, при использовании данных для построения модели вы будете воспринимать их как тренировочный набор данных (датасет), а для проверки — как валидационный набор данных.
Таким образом сравнивая данные, созданные моделью и созданные системой, вы сможете оценивать ошибки. С помощью разных наборов данных оценивать пределы достоверности созданной модели. Правильно предсказанные значения могут быть достоверны только в определенном диапазоне или иметь разные уровни соответствия в зависимости от диапазона учитываемых значений.
Этот процесс позволяет не только в числовом виде оценивать эффективность модели, но также сравнивать ее с другими. Есть несколько подобных техник; самая известная — перекрестная проверка (кросс-валидация). Она основана на разделении учебного набора на разные части. Каждая из них, в свою очередь, будет использоваться в качестве валидационного набора. Все остальные — как тренировочного. Так вы получите модель, которая постепенно совершенствуется.
Развертывание (деплой)
Это финальный шаг процесса анализа, задача которого — предоставить результаты, то есть выводы анализа. В процессе развертывания бизнес-среды анализ является выгодой, которую получит клиент, заказавший анализ. В технической или научной средах результат выдает конструкционные решения или научные публикации.
Развертывание — это процесс использования на практике результатов анализа данных.
Есть несколько способов развертывания результатов анализа данных или майнинга данных. Обычно развертывание состоит из написания отчета для руководства или клиента. Этот документ концептуально описывает полученные результаты. Он должен быть направлен руководству, которое будет принимать решения. Затем оно использует выводы на практике.
В документации от аналитика должны быть подробно рассмотрены следующие темы:
- Результаты анализа;
- Развертывание решения;
- Анализ рисков;
- Измерения влияния на бизнес.
Когда результаты проекта включают генерацию предсказательных моделей, они могут быть использованы в качестве отдельных приложений или встроены в ПО.
Анализ данных — это область математики и информатики, занимающаяся построением и исследованием наиболее общих математических методов и вычислительных алгоритмов извлечения знаний из экспериментальных (в широком смысле) данных; процесс исследования, фильтрации, преобразования и моделирования данных с целью извлечения полезной информации и принятия решений.
Говоря чуть более простым языком, я бы предложил понимать под анализом данных совокупность методов и приложений, связанных с алгоритмами обработки данных и не имеющих четко зафиксированного ответа на каждый входящий объект. Это будет отличать их от классических алгоритмов, например реализующих сортировку или словарь. От конкретной реализации классического алгоритма зависит время его выполнения и объем занимаемой памяти, но ожидаемый результат его применения строго зафиксирован. В противоположность этому мы ожидаем от нейросети, распознающей цифры, ответа 8 при входящей картинке, изображающей рукописную восьмерку, но не можем требовать этого результата. Более того, любая (в разумном смысле этого слова) нейросеть будет иногда ошибаться на тех или иных вариантах корректных входных данных. Будем называть такую постановку задачи и применяющиеся при ее решении методы и алгоритмы недетерминистическими (или нечеткими) в отличии от классических (детерминистических, четких).
Алгоритмы и эвристики
Описанную задачу распознавания цифр можно решать пытаясь самостоятельно подобрать функцию, реализующую соответствующее отображение. Получится, скорее всего, не очень быстро и не очень хорошо. С другой стороны, можно прибегнуть к методам машинного обучения, то есть воспользоваться вручную размеченной выборкой (или, в других случаях, теми или иными историческими данными) для автоматического подбора решающей функции. Таким образом, здесь и далее (обобщенным) алгоритмом машинного обучения я буду называть алгоритм, так или иначе на основе данных формирующий недетерминистический алгоритм, решающий ту или иную задачу. (Недетерминистичность полученного алгоритма нужна для того, чтобы под определение не подпадал справочник, использующий предварительно подгруженные данные или внешний API).
Список эффективных алгоритмов машинного обучения с учителем (в узком смысле) строго ограничен и почти не пополняется несмотря на активные исследования в этой области. Однако для правильного применения этих алгоритмов требуется опыт и подготовка. Вопросы эффективного сведения практической задачи к задаче анализа данных, подбора списка фичей или препроцессинга, модели и ее параметров, а также грамотного внедрения непросты и сами по себе, не говоря уже о работе над ними в совокупности.
Общая схема решения задачи анализа данных при использовании метода машинного обучения выглядит таким образом:
Эвристика — это просто вручную подобранная функция, не использующая продвинутых методов, и, как правило, не дающая хорошего результата, но приемлемая в определенных случаях, например на ранних стадиях развития проекта.
Задачи машинного обучения с учителем
В зависимости от постановки, задачи машинного обучения делят на задачи классификации, регрессии и логистической регрессии.
Классификация — постановка задачи при которой требуется определить, какому классу из некоторого четко заданного списка относится входящий объект. Типичным и популярным примером является уже упоминавшееся выше распознавание цифр, в ней каждому изображению нужно сопоставить один из 10 классов, соответствующий изображенной цифре.
Регрессия — постановка задачи, при которой требуется предсказать некоторую количественную характеристику объекта, например цену или возраст.
Логистическая регрессия сочетает свойства перечисленных выше двух постановок задач. В ней задаются совершившиеся события на объектах, а требуется предсказать их вероятности на новых объектах. Типичным примером такой задачи является задача предсказания вероятности перехода пользователя по рекомендательной ссылке или рекламному объявлению.
Выбор метрики и валидационная процедура
Прежде чем внедрять алгоритм в работающий и взаимодействующий с реальными пользователями продукт (или передавать его заказчику), хорошо бы оценить, насколько хорошо этот алгоритм работает. Для этого используется следующий механизм, называемый валидационной процедурой. Имеющаяся в распоряжении размеченная выборка разделяется на две части — обучающую и валидационную. Обучение алгоритма происходит на обучающей выборке, а оценка его качества (или валидация) — на валидационной. В том случае, если мы пока не используем алгоритм машинного обучения, а подбираем эвристику, можно считать, что вся размеченная выборка, на которой мы оцениваем качество работы алгоритма является валидационной, а обучающая выборка пуста — состоит из 0 элементов.
Типичный цикл развития проекта
В самых общих чертах цикл развития проекта по анализу данных выглядит следующим образом.
- Изучение постановки задачи, возможных источников данных.
- Переформулировка на математическом языке, выбор метрик качества предсказания.
- Написание пайплайна для обучения и (хотя бы тестового) использования в реальном окружении.
- Написание решающей задачу эвристики или несложного алгоритма машинного обучения.
- По необходимости улучшение качества работы алгоритма, возможно уточнение метрик, привлечение дополнительных данных.
Заключение
На этом пока все, следующий раз мы обсудим какие конкретно алгоритмы применяются для решения задач классификации, регрессии и логистической регрессии, а о том, как сделать базовое исследование задачи и подготовить его результат для использования прикладным программистом уже можно почитать здесь.
Читайте также: