Машинное обучение

  • Машинное обучение: 10 лучших алгоритмов
  • Введение в количественный трейдинг — построение модели машинного обучения

Машинное обучение: 10 лучших алгоритмов

1. Линейная регрессия

Вы когда-нибудь задумывались о том, как волшебники данных предсказывают будущее? На сцену выходит линейная регрессия, мощный статистический инструмент, который раскрывает секреты, скрытые в непрерывных переменных. Все дело в том, чтобы найти идеальную линию в лабиринте данных, проложив путь к кристально чистым прогнозам о том, что ждет нас впереди.

Уравнение для простой модели линейной регрессии:

y = b0 + b1*x

где Y — зависимая переменная, X — независимая переменная, B0 — точка пересечения Y (точка, в которой линия пересекает ось Y), а B1 — наклон прямой. Наклон представляет собой изменение y для заданного изменения x.

Чтобы определить наиболее подходящую линию, мы используем метод наименьших квадратов, который находит линию, которая минимизирует сумму квадратов разностей между прогнозируемыми значениями y и фактическими значениями y.

Но это еще не все! Гениальность линейной регрессии не ограничивается только одной переменной: это разносторонне одаренная звезда. Встречайте «Множественную линейную регрессию», где мы с легкостью жонглируем несколькими независимыми переменными. Вот секретная формула:

y = b0 + b1x1 + b2x2 + … + bn*xn

где x1, x2, …, xn – независимые переменные, а b1, b2, …, bn – соответствующие коэффициенты.

Линейная регрессия — это инструмент для решения как простых, так и сложных задач прогнозирования. Он творит чудеса, оценивая эти загадочные коэффициенты (b0, b1, …, bn) с помощью метода наименьших квадратов. Как только у вас на руках будут эти цифры, вы сможете предсказывать будущее, будь то прогнозирование цен на акции или прогнозирование продаж продуктов.

Но, и вот в чем загвоздка, линейная регрессия — верный конь, но не ответ на все загадки. Он процветает в стране линейности, предполагая, что связь между переменными прямая, как стрела. Реальность, однако, может быть немного более извилистой.

Кроме того, линейная регрессия чрезвычайно чувствительна к выбросам, а это означает, что если есть какие-либо экстремальные значения, которые не соответствуют общему тренду данных, это значительно повлияет на точность модели.

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

Существует несколько способов определения соответствия модели линейной регрессии:

R-квадрат: R-квадрат — это статистическая мера, представляющая долю дисперсии зависимой переменной, которая объясняется независимыми переменными в модели. Значение R-квадрата, равное 1, указывает на то, что модель объясняет всю дисперсию зависимой переменной, а значение 0 указывает на то, что модель не объясняет ни одной дисперсии.

Скорректированный R-квадрат: Скорректированный R-квадрат — это модифицированная версия R-квадрата, которая учитывает количество независимых переменных в модели. Это лучший показатель соответствия модели при сравнении моделей с разным количеством независимых переменных.

Среднеквадратичная ошибка (RMSE): RMSE измеряет разницу между прогнозируемыми и фактическими значениями. Более низкое среднеквадратичное значение указывает на лучшее соответствие модели данным.

Средняя абсолютная ошибка (MAE): MAE измеряет среднюю разницу между прогнозируемыми и фактическими значениями. Более низкое значение MAE указывает на лучшее соответствие модели данным.

3. Выбросы в линейной регрессии.

Вы когда-нибудь задумывались, почему эти странные точки данных иногда сбивают ваши прогнозы линейной регрессии? Давайте погрузимся в мир выбросов и их влияния на наши надежные линии регрессии. Но не волнуйтесь, у нас есть несколько практических приемов, которые помогут вам укротить эти неуправляемые точки данных и сделать ваши модели еще более точными. включая:

Удаление выбросов: один из вариантов — просто удалить выбросы из набора данных перед обучением модели. Однако это может привести к потере ценной информации.

Преобразование данных: применение преобразования, такого как ведение журнала данных, может помочь уменьшить влияние выбросов.

Использование методов робастной регрессии: Робастные методы регрессии, такие как RANSAC или Theil-Sen, менее чувствительны к выбросам, чем традиционная линейная регрессия.

Использование регуляризации: Регуляризация может помочь предотвратить переобучение, которое может быть вызвано выбросами, путем добавления штрафного члена к функции стоимости.

Оптимальный подход будет зависеть от конкретного набора данных и целей анализа.

2. Логистическая регрессия

Задумывались ли вы когда-нибудь? Как машины принимают решения, например, является ли электронное письмо спамом или может ли клиент уйти? Встречайте логистическую регрессию, жизненно важный инструмент в мире машинного обучения. Это похоже на детектива, использующего статистические подсказки из нескольких источников для прогнозирования результатов.

Этот метод основан на хитроумном математическом трюке — логистической функции. Думайте об этом как о трансляторе, который превращает числа в вероятности, аккуратно втиснутые между 0 и 1. Затем эти вероятности помогают нашему другу с искусственным интеллектом делать разумные прогнозы о будущем.

Модель логистической регрессии представлена следующим уравнением:

P(y=1|x) = 1/(1+e^-(b0 + b1x1 + b2x2 + … + bn*xn))

где P(y=1|x) — вероятность того, что исход y равен 1 при заданных входных переменных x, b0 — пересечение, а b1, b2, …, bn — коэффициенты для входных переменных x1, x2, …, xn.

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

Но это еще не все! После того, как наша модель полностью обучена, она становится мощным инструментом прогнозирования. Мы просто скармливаем ему новые данные, и он вычисляет вероятность исхода, равную 1. В чем подвох? Решаем, когда называть его «1» или «0». Обычно мы устанавливаем планку на уровне 0,5, но так ли это? Он регулируется! Все зависит от поставленной задачи и от того, насколько вы готовы танцевать на тонкой грани между «ой» и «промахнулся»

Ниже приведена диаграмма, представляющая модель логистической регрессии:

На этой диаграмме входные переменные x1 и x2 используются для прогнозирования бинарного результата y. Логистическая функция сопоставляет входные переменные с вероятностью, которая затем используется для прогнозирования результата. Коэффициенты b1 и b2 определяются путем обучения модели на наборе данных, а пороговое значение устанавливается равным 0,5.

В заключение, логистическая регрессия является мощным методом прогнозирования бинарных результатов и широко используется в машинном обучении и анализе данных. Его легко реализовать, интерпретировать и легко упорядочить, чтобы предотвратить переобучение.

3. Метод опорных векторов (SVM)

Представьте себе: математическое чудо, класс алгоритмов, которые не только обучаются на данных, но и делают это с элегантностью, которая не что иное, как завораживает. Добро пожаловать в мир метода опорных векторов, или сокращенно SVM. В области машинного обучения SVM являются фундаментом и откровением. Они обладают уникальной способностью анализировать сложные ландшафты данных, определяя границы принятия решений с хирургической точностью. Присоединяйтесь ко мне в путешествии, чтобы развеять мифы о SVM и узнать, как они используют искусство отделения сигнала от шума, проводя нас через сложную область задач классификации и регрессии. К концу этого исследования вы не только поймете внутреннюю работу SVM, но и оцените красоту их математического мастерства.

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

SVM особенно полезны, когда данные не являются линейно разделимыми, что означает, что они не могут быть разделены прямой линией. В этих случаях SVM могут преобразовывать данные в пространство более высокой размерности, используя технику, называемую трюком ядра, где можно найти нелинейную границу. Некоторые распространенные функции ядра, используемые в SVM, — это полином, радиальная базисная функция (RBF) и сигмоида.

Представьте себе универсальный инструмент, который преуспевает в области сложных данных, легко обрабатывая многомерные пространства и обеспечивая первоклассную производительность даже при работе с большим количеством функций, чем выборок. Знакомьтесь, метод опорных векторов (SVM). Они отличаются эффективностью использования памяти, сохраняя в хранилище только основные опорные векторы, а не весь набор данных. Однако, как и у любого мощного инструмента, у SVM есть свои нюансы. Выбор правильной функции ядра и настройка параметров могут иметь решающее значение. Кроме того, они могут быть не лучшим выбором для гигантских наборов данных из-за потенциально длительного времени обучения.

Плюсы:

1. Эффективность в многомерных пространствах: SVM имеют удовлетворительную производительность, даже если количество признаков больше, чем количество выборок.

2. Эффективное использование памяти: SVM должны хранить только опорные векторы, а не весь набор данных, что делает их эффективными с использованием памяти.

3. Универсальность: SVM можно использовать как для задач классификации, так и для задач регрессии, и они могут обрабатывать нелинейно разделяемые данные, используя приемы ядра.

4. Устойчивость к шуму и выбросам: SVM устойчивы к шуму и выбросам в данных, поскольку они полагаются только на опорные векторы.

Минусы:

1. Чувствительность к выбору функции ядра и параметров: производительность SVM может сильно зависеть от выбора функции ядра и параметров алгоритма.

2. Не подходит для больших наборов данных: время обучения SVM может быть довольно длительным для больших наборов данных.

3. Сложность интерпретации результатов: Может быть трудно интерпретировать результаты SVM, особенно при использовании нелинейных ядер.

4. Плохо работает с перекрывающимися классами: SVM могут испытывать трудности, когда классы имеют значительное перекрытие.

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

4. Дерево решений

Добро пожаловать в увлекательный мир Деревьев Решений! 🌳 В области машинного обучения эти интуитивно понятные алгоритмы являются надежными проводниками для принятия сложных решений в структурированной и логичной манере. Представьте себе дерево с ветвями, которые символизируют различные варианты, ведущие вас к наилучшему результату. В этом путешествии мы раскроем секреты деревьев решений, развеем мифы об их внутренней работе и покажем вам, как они могут стать вашими союзниками в решении реальных проблем

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

Дерево решений представляет собой древовидную структуру, в которой каждый внутренний узел представляет точку принятия решения, а каждый конечный узел представляет окончательный результат или прогноз. Дерево строится путем рекурсивного разбиения данных на подмножества на основе значений входных объектов. Цель состоит в том, чтобы найти разделения, которые максимизируют разделение между различными классами или целевыми значениями.

Процесс построения дерева принятия решений начинается с выбора корневого узла, который является функцией, которая наилучшим образом разделяет данные на различные классы или целевые значения. Затем данные разбиваются на поднаборы на основе значений этого объекта, и процесс повторяется для каждого подмножества до тех пор, пока не будет достигнут критерий остановки. Критерий остановки может быть основан на количестве образцов в подмножествах, чистоте подмножеств или глубине дерева.

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

Еще одной проблемой является их чувствительность к порядку входных объектов. Перетасуйте объекты, и вы можете получить совершенно другую древовидную структуру, не всегда лучшую. Но не бойтесь! На помощь приходят такие методы, как случайные леса и градиентный бустинг, обеспечивающие более надежное принятие решений.

Таким образом, деревья решений являются мощным и адаптируемым инструментом в области принятия решений и прогнозного моделирования. Их врожденная простота и интерпретируемость делают их доступными, но важно знать об их склонности к чрезмерной подгонке данных. Чтобы справиться с этой проблемой, в этой области был внедрен целый ряд методов. К ним относятся обрезка, форма обрезки, и регуляризация, сродни поддержанию баланса. Перекрестная проверка служит нашим компасом, в то время как такие ансамбли, как случайные леса и градиентный бустинг, выступают в качестве опытных проводников на нашем пути к использованию всего потенциала деревьев решений.

5. Случайный лес

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

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

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

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

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

Недостаток Random Forest заключается в том, что обучение и прогнозирование может быть ресурсоемким с точки зрения вычислений. По мере увеличения количества деревьев в лесу увеличивается и время вычислений. Кроме того, случайный лес может быть менее интерпретируемым, чем отдельное дерево решений, поскольку сложнее понять вклад каждого признака в окончательный прогноз.

В заключение, Random Forest — это мощный ансамблевый алгоритм машинного обучения, который может повысить точность деревьев решений. Он менее подвержен переобучению и хорошо работает в многомерных и категориальных наборах данных. Однако оно может быть ресурсоемким с точки зрения вычислений и менее интерпретируемым, чем одно дерево решений.

6. Наивный Байес

Наивный алгоритм Байеса. Если вы когда-нибудь задавались вопросом, как эта умная и удивительно простая техника может обладать такой силой в решении реальных проблем, вы находитесь в правильном месте. В этом исследовании мы разгадаем внутреннюю работу наивного байеса, развеем мифы о его фундаментальных концепциях и раскроем его практическое применение.

Упрощенный алгоритм Байеса — это простой и эффективный алгоритм машинного обучения, который основан на теореме Байеса и используется для задач классификации. Он называется «наивным», потому что предполагает, что все объекты в наборе данных независимы друг от друга, что не всегда так в реальных данных. Несмотря на это предположение, было обнаружено, что наивный алгоритм Байеса хорошо работает во многих практических приложениях.

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

Упрощенный алгоритм Байеса может быть реализован с использованием различных типов распределений вероятностей, таких как Гауссово, Мультиномиал и Бернулли. Упрощенный байес по Гауссу используется для непрерывных данных, мультиномиальный наивный байес — для дискретных данных, а упрощенный байес Бернулли — для двоичных данных.

Одно из его выдающихся преимуществ заключается в простоте — его легко понять, что делает его отличной отправной точкой для новичков в машинном обучении. Кроме того, он замечательно работает при применении к таким задачам, как классификация спама и анализ тональности. Однако у него есть свои причуды. Упрощенный алгоритм Байеса предполагает, что объекты независимы, что не всегда верно в реальных данных. Это «наивное» предположение может привести к неоптимальным результатам в ситуациях, когда зависимости функций играют значительную роль. Тем не менее, при правильной предварительной обработке данных и понимании их ограничений упрощенный алгоритм Байеса может стать мощным инструментом в вашем наборе инструментов машинного обучения.

В заключение давайте прольем свет на наивный алгоритм Байеса — удивительно простой и эффективный алгоритм машинного обучения. Он опирается на теорему Байеса и наиболее ярко сияет, когда дело доходит до задач классификации. Его сильные стороны — работа с многомерными наборами данных и корректная работа с отсутствующими данными. Однако есть одна загвоздка: наивный байесовский подход исходит из предположения, что функции полностью независимы, и это понятие, если оно не выполняется, может иногда сбивать его с толку, потенциально приводя к менее точным предсказаниям. Понимание этого компромисса поможет вам эффективно использовать его силу.

7. KNN

Представьте себе: у вас есть библиотека, наполненная книгами, каждая из которых наполнена знаниями, и вам поручено классифицировать их по жанрам. Проблема в том, что на книгах нет этикеток, и вы не можете судить о них по их обложкам. Именно здесь на помощь приходит K-Nearest Neighbors (KNN), как опытный библиотекарь, умеющий подбирать книги к их жанрам на основе их содержания. В этом исследовании KNN мы отправляемся в путешествие, чтобы разгадать внутреннюю работу этого универсального алгоритма и узнать, как он может классифицировать точки данных, подобно тому, как наш библиотекарь профессионально классифицирует книги без предварительных ярлыков

K-Nearest Neighbors (KNN) — это простой и мощный алгоритм для задач классификации и регрессии в машинном обучении. Он основан на идее, что похожие точки данных, как правило, имеют схожие целевые значения. Алгоритм работает, находя k ближайших точек данных к заданным входным данным и используя класс большинства или среднее значение ближайших точек данных для прогнозирования.

Процесс построения модели KNN начинается с выбора значения k, которое представляет собой число ближайших соседей, учитываемых при прогнозировании. Затем данные разбиваются на обучающий и тестовый наборы, причем обучающий набор используется для поиска ближайших соседей. Чтобы сделать прогноз для новых входных данных, алгоритм вычисляет расстояние между входными данными и каждой точкой данных в обучающем наборе и выбирает k ближайших точек данных. Класс большинства или среднее значение ближайших точек данных затем используется в качестве интерполяции.

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

Основным недостатком KNN является его вычислительная сложность. По мере увеличения размера набора данных время и память, необходимые для поиска ближайших соседей, могут стать непомерно большими. Кроме того, KNN может быть чувствителен к выбору k, и найти оптимальное значение k может быть сложно.

В заключение, универсальная жемчужина в мире машинного обучения. Этот алгоритм, несмотря на свою элегантную простоту, отлично справляется с задачами классификации и регрессии. Его гениальность заключается в вере в то, что точки данных, имеющие сходство, часто имеют схожую судьбу.

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

8. К-средние

Добро пожаловать в интригующий мир кластеризации данных, где закономерности возникают из моря информации. Сегодня мы отправляемся в путешествие в царство K-средних, увлекательного алгоритма, который на протяжении десятилетий был краеугольным камнем неконтролируемого обучения. Представьте себе, что у вас есть возможность группировать похожие точки данных в кластеры, выявляя скрытые структуры в ваших наборах данных

K-средние — это алгоритм машинного обучения без учителя, используемый для кластеризации. Кластеризация — это процесс группировки похожих точек данных. K-средние — это алгоритм на основе центроида, или алгоритм на основе расстояния, в котором мы вычисляем расстояния для присвоения точки кластеру.

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

Одним из главных преимуществ K-means является его простота и масштабируемость. Он прост в реализации и может эффективно обрабатывать большие наборы данных. Кроме того, это быстрый и надежный алгоритм, который широко используется во многих приложениях, таких как сжатие изображений, сегментация рынка и обнаружение аномалий.

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

В двух словах, K-средние — это надежный инструмент машинного обучения без учителя для группировки точек данных в кластеры. Его секретный соус? Алгоритм догадывается, что похожие друзья по данным предпочитают тусоваться вместе. Самое замечательное в K-means — это его простота и универсальность — неудивительно, что он является лучшим выбором для множества приложений. Но вот в чем загвоздка: у K-средних есть несколько причуд. Он предполагает, что кластеры круглые и одинакового размера, придирчиво относится к тому, где вы размещаете эти начальные центры кластеров, и суетится над количеством кластеров (для вас это «k»).

9. Алгоритмы уменьшения размерности

Уменьшение размерности – это метод, используемый для уменьшения количества объектов в наборе данных при сохранении важной информации. Он используется для повышения производительности алгоритмов машинного обучения и упрощения визуализации данных. Существует несколько алгоритмов уменьшения размерности, включая анализ главных компонент (PCA), линейный дискриминантный анализ (LDA) и t-распределенное стохастическое соседство (t-SNE).

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

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

t-Distributed Stochastic Neighbor Embedding (t-SNE) — это метод нелинейного уменьшения размерности, который особенно полезен для визуализации многомерных данных. Он использует распределения вероятностей по парам точек данных высокой размерности, чтобы найти низкомерное представление, которое сохраняет структуру данных.

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

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

В заключение, уменьшение размерности – это метод, используемый для уменьшения количества объектов в наборе данных при сохранении важной информации. Существует несколько алгоритмов снижения размерности, таких как PCA, LDA и t-SNE, которые полезны для выявления закономерностей в данных, повышения производительности алгоритмов машинного обучения и упрощения визуализации данных. Однако в процессе уменьшения размерности может быть потеряна важная информация, и выбор метода уменьшения размерности зависит от типа данных и поставленной задачи.

10. Алгоритм градиентного бустинга и алгоритм AdaBoosting

Градиентный бустинг и AdaBoost — два популярных алгоритма ансамблевого машинного обучения, которые используются как для задач классификации, так и для задач регрессии. Оба алгоритма работают, объединяя несколько слабых моделей для создания сильной, окончательной модели.

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

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

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

Одним из основных недостатков обоих алгоритмов является то, что они могут быть ресурсоемкими с точки зрения вычислений, особенно при большом количестве моделей в ансамбле. Кроме того, они могут быть чувствительны к выбору базовой модели и скорости обучения.

В заключение, Gradient Boosting и AdaBoost — это два популярных алгоритма ансамблевого машинного обучения, которые используются как для задач классификации, так и для задач регрессии. Оба алгоритма работают, объединяя несколько слабых моделей для создания сильной, окончательной модели. Было обнаружено, что оба они позволяют создавать высокоточные модели во многих практических приложениях, но они могут быть вычислительно дорогостоящими и чувствительными к выбору базовой модели и скорости обучения.

Введение в количественный трейдинг — построение модели машинного обучения

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

Импорт библиотек

Несмотря на то, что существует множество отличных библиотек для количественной торговли и тестирования на истории, в этой статье мы сосредоточимся на основных из них. К ним относятся pandas, yfinance, numpy, talib, plotly, scikit-learn и XGBoost, которые мы будем использовать в качестве модели классификации. Начнем с их импорта.import pandas as pd
import yfinance as yf
import numpy as np
import talib as ta
import plotly.express as px
from sklearn.metrics import classification_report
from xgboost import XGBClassifier

np.random.seed(42)

Определение параметров

Для нашего примера мы будем использовать акцию AAPL. Тем не менее, не стесняйтесь заменить его любым другим запасом по вашему вкусу. Период обучения будет длиться с 2012 по 2017 год, а тестовый период – с 2018 по 2023 год. Использование обширного периода данных вне выборки помогает снизить риск переобучения.# Get the data for the stock
start_date = ‘2012-01-01’
end_train = ‘2017-12-31’
end_date = ‘2023-12-31’
ticker = ‘AAPL’

df = yf.download(ticker, start=start_date, end=end_date)

Предварительная обработка данных

Чтобы провести анализ, нам нужно рассчитать скорректированные максимальные и минимальные цены, используя скорректированные цены. Скорректированные цены имеют решающее значение, поскольку они учитывают дивиденды и дробление акций.df[«Adj Low»] = df[«Low»] — (df[«Close»]-df[«Adj Close»])
df[«Adj High»] = df[«High»] — (df[«Close»]-df[«Adj Close»])

После этого мы приступим к расчету дневной доходности и определим целевую переменную, которая представляет доходность на следующий день. Мы классифицируем эту переменную как 1, если она положительна, и 0, если она отрицательна. Эта целевая переменная будет в центре внимания нашей прогностической модели.df[«Returns»] = df[«Adj Close»].pct_change()

df[«Target»] = df[«Returns»].shift(-1)
df[«Target_cat»] = np.where(df[«Target»] > 0, 1, 0)

Проектирование признаков

Чтобы проиллюстрировать процесс проектирования признаков, мы воспользуемся тремя индикаторами: z-оценкой, осциллятором Aroon и ценовым трендом. Z-оценка определяет, на сколько стандартных отклонений точка данных отклоняется от среднего значения. Осциллятор Aroon измеряет количество периодов, прошедших с момента последнего максимума или минимума. Ценовой тренд представляет собой совокупную сумму доходности за последние четыре дня. Кроме того, мы вычислим скользящую среднюю и стандартное отклонение скорректированной цены закрытия за 15-дневный период, которые будут использоваться для получения z-оценки.df[«std15»] = df[«Adj Close»].rolling(15).std()
df[«moving_average»] = df[«Adj Close»].rolling(15).mean()

df[«zscore»] = (df[«Adj Close»]-df[«moving_average»])/df[«std15»]
df[«aroon»] = ta.AROONOSC(df[«Adj High»], df[«Adj Low»], timeperiod=14)
df[«price_trend»] = df[«Returns»].shift().rolling(4).sum()

После конструирования признаков мы распределим объекты по ячейкам, используя функцию qcut из pandas. Такая категоризация помогает модели более эффективно понимать данные и делать превосходные прогнозы, не поддаваясь переобучению.df[«zscore»] = pd.qcut(df[«zscore»], 6, labels = False)
df[«aroon»] = pd.qcut(df[«aroon»], 4, labels = False)
df[«price_trend»] = pd.qcut(df[«price_trend»], 6, labels = False)

Давайте отбросим значения NaN, полученные в результате скользящих вычислений, и создадим массив с именами объектов.df = df.dropna()
features = [«aroon», «zscore», «price_trend»]

Построение модели

Начнем с разделения данных на обучающий и проверочный наборы. Модель будет обучаться исключительно на обучающих данных, и мы будем использовать тестовые данные для оценки производительности модели на невидимых данных.X_train, X_test = df[features].loc[start_date:end_train], df[features].loc[end_train:end_date]
y_train, y_test = df[«Target_cat»].loc[start_date:end_train], df[«Target_cat»].loc[end_train:end_date]

В качестве модели классификации мы будем использовать модель XGBoost, известную своей популярностью и эффективностью в реализации алгоритма градиентного бустинга. Подгонка модели включает в себя использование обучающих данных, а затем мы оценим ее производительность с помощью тестовых данных. Обучение модели выполняется следующим образом:model = XGBClassifier()
model.fit(X_train, y_train)

Оценка модели

Теперь давайте оценим производительность модели с помощью отчета о классификации из scikit-learn.y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))precision recall f1-score support

0 0.49 0.39 0.43 704
1 0.54 0.64 0.59 804

accuracy 0.52 1508
macro avg 0.51 0.51 0.51 1508
weighted avg 0.52 0.52 0.52 1508

В отчете о классификации мы видим, что модель достигла точности 0,52. Хотя он и не является исключительным, он превосходит случайное угадывание. Кроме того, модель демонстрирует более высокую точность для положительного класса, указывая на то, что, когда она предсказывает положительную доходность, она, как правило, более точна.

Тестирование модели на истории

Несмотря на то, что прогнозы модели в целом верны, прибыльность не гарантирована. Чтобы оценить прибыльность модели, рассчитаем совокупную доходность торговли на основе ее прогнозов. Поскольку прогнозы являются двоичными (0 или 1), мы преобразуем их в -1 или 1 для использования в качестве сигналов. Затем мы вычислим доходность модели, умножив сигнал на доходность следующего дня. Например, сигнал -1 (продажа) с отрицательной доходностью (снижение цены) даст положительную доходность для модели.df[«train_test»] = np.where(df.index > end_train, «Test», «Train»)

y_pred_all = model.predict(df[features])
df[«Signal»] = np.where(y_pred_all == 1, 1, -1)

df[«Model_Returns»] = df[«Signal»] * df[«Target»]

Перейдем к построению совокупной доходности стратегии:fig = px.line(df, x=df.index, y=df[«Model_Returns»].cumsum()*100, color=»train_test»,
labels={«y»: «Cumulative Returns (%)»},
title=f»{model.__class__.__name__} — {ticker}»,
line_shape=»linear»)

fig.show()

Результат:

Модель продемонстрировала высокую производительность как в обучающем, так и в тестовом наборах, сохраняя согласованность, что является положительным показателем. Более того, он достиг впечатляющей отдачи в 240% в тестовом наборе в течение шести лет, в среднем 40% в год, что похвально для такой простой модели. Однако важно отметить, что этот анализ не учитывает транзакционные издержки, проскальзывание, налоги и другие расходы, которые могут повлиять на прибыльность модели. Эти факторы заслуживают рассмотрения в следующих статьях.

Дальнейшие действия

В этой статье описаны основные шаги, связанные с построением модели машинного обучения для количественной торговли, обеспечивающие основу для дальнейшего изучения и совершенствования. Ниже перечислены некоторые возможности для будущего тестирования и улучшений.

  • Экспериментируем с дополнительными функциями и индикаторами.
    — Изучение различных целевых переменных для прогнозирования.
    — Использование алгоритмов для выбора характеристик для выявления наиболее влиятельных признаков.
    — Тонкая настройка гиперпараметров модели, в частности, скорости обучения, количества оценок и максимальной глубины дерева.
    — Включение комиссионных издержек, проскальзывания и налогов в расчеты доходности модели, чтобы лучше отражать реальные торговые сценарии.
    — Адаптация модели для работы с данными в режиме реального времени, что позволяет своевременно принимать решения в динамичных рыночных условиях.

Источник

Источник