что такое предикторы в машинном обучении
Отбор признаков в задачах машинного обучения. Часть 1
1. Методы фильтрации
Методы фильтрации применяются до обучения модели и, как правило, имеют низкую стоимость вычислений. К ним можно отнести визуальный анализ (например, удаление признака, у которого только одно значение, или большинство значений пропущено), оценку признаков с помощью какого-нибудь статистического критерия (дисперсии, корреляции, X 2 и др.) и экспертную оценку (удаление признаков, которые не подходят по смыслу, или признаков с некорректными значениями).
Простейшим способом оценки пригодности признаков является разведочный анализ данных (например, с библиотекой pandas-profiling). Эту задачу можно автоматизировать с помощью библиотеки feature-selector, которая отбирает признаки по следующим параметрам:
Количество пропущенных значений (удаляются признаки у которых процент пропущенных значений больше порогового).
Коэффициент корреляции (удаляются признаки, у которых коэффициент корреляции больше порогового).
Вариативность (удаляются признаки, состоящие из одного значения).
Оценка важности признаков с помощью lightgbm (удаляются признаки, имеющие низкую важность в модели lightgbm. Следует применять только если lightgbm имеет хорошую точность.)
Туториал по этой библиотеке находится здесь.
Более сложные методы автоматического отбора признаков реализованы в sklearn. VarianceThreshold отбирает признаки, у которых дисперсия меньше заданного значения. SelectKBest и SelectPercentile оценивают взаимосвязь предикторов с целевой переменной используя статистические тесты, позволяя отобрать соответственно заданное количество и долю наилучших по заданному критерию признаков. В качестве статистических тестов используются F-тест,
и взаимная информация.
F-тест
F-тест оценивает степень линейной зависимости между предикторами и целевой переменной, поэтому он лучше всего подойдёт для линейных моделей. Реализован в sklearn как f_regression и f_classif соответственно для регрессии и классификации.
Этот тест используется в задах классификации и оценивает зависимость между признаками и классами целевой пременной. Описание метода приведено здесьи здесь (для sklearn). Стоит отметить, что этот тип тестов требует неотрицательных и правильно отмасштабированных признаков.
Взаимная информация
2. Встроенные методы
Встроенные методы выполняют отбор признаков во время обучения модели, оптимизируя их набор для достижения лучшей точности. К этим методам можно отнести регуляризацию в линейных моделях (обычно L1) и расчёт важности признаков в алгоритмах с деревьями (который хорошо разобран здесь). Отметим, что для линейных моделей требуется масштабирование и нормализация данных.
Пример
fnlwgt (final weight) – примерная оценка количества людей, которое представляет каждая строка данных
educational-num – длительность обучения
capital-gain – прирост капитала
capital-loss – потеря капитала
hours-per-week – количество рабочих часов в неделю
Машинное обучение: что нужно знать о создании стратегий для торговли на бирже. Часть IV
На Хабре и в аналитическом разделе нашего сайта мы много пишем о тенденциях финансового рынка и продолаем публикацию серии материалов, посвященных вопросам создания стратегий для торговли на бирже, основанную на статьях автора блога Financial Hacker. В предыдущих топиках мы поговорили об использовании неэффективностей рынка на примере истории с ценовыми ограничением для швейцарского франка, рассмотрели важные факторы, влияющие на эффективность стратегии и обсудили общие принципы разработки модель-ориентированных торговых систем.
Сегодня же речь пойдет об использовании для этих целей технологий дата майнинга и машинного обучения.
В 1996 году компьютер Deep Blue впервые победил чемпиона мира по шахматам. Прошло еще 20 лет и программа AlphaGo победила в серии с лучшим игроком в Го, уступив лишь одну игру. Deep Blue представлял собой модель-ориентированную систему с жестким набором шахматных правил. AlphaGo же использует технологии Data Mining. Это нейронная сеть, обученная на примерах тысячи партий Го. В отличие от шахмат, в этой игре пространство выбора вариантов настолько огромно, что простой перебор не поможет. Поэтому прорыв произошел не за счет совершенствования «железа», а исключительно благодаря новому софту.
Сегодня мы мы рассмотрим подход к использованию дата-майнинга для разработки торговых стратегий, который не подразумевает глубокого анализа рыночных механизмов. Вместо этого он использует информацию из кривой цен и других источников для поиска в ней предсказуемых аномалий. Машинное обучение или «искусственный интеллект» — не всегда обязательная часть подобной стратегии. На практике самым популярным и самым успешным вариантом применения данного метода является работа без привлечения навороченных нейронных сетей или метода опорных векторов.
Принципы машинного обучения
В основе обучающего алгоритма заложена концепция шаблонов. Обычно это исторические данные о ценах. Каждый шаблон состоит из n переменных x1… xn, обычно называемых маркерами предсказания (предикторами) или просто параметрами. В качестве таких предикторов могут выступать ценовой возврат последних n-делений или набор классических индикаторов, а также любые другие функции кривой цен. Каждый шаблон включает целевую величину y — например, прибыль следующей сделки после применения шаблона или следующее движение цены. В процессе обучения алгоритм узнает, как получить целевую величину, основываясь на предикторах. Это знание хранится в структуре данных, именуемой в нашем случае моделью, индивидуальной для каждого алгоритма. Эта модель может быть функцией языка C, описывающей правила прогнозирования, выработанные в процессе обучения. Или это может быть набор соединений в нейронной сети.
Регрессивные алгоритмы предсказывают числовые значения, такие как величина следующего изменения цены. Классификационные алгоритмы генерируют класс качественных шаблонов. Например, связанных с прибылью или убытком. Ряд алгоритмов нейронных сетей или опорных векторов могут одновременно работать в обеих версиях. Некоторые алгоритмы не нуждаются в целевой величине для разделения шаблонов на классы. Это так называемое обучение без учителя (unsupervised learning), в отличие от обычного с учителем (supervised learning).
Какие бы сигналы мы не использовали в качестве маркеров предсказания в сфере финансов, большинство из них будет содержать много шума и мало полезной информации. Поэтому финансовое прогнозирование – самая сложная задача в машинном обучении. Более сложные алгоритмы не всегда дают более качественный результат. Для конечного успеха критичным является выбор предикторов. На этот случай в стратегии интеллектуального анализа предусмотрен алгоритм предварительного отбора, который выбирает несколько полезных маркеров предсказаний из множества вариантов. Этот отбор может проходить на основе их корреляции, значимости или просто берутся те, что прошли тест.
Далее мы поговорим о наиболее популярных методиках интеллектуального анализа, используемых в мире финансов.
Метод проб и ошибок
Большинство торговых систем, которые компания автора блога Financial Hacker разрабатывает для своих клиентов, изначально основаны не на финансовой модели. Заказчик хочет получать сигналы для совершения транзакций, опирающиеся на конкретные технические индикаторы, фильтруемые через индикаторы с использованием еще большего числа технических индикаторов. Обычно, никто толком не может ответить на вопрос о том, как это месиво индикаторов может являться рабочей стратегией. Ответ, как правило, такой: «Просто поверьте. Я так вручную торгую уже много лет, и все работает».
На самом деле, все так и есть. По крайней мере, в некоторых случаях. Хотя многие эти системы не были прошли форвардный анализ (некоторые — даже элементарный бэктест), большинство неплохо справляется со своими задачами. Клиент систематически экспериментирует с техническими индикаторами, пока не найдет нужную комбинацию, которая работает на реальном рынке с выбранными активами. Метод проб и ошибок – это классический вариант интеллектуального анализа. Просто он производится человеком, а не машиной. Иногда это дает хороший результат.
Свечные паттерны
Нет смысла останавливаться на разборе устаревших методик, типа японских свечных паттернов, которые были популярны 200 лет назад. Современный эквивалент свечных паттернов – это безиндикаторный анализ price action. В нем трейдеры все еще пытаются найти паттерн, предсказывающий движение цены. Но в данном случае они анализируют современные ценовые кривые. Для этой цели существует набор специальных программ. Они подбирают подходящие паттерны по заложенным пользователем критериям и используют их для построения функции. В системе Zorro это может выглядеть так:
Функция C делает возврат 1, когда сигнал соответствует одному из паттернов. В ином случае значение – 0. По этому коду можно видеть, что это не самый быстрый путь поиска паттернов. Альтернативный вариант – вначале сортировать сигналы по их значению, затем проверять порядок сортировки.
Даже несмотря на применение техник дата-майнинга такой ценовой трейдинг должен иметь под собой какие-то рациональные основания. Можно представить, что определенные последовательности движения цены приводят к определенной реакции участников рынка. Это и будет паттерном прогноза. Число паттернов всегда будет ограничено, если внимательно присмотреться к последовательности смежных свечей. Следующий шаг – сравнение свечей, которые находятся на расстоянии друг от друга. Мы выбираем их произвольно за достаточно долгий период времени. В этом случае число паттернов может быть безграничным. Но здесь легко потерять почву под ногами. В то же время, трудно представить, что движение цены может быть предсказано свечным паттерном недельной давности. Но в целом задача поиска свечных паттернов архисложная и чревата множеством ошибок.
Линейная регрессия
Смысл работы большинство сложных алгоритмов машинного обучения прост: нужно предсказать переменную целевую величину y через линейную комбинацию предикторов x1 … xn.
Коэффициент an рассчитывается для минимизации суммы квадратов различий между истинным значением y обучающего шаблона и предсказываемыми значениями y по следующей формуле:
Для нормального распределения шаблонов минимизация возможна через математическую матрицу, поэтому никакой итерации не требуется. В случае n = 1 с одной переменной предиктора x формула регрессии упрощается до:
Перцепция
В этом фрагменте видно, что массив sig эквивалентен нашим маркерам предсказания xn в формуле регрессии, а числовые множители – это коэффициенты an.
Нейронные сети
Линейная или логистическая регрессия может решить лишь линейные проблемы. Многие просто не работают с такой категорией вопросов. Искусственная нейронная сеть (ИНС) призвана решать нелинейные проблемы. Она представляет собой пучок перцептронов, соединенных в набор слоев. Каждый из них является нейроном сети. Вот как выглядят инпуты и аутпуты такой сети:
Нейронная сеть обучается через распознавание коэффициента, который бы минимизировал расхождение между шаблоном предсказания и шаблоном цели. Но теперь нам нужно задействовать еще и процесс аппроксимации. Обычно он применяется вместе с методом обратного распространения ошибки от входных данных к выходным, по пути оптимизируя нагрузку.
Этот процесс ставит два ограничения. Первый: нейронные аутпуты теперь должны быть непрерывно дифференцируемыми функциями, вместо того чтобы быть просто порогами перцепторов. Второе: сеть не должна быть чересчур глубокой, нужно избегать слишком большого числа скрытых слоев между инпутами и аутпутами. Это, конечно, ограничивает сложность проблем, которые простая нейронная сеть способна решать.
Если использовать нейронную сеть для торговли, то необходимо варьировать и изменять множество параметров. Неосторожность в обращении с ними может привести к тому, что будут искажены:
Глубокое обучение
Если речь идет о множестве скрытых слоев и тысячах нейронов, то это уже глубокое обучение. Здесь стандартное обратное распространение не работает. В последние несколько лет появились несколько популярных методик обучения такой огромной системы. Обычно они включают этап пред-обучения скрытых слоев для достижения нужного эффекта. Один из вариантов – машина Больцмана – неконтролируемый классифицирующий алгоритм со специальной структурой сети, где отсутствуют соединения между скрытыми нейронами. Разреженный автокодировщик (Sparse Autoencoder) – другой вариант, он использует стандартную структуру сети и предобучает скрытые слои через воспроизводство сигналов инпута для аутпута слоев с минимальным, насколько это возможно, количеством активных соединений. Такие методы уже позволяют решать серьезные задачи. Ну, например, побеждать лучшего в мире игрока в го.
Ниже пример скрипта на R, использующий автокодировщик с тремя скрытыми слоями для определения сигналов трейдинга с помощью функции neural() пакета Zorro:
Метод опорных векторов
Также как и нейронная сеть, метод опорных векторов – это расширенный вариант линейной регрессии. Взглянем на эту формулу еще раз:
Маркеры предсказания xn можно рассматривать как координаты пространства с n измерениями. Привязав целевую величину y к фиксированному значению, мы определим плоскость или, как ее еще называют – гиперплоскость. Она отделяет шаблоны с y > 0 от шаблонов с y t от шаблонов со значением x1
Machine Learning – не только нейронки
Нейронные сети и глубокое обучение (deep learning) у всех на слуху, но нейросети – это лишь подобласть такого обширного предмета, как машинное обучение (machine learning). Существует несколько сотен других алгоритмов, которые способны быстро и эффективно решать задачи искусственного интеллекта и в большинстве случаев являются более интерпретируемыми для человека. В этой статье рассмотрим алгоритмы классического машинного обучения, принцип работы нейросетей, подготовку данных для обучения моделей и задачи, которые решают с помощью искусственного интеллекта.
Основные задачи машинного обучения
Восстановление регрессии (прогнозирования) – построение модели, способной предсказывать численную величину на основе набора признаков объекта.
Классификация – определение категории объекта на основе его признаков.
Кластеризация – распределение объектов.
Допустим, есть набор данных со статистикой по приложениям. В нем есть следующие сведения: размер, категория, количество скачиваний, количество отзывов, рейтинг, возрастной рейтинг, жанр и цена. С помощью этого набора данных и машинного обучения можно решить такие задачи:
Прогнозирование рейтинга приложения на основе признаков: размер, категория, возрастной рейтинг, жанр и цена – задача регрессии.
Определение категории приложения на основе набора признаков: размер, возрастной рейтинг, жанр и цена – задача классификации.
Разбиение приложений на группы на основании множества признаков (например, количество отзывов, скачиваний, рейтинга) таким образом, чтобы приложения внутри группы были более похожи друг на друга, чем приложения разных групп.
Нейронные сети (многослойный перцептрон)
Существует мнение, что лучшие идеи для изобретений человек заимствует у природы. Нейронные сети – это именно тот случай, ведь сама концепция нейросетей базируется на функциональных особенностях головного мозга.
Принцип работы
Есть определенное количество нейронов, которые между собой связаны и взаимодействуют друг с другом путем передачи сигналов. Также есть рецепторы, которые получают информацию, поступающую извне, и исполнительный орган, на который приходит итоговый сигнал. По схожему принципу работают искусственные нейросети: есть несколько слоев с нейронами и связи между ними (каждая связь имеет свой весовой коэффициент). По связям передаются сигналы в виде численных значений, первый слой выполняет собой роль рецепторов, то есть получает набор признаков для обучения, и есть выходной слой, который выдает ответ.
Нейронные связи в головном мозге («Создаем нейронную сеть», Тарик Рашид)
Пример искусственной трехслойной нейросети («Создаем нейронную сеть», Тарик Рашид)
Каждый слой нейросети оперирует разными представлениями о данных. На рисунке ниже можно увидеть пример использованиям глубокого обучения (нейросети) для распознавания образа на картинке. На входной слой нам поступают пиксели изображений, далее после вычислений между входным и первым скрытым слоем мы получаем границы, на втором скрытом слое – контуры, на третьем – части объектов, на выходном – вероятности принадлежности изображения к каждому типу объектов.
Пример использования нейросети для распознавания образа ( «Глубокое обучение», Ян Гудфеллоу)
Как настраивать
Настраивается путем задания количества узлов, скрытых слоев и выбора функции активации. В искусственных нейронных сетях функция активации нейрона отвечает за выходной сигнал, который определяется входным сигналом или набором входных сигналов.
Задачи: классификация, регрессия, кластеризация.
Классические алгоритмы машинного обучения
K-ближайших соседей
Метод K-ближайших соседей – простой и эффективный алгоритм, его можно описать известной поговоркой: “Скажи мне, кто твой друг, и я скажу, кто ты”.
Принцип работы
Пусть имеется набор данных с заданными классами. Мы можем определить класс неизвестного объекта, если рассмотрим определенное количество ближайших объектов (k) и присвоим тот класс, который имеет большинство “соседей”. Посмотрим на рисунок ниже.
Есть набор точек с двумя классами: синие крестики и красные кружки. Мы хотим определить, к какому классу относится неизвестная зеленая точка. Для этого мы берем k ближайших соседей, в данном случае 3, и смотрим, к каким классам они относятся. Из трех ближайших соседей больше оказалось синих крестиков, соответственно, мы можем предположить, что зеленая точка также, скорее всего, относится к этому классу.
Как настраивать
Необходимо подобрать параметр k (количество ближайших соседей) и метрику для измерения расстояний между объектами.
Задачи: классификация, также может применяться и для задач регрессии.
Линейная регрессия
Линейная регрессия – простая и эффективная модель машинного обучения, способная решать задачи быстро и недорого.
Принцип работы
Модель линейной регрессии можно описать уравнением
Здесь x – это значения признаков, y – целевая переменная, a – весовые коэффициенты признаков. При обучении модели весовые коэффициенты подбираются таким образом, чтобы как можно лучше описывалась линейная зависимость признаков от целевой переменной.
Пример: задача предсказания стоимости квартиры в зависимости от площади и удаленности от метро в минутах. Целевой переменной (y) будет являться стоимость, а признаками (x) – площадь и удаленность.
На рисунке ниже также представлен пример построения линейной регрессии. Красная прямая более точно описывает линейную зависимость x от y.
Как настраивать
Для многих моделей Machine Learning, в частности и для линейной регрессии, можно улучшить итоговое качество с помощью регуляризации.
Регуляризация в статистике, машинном обучении, теории обратных задач — метод добавления некоторых дополнительных ограничений к условию с целью решить некорректно поставленную задачу или предотвратить переобучение, то есть ситуацию, когда модель хорошо показывает себя на тренировочный данных, но перестаёт работать на новых.
Распространенные методы регуляризации для повышения качества модели линейной регрессии:
Ridge — один из методов понижения размерности. Применяется для борьбы с переизбыточностью данных, когда независимые переменные коррелируют друг с другом (мультиколлинеарность), вследствие чего проявляется неустойчивость оценок коэффициентов линейной регрессии.
LASSO — также как и Ridge, применяется для борьбы с переизбыточностью данных.
Elastic-Net — модель регрессии с двумя регуляризаторами L1, L2. Частными случаями являются модели LASSO L1 = 0 и Ridge регрессии L2 = 0.
Задачи: регрессия.
Логистическая регрессия
Логистическая регрессия – также простая и эффективная модель машинного обучения, способная решать задачи быстро и недорого.
Принцип работы
Указанная выше сумма проходит через функцию сигмоиды, которая возвращает число от 0 до 1, характеризующее вероятность отнесения объекта к классу 1. Пример: логистическую регрессию часто применяют в задачах кредитного скоринга, когда по определенным данным о клиенте нужно определить, стоит ли выдавать ему кредит.
Иллюстрация алгоритмов линейной и логистической регрессии (источник)
Как настраивать
Задачи: классификация.
Метод опорных векторов (SVM)
Принцип работы
Чтобы лучше всего понять алгоритм метода опорных векторов, рассмотрим рисунок. На рисунке приведен пример двух линейно разделимых классов в двумерном пространстве. Идея алгоритма заключается в нахождении оптимальной разделяющей прямой (или гиперплоскости для более высоких пространств) для отделения объектов одного класса от другого. Пунктирные линии выделяют разделяющую полосу и проводятся через объекты, которые называют опорными. Чем шире разделяющая полоса, тем качественнее модель SVM. Чтобы определить класс объекта, достаточно определить, с какой стороны гиперплоскости он находится.
Как настраивать
Необходимо подобрать оптимальное ядро (функцию переводящую признаковое пространство в более высокую размерность), если линейная зависимость слабо выражена.
Задачи: классификация и регрессия.
Сравнение классических алгоритмов с нейросетью
Для примера мы взяли датасет со статистикой приложений в Play Market. Датасет содержит следующие данные: размер приложения, возрастной рейтинг, количество скачиваний, жанр, категория и др. На данном датасете были обучены модели: линейная регрессия, метод опорных векторов, нейронная сеть (многослойный перцептрон).
В ходе экспериментов были подобраны следующие параметры для моделей машинного обучения:
Линейная регрессия – модели линейной регрессии с регуляризацией не показали результат, превосходящий качество классической линейной регрессии.
Метод опорных векторов – модель метода опорных векторов с RBF-ядром показала лучший результат по сравнению с другими ядрами.
Многослойный перцептрон – оптимальный результат показала модель с 4 слоями, 300 нейронами и функций активацией ReLu. При попытках увеличить количество слоев и нейронов прирост качества не наблюдался.
Решена задача прогнозирования потенциального рейтинга приложения в зависимости от его признаков.
Результаты ошибки среднего отклонения от истинного значения целевой переменной в процентах для каждой модели:
Линейная регрессия – 6.13 %
Метод опорных векторов – 6.01%
Нейронная сеть – 6.41%
Таким образом, классические алгоритмы машинного обучения и нейросети показали приблизительно одинаковое качество. Это связано с тем, что нейросети хорошо обучаются на датасетах с большим размером и обычно применяются для решения задач, где зависимость в данных очень сложна. Поэтому для решения данной задачи можно обойтись применением классических алгоритмов и не прибегать к использованию нейросетей.
На гистограмме ниже представлены итоговые весовые коэффициенты a, полученные при обучении модели линейной регрессии. Чем больше столбик, тем выше влияние признака на целевую переменную. Если столбик направлен вверх, то он оказывает положительное влияние на рост целевой переменной, если вниз – то отрицательное. Другими словами, если приложение имеет жанр “Other” или “Tools”, то, скорее всего, его рейтинг будет высоким, а если у него категория “FAMILY” или “GAME” – то, вероятно, низким. Данная интерпретация весовых коэффициентов линейной регрессии бывает очень полезной при анализе данных.
Гистограмма значений коэффициентов линейной регрессии
Больше наших статей по машинному обучению и обработке изображений: