Python для алготрейдинга - страница 21

 

Backtesting.py — Полный курс по python



Backtesting.py — Полный курс по python

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

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

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

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

В этом руководстве инструктор демонстрирует использование backtesting.py, выполняя шаги по созданию виртуальной среды и установке необходимых зависимостей. Импортируя необходимые компоненты, такие как тестовые данные о ценах на акции Google с 2006 по 2013 год, инструктор подготавливает почву для проведения ретроспективного тестирования.

Затем инструктор переходит к созданию класса стратегии, в котором определены две основные функции, __init__ и next. В функции __init__ инструктор рассчитывает значение индикатора Индекса относительной силы (RSI). Следующая функция используется для оценки критериев покупки на основе значений RSI.

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

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

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

Кроме того, инструктор объясняет, как применять ограничения для выбора подмножества значений с помощью лямбда-функций, которые возвращают значение true или false в зависимости от определенных параметров. Видео демонстрирует, как оптимизировать стратегию с помощью функции оптимизатора, чтобы максимизировать коэффициент Шарпа, и как определить функцию оптимизации как обычную функцию Python. Инструктор также обсуждает создание метрики для максимизации прибыли при минимизации времени, проведенного на рынке.

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

В учебнике также рассматривается использование функции оптимизации в backtesting.py для эффективной оптимизации стратегии без необходимости тестирования всех возможных комбинаций. Установив максимальное количество попыток, программа выполняет рандомизированный поиск комбинаций по сетке, сокращая время, затрачиваемое на тестирование на исторических данных, и риск переобучения. Преподаватель демонстрирует, как создавать тепловые карты для визуализации влияния различных значений на стратегию путем изменения верхней и нижней границ. Оператор pandas group by используется для группировки столбцов по верхней и нижней границам, а среднее значение вычисляется для получения средних значений для каждой комбинации.

Докладчик объясняет, как функция в backtesting.py находит все уникальные комбинации указанных столбцов, например верхнюю и нижнюю границы. Эти комбинации затем группируются вместе, и применяется функция агрегирования, такая как среднее значение. В результате получается тепловая карта, которую можно построить с помощью модуля Seaborn. Преподаватель демонстрирует оптимизацию коэффициента Шарпа и изменение цветовой карты для тепловой карты. Кроме того, инструктор показывает, как использовать встроенную функцию plot_heat_maps для построения нескольких тепловых карт для более чем двух параметров.

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

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

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

Инструктор демонстрирует, как использовать ордера стоп-лосс и тейк-профит в backtesting.py. Установив стоп-лосс на определенный процент ниже текущей цены, стратегия может ограничить убытки по каждой сделке, а установка уровня тейк-профита позволяет закрывать сделки при определенном уровне прибыли. Инструктор также показывает, как настроить параметр размера в процессе покупки, чтобы выделить определенный процент доступных средств для каждой сделки. Хотя в этом примере есть некоторые проблемы с тактикой продаж, видео дает полезную информацию об использовании backtesting.py для создания и тестирования торговых стратегий.

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

Создатель backtesting.py представляет функцию «бары с тех пор», которая является мощным инструментом для оптимизации стратегий и избавления от необходимости писать многочисленные операторы if для сравнения данных за предыдущие дни. Функция позволяет пользователям определять количество баров с момента последнего выполнения определенного торгового условия. Эта функция обеспечивает удобный способ оптимизации стратегий на основе конкретных временных условий. Кроме того, создатель подчеркивает открытый исходный код backtesting.py, поощряя пользователей настраивать библиотеку в соответствии со своими конкретными потребностями и предпочтениями.

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

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

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

  • 00:05:00 Мы видим, как автор библиотеки backtesting.py импортирует необходимые компоненты, необходимые для запуска бэктеста, такие как данные тестирования цен на акции Google с 2006 по 2013 год, и создание класса стратегии, в котором две функции , init и next определены. В инициализации мы вычисляем значение индикатора RSI, а следующая функция используется для оценки критериев покупки на основе расчета значений RSI.

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

  • 00:15:00 Докладчик представляет обзор информационной панели, которую можно использовать для визуализации результатов тестирования на истории с помощью backtesting.py. Панель инструментов предоставляет информацию о сделках, прибылях и убытках, стоимости портфеля и индикаторах, среди прочего. Докладчик также демонстрирует, как можно добиться оптимизации стратегии с помощью backtesting.py, задав различные диапазоны значений для верхней и нижней границ и окна RSI. Оптимизатор генерирует статистику, такую как коэффициент Шарпа, и моделирует различные комбинации, чтобы найти функцию с наибольшим значением. Докладчик отмечает, что пользователи могут определять собственные метрики для оптимизации и применять ограничения для получения лучших результатов оптимизации.

  • 00:20:00 Преподаватель объясняет, как применять ограничения для выбора подмножества значений и создания лямбда-функций, которые возвращают значение true или false в зависимости от любых параметров. Видео демонстрирует, как оптимизировать стратегию, как использовать функцию оптимизатора для максимизации резкого соотношения и как определить функцию оптимизации как обычную функцию Python. Инструктор также обсуждает, как создать метрику, которая определяет, как заработать больше денег, оставаясь на рынке в течение наименьшего количества времени.

  • 00:25:00 Инструктор объясняет, как добавить фильтр минимального количества сделок в функцию оптимизации, чтобы предотвратить переобучение. Добавляя этот фильтр, функция тестирования на исторических данных вынуждена смотреть за пределы одного периода колебания, что увеличивает шансы обнаружения более прибыльных комбинаций параметров. Преподаватель также покажет, как создавать HTML-файлы с результатами ретроспективного тестирования, что может быть полезно при выполнении нескольких ретроспективных тестов и необходимости отслеживать различные используемые комбинации параметров. Наконец, инструктор обсуждает, как назвать и упорядочить сгенерированные файлы, чтобы не загромождать рабочий каталог.

  • 00:30:00 Преподаватель объясняет, как использовать функцию оптимизации в backtesting.py, чтобы быстро оптимизировать стратегию без необходимости выполнять все возможные комбинации. Установив максимальное количество попыток, программа выполняет рандомизированный поиск комбинаций по сетке, сокращая время, затрачиваемое на тестирование на исторических данных, и риск переобучения. Преподаватель также демонстрирует, как создавать тепловые карты для визуализации различных значений и их влияния на стратегию при изменении верхней и нижней границ. Оператор pandas group by используется для группировки столбцов по верхней и нижней границам, а среднее значение берется для вычисления средних значений для каждой комбинации.

  • 00:35:00 Спикер объясняет, как функция находит все уникальные комбинации упомянутых столбцов, такие как верхняя и нижняя границы. Затем функция группирует эти комбинации вместе и применяет функцию агрегирования, в данном случае среднее значение. В результате получается тепловая карта, которую можно построить с помощью модуля Seaborn. Докладчик демонстрирует, как оптимизировать коэффициент Шарпа и изменить цветовую карту для тепловой карты. Наконец, докладчик показывает, как использовать встроенную функцию plot_heat_maps для построения нескольких тепловых карт для более чем двух параметров.

  • 00:40:00 Преподаватель демонстрирует, как использовать тепловые карты для оптимизации параметров и как реализовать стратегии с несколькими таймфреймами, используя функцию применения передискретизации из библиотеки тестирования на исторических данных. Используя тепловые карты, пользователи могут визуализировать, как изменения различных параметров влияют на их торговые стратегии. Функция применения повторной выборки позволяет пользователям выполнять повторную выборку данных для разных временных рамок, таких как еженедельные и дневные, чтобы использовать их вместе в стратегии с несколькими временными рамками. Комбинируя различные временные рамки, трейдеры могут создавать более сложные стратегии, учитывающие различные рыночные условия.

  • 00:45:00 Инструктор объясняет, как использовать разные таймфреймы в торговой стратегии с помощью библиотеки backtesting.py. Посредством понижающей выборки и применения функций библиотека может выполнять прямое заполнение и переиндексацию обратно к меньшему таймфрейму, что упрощает анализ различных таймфреймов. Стратегия в этом примере включает использование дневного и еженедельного RSI для запуска сделок только тогда, когда происходит пересечение и RSI выше или ниже определенного порога. Стратегию можно оптимизировать путем настройки параметров, а библиотеку можно использовать для экспериментов с различными типами ордеров, такими как стоп-лосс и тейк-профит.

  • 00:50:00 Ведущий демонстрирует, как открыть короткую позицию, когда RSI опускается ниже нижней границы, а затем закрывает любые короткие позиции при покупке. Точно так же он демонстрирует, что, когда RSI поднимается выше верхней границы и продает любые длинные позиции, программа также открывает короткую позицию. Тем не менее, нет кода, запрещающего программе открывать несколько позиций, что приводит к тому, что программа теряет 80 процентов вложенного капитала. Ведущий объясняет, как это исправить, добавив пункт, позволяющий инициировать новую сделку только в том случае, если в портфеле нет текущей позиции или в портфеле есть длинная/короткая позиция.

  • 00:55:00 Инструктор демонстрирует, как использовать ордера стоп-лосс и тейк-профит в backtesting.py. Установив стоп-лосс на определенный процент ниже текущей цены, стратегия может избежать потерь, превышающих определенную сумму в каждой сделке, а установка тейк-профита позволяет выходить из сделок при определенном уровне прибыли. Инструктор также показывает, как настроить параметр размера в процессе покупки, чтобы выделить определенный процент доступных средств для каждой сделки. Хотя в этом примере есть некоторые проблемы с тактикой продаж, видео дает полезную информацию об использовании backtesting.py для создания и тестирования торговых стратегий.

  • 01:00:00 В видео обсуждаются различные способы реализации определения размера позиции при тестировании на истории. Один из способов — покупать и продавать по одной акции за раз, а не процент от доступных денежных средств, что может быть полезно для перехода в позицию или усреднения стоимости в долларах. Видео демонстрирует преобразование стратегии кроссовера в стратегию, основанную на индикаторе RSI, которая покупает, когда последнее значение RSI меньше нижней полосы. Видео также показывает, что сделки могут быть извлечены из бэктеста в виде кадра данных pandas, включая даты входа и выхода и другие важные показатели. Сделки можно экспортировать в другие инструменты визуализации, такие как Excel или другие скрипты Python.

  • 01:05:00 Создатель вводит функцию «баров с момента» в backtesting.py, которую можно использовать для определения количества баров с момента последнего выполнения определенного торгового условия. Эта функция может быть отличным инструментом для оптимизации стратегий и предотвращения необходимости написания множества операторов if для сравнения данных за предыдущие дни. Создатель использует пример продажи только тогда, когда дневной rsi находится выше верхней границы в течение трех дней подряд. Кроме того, он обсуждает, как извлекать необработанные торговые данные для дальнейшего анализа и как открытый исходный код backtesting.py позволяет пользователям легко настраивать библиотеку для своих конкретных нужд. Заключение учебника предлагает учащимся изучить документацию по бэктестингу.py, чтобы узнать больше деталей и функций, доступных для создания и оптимизации инфраструктуры бэктестинга.

  • 01:10:00 Спикер завершает курс по бэктестингу.py, призывая зрителей обращаться к нему с любыми вопросами или проблемами. Он также желает им удачи в их усилиях по тестированию на исторических данных и напоминает им, чтобы они повеселились.
Backtesting.py - Full course in python
Backtesting.py - Full course in python
  • 2022.04.26
  • www.youtube.com
A full course covering all you need to know about the backtesting.py python library. Backtesting.py is a lightweight backtesting framework in the style of Ba...
 

Легко протестируйте свою стратегию средней стоимости в долларах на Python



Легко протестируйте свою стратегию средней стоимости в долларах на Python

В течение следующих 20 минут или около того мы будем реализовывать стратегию усреднения долларовых затрат в Python. Эта стратегия позволит вам оценить эффективность усреднения долларовой стоимости для конкретного актива или индекса за определенный период времени. Мы будем использовать инструмент под названием backtesting.py для реализации этой стратегии. Backtesting.py — это удобный фреймворк на Python, который менее пугающий, чем другие библиотеки, такие как Vectorbt или Backtrader. Если вы новичок в Python, это будет отличным вариантом для вас.

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

проверка установки pip

После установки пакета мы можем продолжить работу с нашим файлом Python. Нам нужно будет импортировать некоторые необходимые модули и данные. Из бэктестинга импортируйте модули бэктестинга и стратегии. Кроме того, импортируйте некоторые фиктивные данные из backtesting.test, в частности данные Google. Нам также понадобится модуль pandas для манипулирования данными.

Теперь давайте определим наш класс стратегии. Создайте класс с именем DCA (средняя стоимость в долларах), который наследуется от класса стратегии. Внутри этого класса мы установим переменную класса с именем amount_to_invest, которая представляет собой фиксированную сумму в долларах, которую мы хотим инвестировать. Изначально установите значение 10.

Далее нам нужно определить две функции внутри этого класса: __init__ и next. Функция __init__ вызывается во время инициализации и используется для предварительного вычисления любых значений, которые могут нам понадобиться позже. В нашем случае мы создадим индикатор, который выдает нам день недели. Для этого мы будем использовать метод self.indicator, предоставленный backtesting.py. Мы можем определить наш индикатор как self.day_of_week = self.indicator(lambda x: x, self.data.close.s.dt.dayofweek). Этот индикатор вернет массив значений дня недели (0-6, где понедельник — 0, а воскресенье — 6) для наших данных.

Теперь давайте перейдем к следующей функции, в которой мы реализуем нашу торговую логику. Эта функция вызывается для каждого бара данных и позволяет нам принимать решения на основе текущих данных. В нашем случае мы проверим, равен ли день недели 1 (вторник), используя if self.day_of_week == 1:. Если сегодня вторник, мы подадим сигнал на покупку. Чтобы выполнить ордер на покупку, мы будем использовать функцию self.buy, предоставляемую backtesting.py. Мы можем рассчитать размер ордера на покупку, разделив сумму_инвестирования на текущую цену закрытия актива. Чтобы убедиться, что мы покупаем целое количество акций, мы можем использовать math.floor для округления результата в меньшую сторону.

Чтобы обрабатывать дробные доли, мы можем разделить доли, умножив актив на небольшое число, например 10 ** -6. Это разделит акции на микроакции, которые позже можно будет преобразовать обратно в фактическое количество купленных акций путем деления на такое же небольшое число.

Наконец, нам нужно запустить бэктест и извлечь статистику. Для этого мы можем использовать bt.run() и присвоить результат переменной с именем stats. Мы также можем построить результаты, используя bt.plot().

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

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

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

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

Здесь мы проверяем, является ли день недели 4 (пятница), используя индикатор day_of_week, который мы создали ранее. Если это пятница, мы продаем ту же сумму в долларах, которую мы купили ранее, путем деления суммы_в_инвестиции на текущую цену закрытия. Это гарантирует, что мы продаем соответствующее количество акций, соответствующее сумме наших инвестиций.

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

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

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

Я надеюсь, что это поможет вам в реализации и изучении стратегии усреднения долларовых затрат с использованием библиотеки backtesting.py в Python. Дайте мне знать, если у вас есть дополнительные вопросы!

Backtest Your Dollar Cost Average Strategy easily in Python
Backtest Your Dollar Cost Average Strategy easily in Python
  • 2022.06.29
  • www.youtube.com
We backtest a simple dollar cost averaging strategy in backtesting.py. Backtesting.py is a super easy to use framework for beginners to python or to backtest...
 

Пользовательские индикаторы в Backtesting.py — Python Deep Dive



Пользовательские индикаторы в Backtesting.py — Python Deep Dive

В этом видео мы рассмотрим процесс создания пользовательских индикаторов в библиотеке backtesting.py. Эта функция позволит нам легко тестировать любую торговую стратегию, создавая индикаторы и переводя функции Python в формат, совместимый с экосистемой backtesting.py.

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

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

Второй пример продемонстрирует использование библиотеки pandas-ta для возврата нескольких значений для каждого индикатора. В частности, мы будем работать с индикатором «Полосы Боллинджера» и продемонстрируем, как вернуть фрейм данных, содержащий как нижнюю, так и верхнюю полосы, вместо простого пустого массива. Этот пример подчеркнет универсальность создания индикаторов с несколькими значениями.

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

Чтобы следовать примерам, убедитесь, что у вас установлены необходимые библиотеки, включая бэктестинг, pandas и pandas-ta. После установки этих библиотек создайте файл Python для примеров кода.

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

Для первого примера мы предполагаем, что вы уже сгенерировали какие-то сигналы во внешней программе и хотите передать их в backtesting.py. Чтобы продемонстрировать это, мы создаем случайные сигналы с помощью numpy и добавляем их во фрейм данных Google. Эти сигналы могут представлять любой индикатор, который вы запрограммировали на Python, где -1 обозначает сигнал на продажу, 0 указывает на отсутствие действий, а 1 представляет сигнал на покупку.

Затем мы определяем класс стратегии под названием «SignalStrategy», который наследуется от импортированного ранее класса «Strategy». Этот класс будет отвечать за реализацию логики покупки и продажи на основе сигналов. Класс включает в себя функцию инициализации " init " и функцию "next".

В функции « init » в этом конкретном примере нам нечего делать, но рекомендуется включить ее. В «следующей» функции будет реализована логика покупки и продажи на основе сигналов.

Чтобы выполнить бэктест, мы создаем экземпляр класса бэктеста, передавая фрейм данных Google и класс «SignalStrategy». Мы также устанавливаем значение кеша на 10 000. Затем мы запускаем бэктест и сохраняем результаты в переменной «stats». Наконец, мы распечатываем статистику, чтобы увидеть эффективность стратегии.

Запуск кода на этом этапе не приведет ни к каким сделкам, потому что мы еще не реализовали логику покупки и продажи. Однако мы можем получить доступ к значениям сигнала, используя «self.data.signal» в функции «next», которая даст нам самое последнее значение сигнала.

Для реализации логики покупки и продажи мы проверяем текущее значение сигнала и текущую позицию. Если сигнал равен 1 (сигнал на покупку) и существующей позиции нет, мы выполняем ордер на покупку, используя «self.buy». Если сигнал равен -1 (сигнал на продажу) и существует длинная позиция, мы выполняем ордер на продажу, используя "self.sell".

  1. Стратегия внешнего сигнала:

    • Генерируйте случайные сигналы или получайте сигналы от внешней программы.
    • Определите класс SignalStrategy, наследуемый от Strategy.
    • Реализуйте следующий метод для выполнения ордеров на покупку или продажу на основе сигналов.
    • Используйте методы self.buy() и self.sell() для выполнения ордеров.
    • Создайте объект Backtest с данными, стратегией, начальным капиталом и комиссией.
    • Запустите бэктест с помощью bt.run() и проанализируйте результаты.

  2. Использование pandas-ta для пользовательских индикаторов:

    • Импортируйте библиотеку pandas_ta (установите ее с помощью pip install pandas_ta).
    • Используйте нужную функцию индикатора из pandas_ta для расчета индикатора.
    • Добавьте вычисленный показатель во фрейм данных.
    • Определите класс стратегии, наследуемый от Strategy.
    • Реализуйте следующий метод для выполнения ордеров на покупку или продажу на основе значений индикатора.
    • Используйте желаемые условия, чтобы определить, когда покупать или продавать.
    • Создайте объект Backtest с данными, стратегией, начальным капиталом и комиссией.
    • Запустите бэктест с помощью bt.run() и проанализируйте результаты.

Не забудьте заменить заполнители, такие как GOOG, вашими фактическими данными и настроить стратегии в соответствии с вашими конкретными требованиями.

Custom Indicators In Backtesting.py - Python Deep Dive
Custom Indicators In Backtesting.py - Python Deep Dive
  • 2022.07.30
  • www.youtube.com
Learn how to make your own custom indicators in backtesting.py. We show how you can integrate libraries like pandas-ta, ta-lib, etc. as well as write your ow...
 

Стоп-лоссы в Backtesting.py



Стоп-лоссы в Backtesting.py

В этом видео мы рассмотрим концепцию стоп-лоссов в библиотеке «backtesting.py». Видео будет охватывать три примера возрастающей сложности и глубины, обеспечивая всестороннее понимание стоп-лоссов в «backtesting.py». Докладчик предполагает наличие некоторых предварительных знаний о «backtesting.py» и рекомендует посмотреть бесплатный курс на YouTube для начинающих, прежде чем углубляться в эту сложную тему.

Для начала откройте терминал и убедитесь, что «backtesting.py» установлен, выполнив команду «pip install backtesting». Это установит все необходимые пакеты. Затем создайте новый файл Python, назовем его «example.py» и импортируйте необходимые модули: «backtest» и «strategy» из «backtesting» и «googledale» из «backtesting.test». «googledale» — это тестовый набор данных, который поставляется с «backtesting.py».

Затем определите класс стратегии, создав класс с именем «Strats», который наследуется от класса «стратегия». Реализуйте две обязательные функции: " init " и "next". На данный момент мы готовы запустить наш бэктест. Инициализируйте новый объект бэктеста "bt" с помощью функции "бэктест". Передайте данные «googledale» и класс стратегии, который мы только что определили. Установите начальную денежную стоимость на 10 000 долларов. Наконец, запустите бэктест с помощью метода «bt.run» и нанесите результаты на график с помощью «bt.plot».

Изначально класс стратегии не выполняет никаких торговых действий. Чтобы продемонстрировать простой пример стоп-лосса, мы добавим некоторую базовую логику покупки и продажи. Если у нас есть существующая позиция, мы не будем предпринимать никаких действий. Однако, если у нас нет позиции, мы разместим ордер на покупку, используя метод «self.to_buy», указав размер позиции (например, 1 акция). Дополнительно добавим стоп-лосс и тейк-профит. Стоп-лосс будет установлен на 10 единиц ниже текущей цены закрытия, а тейк-профит будет установлен на 20 единиц выше текущей цены закрытия.

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

Чтобы более эффективно управлять стоп-лоссами, мы можем расширить класс стратегии и использовать «стратегию трейлинга», предоставляемую «backtesting.py». Импортируйте необходимые модули, в том числе «кроссовер» и «трейлинговую стратегию» из «backtesting.lib». В новом классе стратегии наследуйте от «конечной стратегии» вместо базового класса «стратегии». Переопределите функцию « init », чтобы вызвать функцию « init » родительского класса, используя «super». Затем используйте функцию «set_trailing_stop_loss» из родительского класса, чтобы установить значение скользящего стоп-лосса.

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

В целом, видео дает пошаговое объяснение реализации стоп-лоссов в «backtesting.py». Он охватывает простые примеры, а также более сложные концепции, такие как отставание от значения 10, что означает, что наш стоп-лосс будет отставать от цены на 10 единиц.

Теперь, когда мы настроили нашу функцию инициализации, давайте перейдем к следующей функции. Здесь будет реализована основная часть нашей торговой логики. Внутри функции next мы сначала вызовем функцию next родительского класса, используя super().next(). Это гарантирует, что функция скользящего стоп-лосса будет выполняться вместе с другой торговой логикой.

Далее мы добавим код для настройки нашего скользящего стоп-лосса. Мы будем использовать условный оператор, чтобы проверить, есть ли у нас открытая позиция (self.position не None). Если у нас есть позиция, мы обновим трейлинг-стоп с помощью метода update_trailing_sl, предоставляемого классом trailing_strategy. Этот метод принимает текущую цену в качестве аргумента и соответствующим образом обновляет стоп-лосс.

Stop Losses in Backtesting.py
Stop Losses in Backtesting.py
  • 2022.08.19
  • www.youtube.com
In this video we go in-depth on how to use stop-losses in backtesting.py. We cover both static and trailing stop losses and how backtesting.py executes them ...
 

Проверка на истории в Python (обманутая случайностью)



Проверка на истории в Python (обманутая случайностью)

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

Давайте углубимся в конкретный пример. Я провел ретроспективное тестирование простой стратегии на основе RSI, используя Биткойн в качестве актива. Стратегия включает продажу, когда RSI высок, и покупку, когда RSI низок. Результаты ретроспективного тестирования показали скромную доходность около трех процентов, несмотря на то, что Биткойн испытал 15-процентное снижение в течение тестируемого периода. На первый взгляд может показаться, что это многообещающая стратегия для медвежьих рынков.

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

Построив график распределения доходов от этих бэктестов, мы можем получить представление об эффективности стратегии. График показывает каждое 30-дневное окно в виде точки, представляющей доходы, полученные за этот период. На прилагаемом прямоугольном графике отображается медиана доходности, квартили, максимальное и минимальное значения. Анализируя график, становится очевидным, что средняя доходность за 30-дневный период составляет -8,5 процента. Кроме того, распределение доходов кажется случайным, как и результаты, которые можно было бы ожидать от генератора случайных чисел, установленного между -35 и 15. Эти результаты убедительно указывают на то, что стратегия не является уникальной или эффективной за пределами конкретных исторических данных, используемых в анализе. бэктест.

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

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

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

Эти методы проверки и проверки торговых стратегий можно применять к любой системе тестирования на истории по вашему выбору. В предоставленном коде используется библиотека backtesting.py, но вы можете адаптировать ее к другим библиотекам, таким как vectorbt или backtrader. Основная идея состоит в том, чтобы убедиться, что ваша стратегия демонстрирует надежность в различных временных рамках, а не является просто продуктом подгонки к определенному набору исторических данных.

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

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

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

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

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

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

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

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

  6. Используйте тесты статистической значимости: примените статистические тесты, чтобы оценить значимость эффективности вашей стратегии. Это помогает определить, являются ли наблюдаемые результаты статистически значимыми или просто случайными. Общие статистические тесты, используемые при тестировании на истории, включают t-тесты, бутстрап-тесты и моделирование Монте-Карло.

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

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

Backtest Validation in Python (Fooled By Randomness)
Backtest Validation in Python (Fooled By Randomness)
  • 2022.09.14
  • www.youtube.com
In this video we go through a method that I've found helpful for validating my backtests before I go live with a strategy. Looking at the distribution of ret...
 

Краткое введение в Python для инженеров по машинному обучению



Краткое введение в Python для инженеров по машинному обучению

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

Для начала инструктор проводит ускоренный курс по синтаксису Python. Они охватывают фундаментальные понятия, такие как переменные и присваивания, разъясняя различие между знаком «равно», используемым для присваивания, и знаком «двойное равно», используемым для сравнения на равенство. Преподаватель демонстрирует, как использовать Jupyter Notebook для написания кода на Python, и дает советы по навигации, например, по созданию новой записной книжки, использованию псевдонимов для библиотек, выполнению ячеек, а также копированию или перемещению ячеек. Они также объясняют функцию автоматического сохранения и ручное сохранение записных книжек. Наконец, видео кратко касается остановки выполнения ядра.

Далее инструктор объясняет, как использовать панель инструментов в Jupyter Notebook для навигации по движку Python и как аннотировать блокноты с помощью Markdown. Видео охватывает основные операторы управления потоком, включая условия if-then-else, циклы for и циклы while. Эти операторы позволяют принимать решения и повторять их в коде Python. Затем инструктор представляет три важные структуры данных для машинного обучения: кортежи, списки и словари. Эти структуры данных обеспечивают эффективные способы хранения данных и управления ими. Кроме того, видео включает в себя ускоренный курс по NumPy, библиотеке, позволяющей выполнять числовые операции в Python. Он охватывает создание массивов, доступ к данным и выполнение арифметических операций с массивами.

Далее в видео обсуждаются две важные библиотеки, Matplotlib и Pandas, которые обычно используются в машинном обучении для анализа и визуализации данных. Matplotlib позволяет пользователям создавать различные графики и диаграммы, облегчая визуализацию данных. Pandas, с другой стороны, предоставляет структуры данных и функции для обработки и анализа данных, в частности, с помощью структур серий и фреймов данных. Видео подчеркивает важность функции read_csv Pandas для загрузки CSV-файлов, наиболее распространенного формата в приложениях машинного обучения. В нем также подчеркивается полезность функций Pandas для обобщения и построения графиков данных, чтобы получить представление и подготовить данные для задач машинного обучения. Описательная статистика в Python упоминается как важнейший инструмент для понимания характеристик и природы данных.

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

Следующая обсуждаемая тема — методы предварительной обработки данных в машинном обучении. Видео охватывает нормализацию и стандартизацию как два важных метода. Нормализация включает в себя изменение масштаба атрибутов, чтобы они имели тот же масштаб, в то время как стандартизация включает преобразование атрибутов, чтобы они имели среднее значение, равное нулю, и стандартное отклонение, равное единице. Также объясняется бинаризация, при которой данные обрабатываются порогом для создания двоичных атрибутов или четких значений. Подчеркивается важность выбора функций, поскольку нерелевантные или частично нерелевантные функции могут негативно повлиять на производительность модели. Видео представляет одномерный отбор как один из статистических подходов к выбору признаков и подчеркивает использование методов рекурсивного исключения признаков и важности признаков, которые используют ансамбли дерева решений, такие как случайный лес или дополнительные деревья. Анализ основных компонентов (PCA) также обсуждается как метод сокращения данных, который может сжимать набор данных до меньшего количества измерений с использованием линейной алгебры.

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

Видео раскрывает показатели производительности, используемые для оценки прогнозов, сделанных моделями машинного обучения. Он охватывает точность классификации, логарифмическую потерю (для оценки вероятностей), площадь под кривой рабочих характеристик приемника (ROC) (для задач бинарной классификации), матрицу путаницы (для оценки точности модели с несколькими классами) и отчет о классификации (который обеспечивает точность , отзыв, оценка F1 и поддержка для каждого класса). Кроме того, в видео объясняются три общих показателя регрессии: средняя абсолютная ошибка, среднеквадратическая ошибка и R-квадрат. Демонстрируются практические примеры, иллюстрирующие, как рассчитать эти показатели с помощью Python.

Докладчик представляет концепцию выборочной проверки, чтобы определить, какие алгоритмы машинного обучения хорошо работают для конкретной проблемы. Выборочная проверка включает в себя оценку нескольких алгоритмов и сравнение их производительности. Видео демонстрирует выборочную проверку шести различных моделей машинного обучения, включая как линейные, так и нелинейные алгоритмы, с использованием Python и библиотеки scikit-learn. Спикер подчеркивает, что результаты могут отличаться из-за стохастического характера моделей. Раздел завершается введением в регрессионные модели машинного обучения, подготавливая зрителей к следующему разделу, посвященному выборочной проверке этих моделей.

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

Видео исследует процесс понимания и визуализации входных переменных для задачи машинного обучения. Он предлагает использовать одномерные графики, такие как графики с решеткой и усами и гистограммы, чтобы понять распределение входных переменных. Для многомерного анализа диаграммы рассеивания могут помочь определить структурные отношения между входными переменными и выявить высокие корреляции между конкретными парами атрибутов. В видео также обсуждается процесс оценки с использованием набора тестов с 10-кратной перекрестной проверкой для оценки производительности модели. Подчеркивается важность создания проверочного набора данных для независимой оценки точности наилучшей модели. Оцениваются шесть различных моделей машинного обучения, и для прогнозирования выбирается наиболее точная. Отчет о классификации, матрица путаницы и оценка точности используются для оценки прогнозов. Наконец, видео касается регрессии регуляризации, подчеркивая построение моделей Lasso и Elastic Net для уменьшения сложности моделей регрессии.

Видео знакомит с проблемой бинарной классификации в машинном обучении, целью которой является предсказание металла по камню с использованием набора данных Sonar Mines vs Rocks. Набор данных содержит 208 экземпляров с 61 атрибутом, включая атрибут класса. Анализируются описательные статистические данные, указывающие на то, что, хотя данные находятся в одном диапазоне, различные средства предполагают, что стандартизация данных может быть полезной. Унимодальные и мультимодальные визуализации данных, такие как гистограммы, графики плотности и корреляционные визуализации, используются для понимания данных. Создается проверочный набор данных, и базовый уровень производительности модели устанавливается путем тестирования различных моделей, включая линейную регрессию, логистическую регрессию, линейный дискриминантный анализ, деревья классификационной регрессии, машины опорных векторов (SVM), наивную байесовскую модель и k-ближайших соседей ( КНН). Точность каждого алгоритма рассчитывается с использованием 10-кратной перекрестной проверки и сравнивается.

В следующем сегменте видео обсуждается, как оценивать различные алгоритмы машинного обучения с использованием стандартизированных данных и настройки. Стандартизация включает в себя преобразование данных, поэтому каждый атрибут имеет среднее значение 0 и стандартное отклонение 1, что может повысить производительность некоторых моделей. Чтобы предотвратить утечку данных в процессе преобразования, рекомендуется конвейер, который стандартизирует данные и строит модель для каждой складки в наборе тестов перекрестной проверки. В видео демонстрируются методы настройки k-ближайших соседей (KNN) и машин опорных векторов (SVM) с использованием поиска по сетке с 10-кратной перекрестной проверкой стандартизированной копии обучающего набора данных. Определены оптимальные конфигурации для KNN и SVM, и оценена точность моделей. Наконец, в видео кратко обсуждаются KNN, регрессия дерева решений и SVM как модели нелинейного машинного обучения.

  • 00:00:00 Преподаватель курса знакомит с концепцией прогнозного моделирования и ее актуальностью для отрасли. В отличие от статистического моделирования, которое пытается понять данные, прогностическое моделирование фокусируется на разработке моделей, которые делают более точные прогнозы за счет объяснения того, почему делаются прогнозы. Курс фокусируется на табличных данных, таких как электронные таблицы или базы данных. Преподаватель ведет студентов от разработчиков, заинтересованных в машинном обучении в python, к обладанию ресурсами и возможностями для сквозной работы с новыми наборами данных с использованием python и разработки точных прогностических моделей. Студенты узнают, как выполнить все подзадачи задачи прогнозного моделирования с помощью Python, интегрировать новые и различные методы в Python и SCIPy, изучить Python и получить помощь в машинном обучении. Лекция также охватывает ускоренный курс по Python, в котором освещаются ключевые детали синтаксиса языка, включая присваивание, управление потоком, структуры данных и функции.

  • 00:05:00 Видео охватывает базовый синтаксис Python, включая переменные и присваивания, и объясняет разницу между «равно» для присваивания и «двойное равно» для равенства. Затем лектор демонстрирует, как использовать Jupyter Notebook для написания кода на Python, и объясняет некоторые основные советы по навигации, например, как создать новый блокнот, использовать псевдонимы для библиотек, выполнять ячейки, а также перемещать или копировать ячейки. Лектор также объясняет функцию автосохранения и как сохранить блокнот вручную. Видео завершается кратким объяснением того, как остановить выполнение ядра.

  • 00:10:00 Преподаватель объясняет, как использовать панель инструментов для навигации по движку Python и как комментировать блокноты с помощью уценки. Затем в видео рассматриваются операторы управления потоком, такие как условия if-then-else, циклы for и циклы while. После этого инструктор объясняет три основные структуры данных, необходимые для машинного обучения: кортежи, списки и словари. Наконец, видео представляет собой ускоренный курс по NumPy, который включает в себя создание массивов, доступ к данным и использование массивов в арифметике.

  • 00:15:00 Обсуждается ускоренный курс по Matplotlib и Pandas для машинного обучения. Matplotlib — это библиотека, которую можно использовать для создания графиков и диаграмм. Панды предоставляют структуры данных и функциональные возможности для обработки и анализа данных с помощью структур данных рядов и фреймов данных. Это важно для загрузки CSV-файлов, который является наиболее распространенным форматом, используемым для приложений машинного обучения. Кроме того, гибкие функции, такие как Pandas read_csv, могут помочь в загрузке данных и возврате фрейма данных Pandas для суммирования и построения графика данных, чтобы получить информацию и идеи для предварительной обработки и обработки данных в задачах машинного обучения. Наконец, получение информации из данных с помощью описательной статистики в python не может быть заменено и может помочь лучше понять характеристики и природу данных.

  • 00:20:00 Pandas DataFrame упрощает создание гистограмм с помощью функции hist(). Другой способ визуализации данных — использование графиков плотности, которые можно создать с помощью функции plot(). Графики плотности показывают функцию плотности вероятности данных и могут дать представление о форме распределения. Диаграммы с ячейками и усами также полезны для визуализации распределения данных и выявления выбросов. В целом визуализация данных является ключевым шагом в понимании характеристик набора данных и может помочь в выборе подходящих алгоритмов машинного обучения.

  • 00:25:00 В видео объясняются различные графики и диаграммы, которые могут быть полезны для анализа данных перед применением методов машинного обучения. Гистограммы, диаграммы плотности и ящичные диаграммы используются для наблюдения за распределением атрибутов, а матрицы корреляции и матрицы диаграмм рассеяния используются для определения взаимосвязи между парами атрибутов. Масштабирование, стандартизация, нормализация и бинаризация данных также обсуждаются как необходимые этапы предварительной обработки для подготовки данных к алгоритмам машинного обучения, а в видео объясняется метод подгонки и преобразования как общий подход к предварительной обработке данных.

  • 00:30:00 В видео обсуждаются методы предварительной обработки данных в машинном обучении. Во-первых, объясняются методы нормализации и стандартизации. Нормализация включает изменение масштаба атрибутов, чтобы они имели тот же масштаб, а стандартизация включает изменение атрибутов, чтобы иметь среднее значение, равное нулю, и стандартное отклонение, равное единице. Бинаризация или пороговое значение данных — это еще один обсуждаемый метод, который может быть полезен для добавления новых бинарных атрибутов или преобразования вероятностей в четкие значения. Затем объясняется важность выбора функций, поскольку нерелевантные или частично нерелевантные функции могут негативно повлиять на производительность модели. Одномерный отбор — это один из статистических подходов к выбору признаков, использующий результаты статистических тестов. Методы рекурсивного исключения признаков и важности признаков, которые используют ансамбли деревьев решений, таких как случайный лес или дополнительные деревья, также могут быть полезны для выбора признаков. Наконец, анализ основных компонентов (PCA) — это метод сокращения данных, использующий линейную алгебру для преобразования набора данных в сжатую форму с меньшим количеством измерений.

  • 00:35:00 Объясняется важность методов повторной выборки для оценки производительности алгоритмов машинного обучения на невидимых данных. Подчеркивается, что оценка алгоритма на том же наборе данных, который используется для обучения, может привести к переоснащению, что приведет к идеальной оценке набора обучающих данных, но к плохим прогнозам для новых данных. Затем представлены такие методы, как разделение наборов обучающих тестов, k-кратная перекрестная проверка, перекрестная проверка с исключением одного и повторяющиеся случайные разделения тестов, как способы создания полезных оценок производительности алгоритма. Раздел заканчивается обсуждением различных показателей производительности алгоритмов машинного обучения, таких как точность классификации, логарифмическая потеря, площадь под кривой, матрица путаницы и отчет о классификации.

  • 00:40:00 Видео охватывает несколько показателей производительности для оценки прогнозов, сделанных моделью машинного обучения. К ним относятся точность классификации, логарифмическая потеря для оценки вероятностей, площадь под кривой ROC для задач двоичной классификации, матрица путаницы для оценки точности модели с двумя или более классами и отчет о классификации для оценки точности, полноты, оценки F1 и поддержки. для каждого класса. Кроме того, в видео рассматриваются три распространенные метрики регрессии: средняя абсолютная ошибка, среднеквадратическая ошибка и R-квадрат, а также демонстрируются примеры расчета этих метрик с помощью Python.

  • 00:45:00 Докладчик объясняет концепцию использования выборочной проверки, чтобы выяснить, какие алгоритмы машинного обучения хорошо работают для данной проблемы. Он демонстрирует выборочную проверку для шести различных моделей машинного обучения, включая линейные и нелинейные алгоритмы, используя Python с библиотекой scikit-learn. Он также подчеркивает, что результаты могут отличаться из-за стохастического характера модели. Наконец, спикер представляет регрессионные модели машинного обучения и готовит зрителей к следующему разделу о том, как выборочно проверять эти модели.

  • 00:50:00 Докладчик представляет линейные и нелинейные модели машинного обучения с использованием набора данных о ценах на жилье в Бостоне. Тестовая система с 10-кратной перекрестной проверкой используется для демонстрации того, как проверять блоки каждой модели, а числа среднеквадратичных ошибок используются для обозначения производительности, которые инвертируются из-за особенностей функции оценки перекрестных файлов. Модель линейной регрессии предполагает гауссово распределение входных переменных и то, что они относятся к выходной переменной и не сильно коррелируют друг с другом. Гребневая регрессия, модификация линейной регрессии, минимизирует сложность модели, измеряемую суммой квадратов значений коэффициентов или нормы L2. Докладчик акцентирует внимание на понимании конвейера или процесса и на том, чтобы не зацикливаться на понимании кода на данном этапе.

  • 00:55:00 В видео обсуждается процесс понимания и визуализации входных переменных для задачи машинного обучения. В видео предлагается использовать одномерные графики, такие как диаграммы с решеткой и усами, а также гистограммы, чтобы понять распределение входных переменных. Для многомерных графиков точечные графики могут помочь определить структурные отношения между входными переменными и выявить высокую корреляцию между определенными парами атрибутов. Затем в видео обсуждается процесс оценки моделей с помощью тестового набора с использованием 10-кратной перекрестной проверки, когда набор данных разбивается на 10 частей, а затем обучается и тестируется на разных разделениях. Видео подчеркивает важность создания набора данных для проверки, чтобы получить второе и независимое представление о том, насколько точной может быть лучшая модель. Видео оценивает шесть различных моделей машинного обучения и выбирает наиболее точную для прогнозирования, оценивая прогнозы с помощью отчета о классификации, матрицы путаницы и оценки точности. Раздел заканчивается обсуждением регрессии с регуляризацией и построением моделей Lasso и Elastic Net для минимизации сложности модели регрессии.

  • 01:00:00 Мы знакомимся с проблемой бинарной классификации в машинном обучении, где цель состоит в том, чтобы предсказать металл из горной породы с помощью набора данных гидролокатора мины и горные породы. Набор данных содержит 208 экземпляров с 61 атрибутом, включая атрибут класса. Проанализировав данные и взглянув на описательную статистику, мы видим, что данные находятся в одном диапазоне, но разные средства указывают на то, что стандартизация данных может быть полезной. Мы также рассмотрим одномодальные и мультимодальные визуализации данных, включая гистограммы, графики плотности и визуализации корреляции между атрибутами. Затем мы готовим набор проверочных данных и создаем базовый уровень для производительности различных моделей, включая линейную регрессию, логистическую регрессию, линейный дискриминантный анализ, деревья классификационной регрессии, SVM, наивную байесовскую модель и k-ближайших соседей. Мы сравниваем точность каждого алгоритма, рассчитанную с помощью 10-кратной перекрестной проверки.

  • 01:05:00 В видео обсуждается, как оценивать различные алгоритмы машинного обучения с использованием стандартизированных данных и настроек. Стандартизация преобразует данные таким образом, что каждый атрибут имеет среднее значение 0 и стандартное отклонение 1, что может улучшить навыки некоторых моделей. Чтобы избежать утечки данных в процессе преобразования, рекомендуется конвейер, который стандартизирует данные и строит модель для каждой складки в тестовом наборе перекрестной проверки. Видео демонстрирует, как настроить k-ближайших соседей (KNN) и машины опорных векторов (SVM) с помощью поиска по сетке с 10-кратной перекрестной проверкой стандартизированной копии набора обучающих данных. Определены оптимальные конфигурации для KNN и SVM, и оценена точность моделей. Наконец, в видео кратко обсуждаются KNN, регрессия дерева решений и SVM как модели нелинейного машинного обучения.
A Fast Track Introduction to Python for Machine Learning Engineers
A Fast Track Introduction to Python for Machine Learning Engineers
  • 2022.03.23
  • www.youtube.com
Complete Course on Machine Learning with Python
 

Прикладная статистика для инженеров по машинному обучению


Прикладная статистика для инженеров по машинному обучению

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

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

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

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

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

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

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

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

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

Докладчик демонстрирует, как рассчитать эти показатели оценки с помощью библиотеки Python scikit-learn. В нем показано, как импортировать необходимые модули, разбивать данные на наборы для обучения и тестирования, обучать модель классификации, делать прогнозы на наборе тестов и оценивать производительность модели, используя точность, воспроизводимость, полноту и оценку F1. Видео подчеркивает важность оценки моделей на невидимых данных для обеспечения их возможностей обобщения.

Кроме того, видео знакомит с концепцией кривых рабочих характеристик приемника (ROC) и площади под кривой (AUC) в качестве показателей оценки для моделей бинарной классификации. Кривые ROC отображают процент истинных положительных результатов в сравнении с уровнем ложных положительных результатов при различных пороговых значениях классификации, обеспечивая визуальное представление производительности модели при различных пороговых значениях. AUC представляет собой площадь под кривой ROC и представляет собой единую метрику для сравнения производительности различных моделей. В видео объясняется, как построить кривую ROC и рассчитать AUC с помощью библиотеки Python scikit-learn.

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

Вводится понятие перекрестной проверки как метода оценки производительности и обобщения моделей машинного обучения. В видео объясняется, что перекрестная проверка включает в себя разделение данных на несколько подмножеств, обучение модели на части данных и оценку ее производительности на оставшейся части. Этот процесс повторяется несколько раз, при этом для обучения и тестирования используются разные подмножества, а результаты усредняются для оценки производительности модели. Видео демонстрирует, как выполнять перекрестную проверку с использованием библиотеки Python scikit-learn, в частности, метод перекрестной проверки K-fold.

Далее в видео обсуждается концепция выбора функций и их важность в машинном обучении. В нем объясняется, что выбор функций включает определение наиболее важных функций или переменных, которые влияют на производительность модели. Видео подчеркивает важность выбора информативных функций для повышения точности модели, уменьшения переобучения и улучшения интерпретируемости. В нем представлены различные методы выбора признаков, такие как одномерный выбор, рекурсивное исключение признаков и оценки важности признаков. Видео демонстрирует, как реализовать выбор функций с помощью библиотеки Python scikit-learn.

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

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

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

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

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

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

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

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

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

  • 00:15:00 Докладчик объясняет различные шкалы измерения: номинальную, порядковую, интервальную и относительную. Далее они обсуждают статистику, применимую к каждой шкале, и то, как ее можно реализовать в машинном обучении. Учитывая, что мы почти всегда работаем с наборами выборок, автор подчеркивает, что нам необходимо понимать и сообщать о неопределенности, связанной с моделированием. Затем обсуждение переходит к примерному нормальному распределению, которое очень часто встречается в различных наборах данных. Наконец, они демонстрируют, как мы можем генерировать выборочные данные и применять их к гистограмме, чтобы увидеть, соответствует ли она распределению Гаусса. Автор объясняет, что, хотя большинство наборов данных не будут иметь идеального гауссовского распределения, они будут иметь гауссовские свойства.

  • 00:20:00 Подчеркивается важность выбора более детального способа разделения данных для лучшего раскрытия лежащего в основе распределения Гаусса, и исследуются меры центральной тенденции, такие как среднее значение и медиана, а дисперсия и стандартное отклонение также обсуждаются как мера распространения распределения. Случайность — важный инструмент машинного обучения, который помогает алгоритмам быть более надежными и точными. Объясняются различные источники случайности, такие как ошибки в данных и шум, которые могут скрывать отношения.

  • 00:25:00 Объясняется, что алгоритмы машинного обучения часто используют случайность для достижения более эффективного отображения данных. Случайность позволяет алгоритмам генерировать более оптимальную модель. В этом разделе обсуждаются источники случайности, как контролируемые, так и неконтролируемые, а также то, как использование функции начального числа может сделать случайность в модели согласованной. Приведен пример использования модуля random Python для генерации случайных чисел и библиотеки numpy для эффективной работы с векторами и матрицами чисел. Генератор псевдослучайных чисел numpy отличается от генератора псевдослучайных чисел стандартной библиотеки python и должен использоваться отдельно. Наконец, обсуждаются два случая запуска генератора случайных чисел, включая подготовку данных и разделение данных.

  • 00:30:00 Обсуждается важность последовательного разбиения данных и использования генераторов псевдослучайных чисел при оценке алгоритма. Рекомендуется оценивать модель таким образом, чтобы сообщаемая производительность включала измеренную неопределенность и производительность алгоритма. Оценка алгоритма на нескольких разбиениях данных даст представление о том, как производительность алгоритма зависит от изменений в данных обучения и тестирования, а многократная оценка алгоритма на одних и тех же разбиениях данных поможет понять, как производительность алгоритма меняется отдельно. . Также обсуждаются закон больших чисел и центральная предельная теорема, подчеркивая, что чем больше данных у нас есть, тем лучше это для производительности нашей модели, и что по мере увеличения размера выборки распределение среднего будет приближаться к распределению Гаусса. .

  • 00:35:00 Центральная предельная теорема демонстрируется с помощью бросков костей и кода. Демонстрация показывает, что по мере увеличения размера выборки средние значения выборки будут приближаться к распределению Гаусса. Интерпретация данных имеет решающее значение в статистике для обнаружения смысла. Статистическая проверка гипотез или тесты значимости используются в машинном обучении, чтобы делать заявления о распределении данных или сравнивать две выборки. Гипотеза 0 или нулевая гипотеза — это предположение по умолчанию о том, что ничего не изменилось, и проверка статистической гипотезы может возвращать либо p-значение, либо критическое значение. P-значение — это величина, используемая для интерпретации результата проверки гипотезы и либо для отклонения, либо для отказа от отклонения нулевой гипотезы, в то время как критическое значение используется для сравнения статистики теста с ее выборочным распределением, чтобы определить, достаточно ли доказательств для отвергнуть нулевую гипотезу.

  • 00:40:00 Уточняется концепция отклонения нулевой гипотезы, при этом нулевая гипотеза утверждает, что нет статистически значимой разницы. Если результат статистического теста отвергает нулевую гипотезу, это означает, что что-то является статистически значимым. Также обсуждается распределение Гаусса, которое описывает группировку или плотность наблюдений и часто упоминается как нормальное распределение. Распределение — это математическая функция, описывающая отношение наблюдений к выборочному пространству. Функции плотности, включая функции плотности вероятности и кумулятивные функции плотности, используются для описания вероятности наблюдений в распределении. Наконец, подчеркивается важность проверки того, является ли выборка данных случайной, и приводятся характеристики нормально распределенных выборок.

  • 00:45:00 Докладчик обсудил нормальное (гауссово) распределение, его свойства, включая функцию распределения вероятностей (pdf) и кумулятивную функцию распределения (cdf), а также правило 68, 95 и 99,7, связанное со стандартными отклонениями. Докладчик также представил t-распределение, которое похоже на нормальное распределение, но используется для небольших выборок. Впоследствии в статье было представлено распределение хи-квадрат, его использование для оценки согласия и его связь с t-распределением. Наконец, спикер продемонстрировал использование модуля stats chi 2 в Scipy для расчета статистики для распределения хи-квадрат.

  • 00:50:00 Объясняется понятие критических значений при проверке статистических гипотез. Критическое значение — это порог, используемый для определения того, принимается или отвергается нулевая гипотеза. Он предполагает нормальное или гауссово распределение и имеет область приемлемости и область отклонения. Линия, разделяющая эти области, является критическим значением. Односторонние тесты определяют, является ли среднее значение больше или меньше другого среднего, но не того и другого, в то время как двусторонние тесты определяют, отличаются ли два средних значения друг от друга. Критическое значение позволяет количественно определить неопределенность расчетных статистических данных или интервалов, таких как доверительные интервалы и интервалы допуска.

  • 00:55:00 Обсуждается использование двусторонних тестов, учитывающих как положительные, так и отрицательные эффекты продукта. Приведенный пример представляет собой противопоставление непатентованного лекарственного средства фирменному продукту, где двусторонний тест может определить, эквивалентен ли непатентованный продукт или хуже, чем продукт с известной торговой маркой. Использование процентных функций или функций квантилей также объясняется и демонстрируется на примерах с использованием трех часто используемых распределений: стандартного распределения Гаусса, стандартного распределения Стьюдента и стандартного распределения хи-квадрат. Наконец, обсуждается концепция корреляции и ее важность в определении взаимосвязи между двумя переменными, а также потенциальная проблема мультиколлинеарности и ее влияние на производительность алгоритма.

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

  • 01:05:00 В видео обсуждается использование параметрических тестов статистической значимости, которые предполагают, что данные были взяты из распределения Гаусса с тем же средним значением и стандартным отклонением. Тестовый набор данных определен и используется для демонстрации t-критерия Стьюдента для независимых и парных выборок, а также теста дисперсионного анализа. На видео показано, как эти тесты можно реализовать на Python с помощью соответствующих функций Scipy. Примеры иллюстрируют, как эти тесты можно использовать для определения того, имеют ли различные выборки данных одинаковое распределение.

  • 01:10:00 Концепция размера эффекта в статистике обсуждается как способ количественной оценки величины различий между группами или ассоциаций между переменными, который может дополнять результаты, полученные в результате проверки статистических гипотез. Методы величины эффекта делятся на ассоциативные и дифференциальные и могут быть стандартизированными, исходными или бесединичными, в зависимости от цели интерпретации и используемой статистической меры. Коэффициент корреляции Пирсона является широко используемой стандартизированной мерой для определения линейных ассоциаций, которая не содержит единиц измерения и может быть рассчитана с помощью функции Python pearsonr(). Статистическая мощность, на которую влияют размер эффекта, размер выборки, значимость и уровень мощности, также объясняется как решающий фактор в плане эксперимента и может быть оценена с помощью анализа мощности для определения минимального размера выборки, необходимого для эксперимента.

  • 01:15:00 В видео обсуждается важность выборки данных и повторной выборки данных в прогнозном моделировании, поясняется, что выборка включает выбор подмножества совокупности, тогда как повторная выборка включает многократную оценку параметров совокупности из выборки данных для повышения точности и количественной оценки неопределенности. В видео описываются распространенные методы выборки, классифицируемые как вероятностная или невероятностная выборка, и выделяются три типа выборки, с которыми могут столкнуться инженеры по машинному обучению: простая случайная выборка, системная выборка и стратифицированная выборка. Кроме того, видео предупреждает о потенциальных ошибках, которые могут быть допущены в процессе выборки, и подчеркивает необходимость статистических выводов и осторожности при составлении выводов о совокупности. Далее в видео объясняются широко используемые методы выборки в машинном обучении, а именно k-кратная перекрестная проверка и начальная загрузка, причем последний требует больших вычислительных ресурсов, хотя и обеспечивает надежные оценки населения.

  • 01:20:00 Метод начальной загрузки обсуждается как инструмент для оценки количественных показателей населения путем усреднения оценок из нескольких небольших выборок данных. Выборки строятся путем извлечения наблюдений из больших наборов данных по одному и возвращения их обратно в исходную выборку после выбора. Такой подход называется выборкой с замещением. Функция resample, представленная в библиотеке SciPy, может быть использована для создания одной начальной выборки, и хотя она не включает никакого механизма для простого сбора случайных наблюдений, которые можно было бы использовать для оценки подходящих моделей, Наблюдения за сумками по-прежнему можно собирать с помощью понимания списков Python. Кроме того, объясняется процесс k-кратной перекрестной проверки, поскольку это процедура повторной выборки, используемая для оценки моделей машинного обучения на ограниченных данных. Для этой процедуры можно использовать класс изучения цикла K-кратности, и упоминаются четыре часто используемых варианта перекрестной проверки k-кратности.

  • 01:25:00 Спикер обсуждает два подхода к ресэмплингу в машинном обучении: k-fold cross-validation и train-test split. Несмотря на то, что перекрестная проверка в k-кратном порядке является золотым стандартом, разделение обучающих тестов может быть проще для понимания и реализации. Докладчик демонстрирует, как использовать подход разделения обучения и тестирования в Python, а также упоминает об использовании статистики оценок, которая направлена на количественную оценку размера и неопределенности результатов и становится все более популярной в исследовательской литературе. Три основных класса статистики оценки включают размер эффекта, интервальную оценку и метаанализ. Переход к оценочной статистике происходит потому, что ее легче анализировать и интерпретировать в контексте исследовательских вопросов.

  • 01:30:00 Обсуждаются различные методы измерения величины эффекта и интервальной оценки. Величина эффекта может быть измерена через ассоциацию, которая представляет собой степень, в которой образцы меняются вместе, или разницу, которая представляет собой степень, в которой образцы различаются. Между тем, интервальная оценка позволяет количественно определить неопределенность в наблюдениях и может быть выполнена с помощью интервалов допуска, доверительных интервалов или интервалов прогнозирования. Допустимые интервалы определяют верхнюю и нижнюю границы, в пределах которых находится определенный процент выходных данных процесса, а доверительные интервалы обеспечивают границы для оценок параметра совокупности. Наконец, дается демонстрация того, как рассчитать допустимые интервалы для выборки наблюдений, взятых из распределения Гаусса.

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

  • 01:40:00 Объясняется концепция доверительных интервалов, от расчета доверительного интервала для ошибки классификации модели до использования повторной выборки начальной загрузки в качестве непараметрического метода оценки доверительных интервалов. Метод бутстрепной повторной выборки включает выборку выборок с заменой из фиксированного конечного набора данных для оценки параметров совокупности. Кроме того, понятие интервалов прогнозирования вводится как оценка интервала, в который будут попадать будущие наблюдения с определенным уровнем достоверности, что полезно при прогнозировании или прогнозировании с помощью регрессионных моделей.

  • 01:45:00 Концепция интервалов прогнозирования объясняется как оценка диапазона, в который попадет будущее наблюдение с определенным уровнем достоверности, учитывая ранее наблюдаемые данные. Он отличается от доверительного интервала, который количественно определяет неопределенность, связанную с переменной выборки совокупности. Интервалы прогнозирования обычно используются в прогнозировании или моделях прогнозирования. В статье представлен простой пример линейной регрессии в наборе данных с двумя переменными, в котором взаимосвязь между переменными видна из диаграммы рассеивания. Затем модель линейной регрессии используется для создания одного прогноза с прогнозируемым интервалом 95% уверенности и сравнения с известным ожидаемым значением. Подчеркивается различие между интервалами прогнозирования и доверительными интервалами, а также тот факт, что интервалы прогнозирования обычно шире доверительных интервалов из-за учета неопределенности, связанной с ошибкой.
Applied Statistics for Machine Learning Engineers
Applied Statistics for Machine Learning Engineers
  • 2022.03.24
  • www.youtube.com
Complete Course on Applied Statistics for Machine Learning Engineers. It's all the statistics you'll need to know for a career in machine learning.
 

Прикладная линейная алгебра для инженеров по машинному обучению



Прикладная линейная алгебра для инженеров по машинному обучению

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

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

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

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

В видео дополнительно исследуется практическое применение линейной алгебры в задачах машинного обучения. Он вводит концепцию использования операций линейной алгебры, таких как кадрирование, масштабирование и обрезка, для управления изображениями, демонстрируя, как обозначения и операции линейной алгебры могут использоваться в этом контексте. Кроме того, видео объясняет популярную технику кодирования, называемую горячим кодированием для категориальных переменных. Представлена основная структура данных, используемая в машинном обучении, N-мерные массивы или массивы ND, а библиотека NumPy в Python обсуждается как мощный инструмент для создания этих массивов и управления ими. В видео рассматриваются важные функции, такие как v-стек и горизонтальное стекирование, которые позволяют создавать новые массивы из существующих массивов.

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

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

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

Далее докладчик вводит понятие векторов, которые представляют собой кортежи из одного или нескольких значений, называемых скалярами. Векторы часто представляются с помощью символов нижнего регистра, таких как «v», и могут рассматриваться как точки или координаты в n-мерном пространстве, где «n» представляет количество измерений. Объясняется создание векторов в виде массивов NumPy в Python. Видео также охватывает векторные арифметические операции, такие как сложение и вычитание векторов, которые выполняются поэлементно для векторов одинаковой длины, в результате чего получается новый вектор той же длины. Кроме того, спикер объясняет, как векторы можно умножать на скаляры для масштабирования их величины, и демонстрирует, как выполнять эти операции с помощью массивов NumPy в Python. Также обсуждается скалярное произведение двух векторов, которое дает скаляр и может использоваться для вычисления взвешенной суммы вектора.

Затем акцент смещается на векторные нормы и их важность в машинном обучении. Векторные нормы относятся к размеру или длине вектора и рассчитываются с использованием меры, суммирующей расстояние вектора от начала координат векторного пространства. Подчеркивается, что векторные нормы всегда положительны, за исключением вектора всех нулевых значений. Видео знакомит с четырьмя распространенными расчетами нормы вектора, используемыми в машинном обучении. Он начинается с векторной нормы L1, за которой следует норма L2 (евклидова норма) и максимальная норма. В этом разделе также определяются матрицы и объясняется, как манипулировать ими в Python. Обсуждается матричная арифметика, включая умножение матрицы на матрицу (скалярное произведение), умножение матрицы на вектор и скалярное умножение. Матрица описывается как двумерный массив скаляров с одним или несколькими столбцами и одной или несколькими строками, обычно представленный прописными буквами, такими как «A».

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

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

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

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

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

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

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

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

Далее в видео представлена декомпозиция матрицы, которая представляет собой метод разбиения матрицы на составные части. Разложение матриц упрощает сложные операции с матрицами и обеспечивает эффективность вычислений. Рассмотрены два широко используемых метода матричной декомпозиции: LU (нижняя-верхняя) декомпозиция для квадратных матриц и QR (QR-факторизация) декомпозиция для прямоугольных матриц.

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

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

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

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

В видео объясняется, что SVD позволяет разложить матрицу на три отдельные матрицы: U, Σ и V. Матрица U содержит левые сингулярные векторы, Σ — диагональная матрица, содержащая сингулярные значения, а V содержит правые сингулярные векторы. Восстановив исходную матрицу по этим компонентам, можно получить аппроксимацию исходных данных при уменьшении ее размерности.

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

В видео подчеркивается, что SVD успешно применяется для обработки естественного языка с использованием метода, называемого скрытым семантическим анализом (LSA) или скрытым семантическим индексированием (LSI). Представляя текстовые документы в виде матриц и выполняя SVD, LSA может фиксировать базовую семантическую структуру документов, позволяя выполнять такие задачи, как определение сходства документов и моделирование тем.

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

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

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

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

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

  • 00:05:00 Докладчик обсуждает числовую линейную алгебру, приложение линейной алгебры в компьютерах. Это включает в себя реализацию операций линейной алгебры, а также решение потенциальных проблем, возникающих при работе с ограниченной точностью с плавающей запятой в цифровых компьютерах. Численная линейная алгебра является важным инструментом машинного обучения, поскольку многие алгоритмы глубокого обучения полагаются на способность графических процессоров быстро выполнять операции линейной алгебры. Несколько популярных библиотек числовой линейной алгебры с открытым исходным кодом используются для вычисления операций линейной алгебры, а библиотеки линейной алгебры на основе Fortran обеспечивают основу для большинства современных реализаций с использованием таких языков программирования, как Python. Линейная алгебра также важна в статистике, особенно в многомерном статистическом анализе, анализе главных компонентов и решении задач линейной регрессии. Кроме того, спикер обсуждает различные приложения линейной алгебры в таких областях, как обработка сигналов, компьютерная графика и даже физика, с теорией относительности Альберта Эйнштейна, использующей тензоры и тензорное исчисление, тип линейной алгебры.

  • 00:10:00 Представлена концепция использования операций линейной алгебры над изображениями, таких как обрезка, масштабирование и обрезка, с использованием обозначений и операций линейной алгебры. Кроме того, объясняется популярный метод кодирования категориальных переменных, называемый одним горячим кодированием. Кроме того, обсуждается основная структура данных, используемая в машинном обучении, N-мерные массивы или массивы ND, а также способы их создания и управления ими с помощью библиотеки NumPy в Python. Наконец, объясняются две наиболее популярные функции для создания новых массивов из существующих массивов: v-stack и горизонтальное стекирование.

  • 00:15:00 Спикер обсуждает, как манипулировать данными в массивах numpy и получать к ним доступ, которые обычно используются для представления данных машинного обучения. Одномерный список можно преобразовать в массив с помощью функции массива, а двумерный массив данных можно создать с помощью списка списков. Доступ к данным через индексирование аналогичен другим языкам программирования, но массивы numpy также можно нарезать с помощью оператора двоеточия. Также возможно отрицательное индексирование, а срезы можно использовать для указания входных и выходных переменных в машинном обучении.

  • 00:20:00 В видео рассказывается о методах работы с многомерными наборами данных, распространенных в машинном обучении. Он начинается с одномерного среза и переходит к двумерному срезу и разделению данных на входные и выходные значения для обучения и тестирования. Затем в видео рассказывается об изменении формы массива, включая преобразование одномерных массивов в двумерные массивы с одним столбцом и преобразование двумерных данных в трехмерный массив для алгоритмов, которые ожидают несколько выборок одного или нескольких временных шагов и одной или нескольких функций. . Наконец, видео охватывает широковещательную рассылку массивов, которая позволяет добавлять, вычитать или использовать массивы разного размера в арифметике, что полезно для наборов данных разного размера.

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

  • 00:30:00 Докладчик представляет концепцию векторов, которые представляют собой кортежи из одного или нескольких значений, называемых скалярами, и часто представляются с помощью символа нижнего регистра, такого как «v». Векторы можно рассматривать как точки или координаты в n-мерном пространстве, где n — количество измерений, и их можно создать в Python как массив numpy. Докладчик также обсуждает векторные арифметические операции, такие как сложение и вычитание векторов, которые выполняются поэлементно для векторов одинаковой длины, в результате чего получается новый вектор той же длины. Кроме того, спикер объясняет, что векторы можно умножать на скаляр, чтобы масштабировать его величину, и как выполнять эти операции с использованием массивов numpy в Python. Наконец, спикер рассказывает о скалярном произведении двух векторов, которое дает скаляр, и о том, как его можно использовать для вычисления взвешенной суммы вектора.

  • 00:35:00 Основное внимание уделяется векторным нормам и их важности в машинном обучении. Векторные нормы относятся к размеру или длине вектора, рассчитанному с использованием некоторой меры, которая суммирует расстояние вектора от начала координат векторного пространства. Норма всегда является положительным числом, за исключением вектора всех нулевых значений. Введены четыре общих вычисления нормы вектора, используемые в машинном обучении, начиная с нормы вектора L1, за которой следуют нормы L2 и max. В этом разделе также определяются матрицы и способы работы с ними в Python, обсуждается матричная арифметика, умножение матрицы на матрицу (точечный продукт), умножение матрицы на вектор и скалярное умножение. Матрица — это двумерный массив скаляров с одним или несколькими столбцами и одной или несколькими строками, который часто обозначается заглавной буквой, например A.

  • 00:40:00 Представлено понятие матричных операций для машинного обучения, включая матричное умножение, матричное деление и матричное скалярное умножение. Умножение матриц, также известное как скалярное произведение матриц, требует, чтобы количество столбцов в первой матрице равнялось количеству строк во второй матрице. Для реализации этой операции можно использовать функцию точки в numpy. Также вводится понятие транспонирования матриц, когда новая матрица создается путем перестановки количества строк и столбцов исходной матрицы. Наконец, обсуждается процесс обращения матриц, который находит другую матрицу, которая будет умножаться на матрицу, в результате чего получается единичная матрица.

  • 00:45:00 Рассмотрена концепция обращения матрицы, где обращение матрицы обозначается отрицательным 1 верхним индексом рядом с матрицей. Операция обращения матриц включает в себя поиск набора эффективных численных методов. Также обсуждается операция трассировки квадратной матрицы, которую можно вычислить с помощью функции трассировки в numpy. Определитель квадратной матрицы определяется как скалярное представление объема матрицы, и его также можно вычислить с помощью функции det в numpy. Кроме того, вводится ранг матрицы, который оценивает количество линейно независимых строк или столбцов в матрице и обычно рассчитывается с использованием разложения по сингулярным числам. Наконец, объясняется концепция разреженных матриц, которые представляют собой матрицы, содержащие в основном нулевые значения и требующие значительных вычислительных ресурсов для представления и работы с ними.

  • 00:50:00 Мы узнаем о разреженных матрицах, которые в основном состоят из нулевых значений и отличаются от плотных матриц, которые в основном имеют ненулевые значения. Разреженность можно количественно определить, вычислив показатель, который представляет собой количество нулевых значений, деленное на общее количество элементов в матрице. Мы также узнаем о двух больших проблемах с разреженностью: пространственной сложности и временной сложности. Scipy предоставляет инструменты для создания разреженных матриц, и многие функции линейной алгебры numpy и scipy могут работать с ними. Разреженные матрицы обычно используются в прикладном машинном обучении для наблюдения за данными и подготовки данных.

  • 00:55:00 Обсуждаются различные типы матриц, обычно используемые в линейной алгебре, особенно относящиеся к машинному обучению. Вводятся квадратные матрицы, в которых количество строк равно количеству столбцов, а также прямоугольные матрицы. Также рассматриваются главная диагональ и порядок квадратной матрицы. Кроме того, объясняются симметричные матрицы, треугольные матрицы (включая верхнюю и нижнюю), диагональные матрицы, единичные матрицы и ортогональные матрицы. Отмечено, что ортогональная матрица образуется, когда скалярное произведение двух векторов равно нулю.

  • 01:00:00 Изучаем ортогональные матрицы и тензоры. Ортогональная матрица — это тип квадратной матрицы, столбцы и строки которой являются ортогональными единичными векторами. Эти матрицы дешевы в вычислительном отношении и стабильны для вычисления своих обратных значений и могут использоваться в моделях глубокого обучения. В Tensorflow тензоры — это краеугольная структура данных и обобщение векторов и матриц, представленных в виде многомерных массивов. Тензорами можно управлять в Python, используя n-мерные массивы, подобные матрицам, с поэлементными тензорными операциями, такими как сложение и вычитание. Кроме того, операции с тензорными произведениями можно выполнять с тензорами, матрицами и векторами, что позволяет интуитивно понять более высокие измерения.

  • 01:05:00 Видео знакомит с декомпозицией матриц — методом разложения матрицы на составные части и упрощения более сложных матричных операций, которые можно выполнять с матрицей декомпозиции. Два широко используемых метода разложения матриц, которые рассматриваются в следующих уроках, — это разложение матрицы LU для квадратных матриц и разложение матрицы QR для прямоугольных матриц. LU-разложение можно использовать для упрощения линейных уравнений в задаче линейной регрессии и вычисления определителя и обратной матрицы, в то время как QR-разложение имеет приложения для решения систем линейных уравнений. Обе декомпозиции могут быть реализованы с помощью встроенных функций пакета NumPy в Python.

  • 01:10:00 В видео обсуждается разложение Холецкого, которое используется для симметричных и положительно определенных матриц. Этот метод почти в два раза эффективнее LU-разложения и предпочтительнее для разложения симметричных матриц. Разложение Холецкого представлено нижней треугольной матрицей, доступ к которой можно легко получить с помощью функции Холецкого в NumPy. В видео также упоминается, что методы разложения матриц, в том числе разложение по собственным числам, используются для упрощения сложных операций, а разложение по собственным числам разлагает матрицу на собственные векторы и собственные значения. Наконец, в видео отмечается, что собственные векторы — это единичные векторы, а собственные значения — скаляры, и оба они полезны для уменьшения размерности и выполнения сложных матричных операций.

  • 01:15:00 Обсуждается понятие собственного разложения и его вычисление с использованием эффективного итерационного алгоритма. Собственное разложение — это метод разложения квадратной матрицы на ее собственные значения и собственные векторы, которые являются коэффициентами и направлениями соответственно. Собственное разложение можно рассчитать в NumPy с помощью функции eig, и можно провести тесты, чтобы подтвердить, что вектор действительно является собственным вектором матрицы. Исходная матрица также может быть восстановлена из собственных значений и собственных векторов. В этом разделе также кратко представлено разложение по сингулярным числам (SVD) как метод разложения матрицы на составные части для упрощения некоторых последующих матричных вычислений, а также его применения в различных областях, таких как сжатие, шумоподавление и сокращение данных.

  • 01:20:00 Обсуждается концепция разложения по сингулярным числам (SVD) и ее приложения в машинном обучении. SVD используется при расчете других операций с матрицами и методов сокращения данных в машинном обучении, таких как линейная регрессия с наименьшими квадратами, сжатие изображений и шумоподавление данных. Исходная матрица может быть восстановлена из элементов u, sigma и v, возвращенных из SVD. Популярным применением SVD является уменьшение размерности, когда данные могут быть уменьшены до меньшего подмножества функций, которые наиболее важны для задачи прогнозирования. Это было успешно применено в обработке естественного языка с использованием метода, называемого скрытым семантическим анализом или скрытым семантическим индексированием. Обсуждается усеченный класс SVD, который непосредственно реализует эту возможность, и его применение демонстрируется с использованием определенной матрицы, за которой следует версия преобразования.
Applied Linear Algebra for Machine Learning Engineers
Applied Linear Algebra for Machine Learning Engineers
  • 2022.03.26
  • www.youtube.com
This course will cover everything you need to know about linear algebra for your career as a machine learning engineer.
 

Полное введение в XGBoost для инженеров по машинному обучению


Полное введение в XGBoost для инженеров по машинному обучению

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

Инструктор подчеркивает, что XGBoost поддерживает несколько интерфейсов, включая реализации Python и scikit-learn. Они продолжают демонстрировать XGBoost, демонстрируя различные модули для загрузки данных и построения моделей.

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

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

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

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

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

Видео подробно объясняет концепцию повышения градиента, описывая его трехэтапный процесс. Первый шаг включает в себя итеративное добавление слабых обучающихся (например, деревьев решений) для минимизации потерь. Второй шаг — это последовательное добавление деревьев, а последний шаг направлен на уменьшение ошибки модели посредством дальнейших итераций. Чтобы продемонстрировать процесс, видео демонстрирует использование k-кратной перекрестной проверки для сегментации данных. Через XGBoost баллы получаются за каждую складку. Преподаватель выбирает деревья решений в качестве слабых учеников, обеспечивая малую глубину, чтобы избежать переобучения. Наконец, функция потерь определяется как мера того, насколько хорошо модель машинного обучения соответствует данным.

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

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

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

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

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

Спикер создает список для хранения количества итераций для примера и использует цикл for для проверки скорости выполнения модели на основе количества потоков. Они печатают скорость сборки для каждой итерации и отображают результаты, показывая, как скорость модели уменьшается по мере увеличения количества потоков. Затем докладчик обсуждает настройку гиперпараметров, которая включает настройку параметров модели для повышения ее производительности. Они исследуют параметры по умолчанию для XGBoost и scikit-learn и отмечают, что настройка гиперпараметров необходима для оптимизации производительности модели XGBoost. В видео объясняется, что гиперпараметры — это настройки, которые не извлекаются из данных, а задаются пользователем вручную. Настройка гиперпараметров включает в себя систематический поиск наилучшей комбинации значений параметров, обеспечивающих максимальную производительность модели.

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

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

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

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

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

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

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

  • 00:00:00 Преподаватель знакомит инженеров по машинному обучению с XGBoost. XGBoost — это библиотека машинного обучения с открытым исходным кодом, используемая для быстрого создания высокоточных моделей классификации и регрессии, что делает ее лучшим выбором для построения реальных моделей на основе высокоструктурированных наборов данных. Автором XGBoost является Тайки Чен, и это реализация деревьев решений градиентного повышения для скорости и производительности. Инструктор также подчеркивает, что XGBoost поддерживает несколько интерфейсов, таких как реализации Python и scikit-learn, и предоставляет демонстрацию XGBoost с использованием нескольких модулей для загрузки данных и построения моделей.

  • 00:05:00 Инструктор объясняет, как подготовить набор данных для обучения модели XGBoost, уделяя особое внимание разделению данных на наборы для обучения и тестирования. Целевая переменная идентифицируется как проблема бинарной классификации, и для модели XGBoost устанавливаются необходимые гиперпараметры. Модель обучается на данных обучения, а точность модели оценивается на данных тестирования с использованием оценки точности в качестве метрики. Преподаватель также дает обзор повышения градиента, концепции XGBoost и того, как он вписывается в более широкую категорию традиционных моделей машинного обучения.

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

  • 00:15:00 Видео объясняет, как создаются бинарные деревья решений. Этот процесс называется рекурсивным двоичным разделением и включает в себя жадную оценку всех входных переменных и точек разделения для минимизации функции стоимости, которая измеряет, насколько близки прогнозируемые значения к их соответствующим реальным значениям. Выбирается разбиение с наименьшей стоимостью, и полученные группы могут быть рекурсивно разделены. Алгоритм является жадным, который фокусируется на принятии наилучшего решения на каждом этапе. Предпочтительны деревья решений с меньшим количеством разбиений, поскольку их легче понять и с меньшей вероятностью они будут соответствовать данным. Чтобы предотвратить переобучение, алгоритм XGBoost позволяет использовать механизм остановки роста деревьев, например, ограничение максимальной глубины каждого дерева и удаление ненужных ветвей. В видео также рассказывается о кодировании меток и загрузке набора данных радужной оболочки глаза с помощью scikit-learn.

  • 00:20:00 В видео показан процесс кодирования целевой метки как числовой переменной с использованием метода кодировщика меток. После того, как данные были разделены на наборы данных для обучения и тестирования, классификатор XGBoost определяется и обучается на данных обучения. Затем модель используется для прогнозирования набора данных тестирования с точностью 90%. Затем вводится ансамблевое обучение как метод объединения нескольких моделей для повышения точности прогнозов, что позволяет использовать более эффективный алгоритм обучения. Видео подчеркивает важность выбора правильной модели для задач классификации или регрессии при попытке достичь наилучших результатов.

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

  • 00:30:00 Была представлена концепция повышения градиента и объяснен трехэтапный процесс. Первый шаг включает в себя добавление слабых учеников, таких как деревья решений, в итеративный процесс, чтобы минимизировать потери. Второй шаг — это последовательное добавление деревьев, а последний шаг направлен на уменьшение ошибки модели за счет большего количества итераций. Демонстрация включала использование k-кратной перекрестной проверки данных сегментов, а с помощью XGBoost баллы были получены для каждой кратности. Дерево решений использовалось как слабое обучающееся по выбору с малой глубиной, чтобы избежать переобучения. Наконец, функция потерь была определена как мера того, насколько хорошо модель машинного обучения соответствует данным конкретного явления.

  • 00:35:00 Объясняются основные этапы повышения градиента, в том числе оптимизация функции потерь, использование слабого ученика (обычно дерева решений) и объединение множества слабых учеников аддитивным способом посредством ансамблевого обучения. В этом разделе также рассматриваются различные практические аспекты использования XGBoost, такие как обработка пропущенных значений, сохранение моделей на диск и использование ранней остановки. В этом разделе используется подход, основанный на коде, с многочисленными демонстрациями, демонстрирующими различные варианты использования XGBoost. Кроме того, в этом разделе рассматривается важность очистки данных, в том числе способы замены отсутствующих значений вменением среднего значения.

  • 00:40:00 Спикер обсуждает важность очистки собственных данных и не полагаться на алгоритмы, которые сделают всю работу за вас. Они демонстрируют, как удаление пустых значений может повысить точность модели, и предостерегают от того, чтобы позволить алгоритмам обрабатывать пустые значения. Докладчик также знакомит с концепцией травления, которая представляет собой способ сохранения обученных моделей на диск для последующего использования, и демонстрирует, как использовать библиотеку pickle для сохранения и загрузки моделей в Python. Наконец, они показывают, как построить график важности каждого атрибута в наборе данных, используя функцию важности графика в XGBoost и matplotlib.

  • 00:45:00 Спикер обсуждает оценки важности функций, определенные XGBoost, и важность анализа и тестирования различных сценариев при построении моделей машинного обучения. Они используют пример набора данных Titanic и показывают, как добавление атрибута «пол» повышает точность модели, несмотря на то, что она имеет низкий рейтинг важности признаков. Докладчик подчеркивает важность тестирования различных сценариев, а не полагаться исключительно на оценки важности функций. Они также упоминают способность XGBoost оценивать и сообщать о производительности тестового набора во время обучения.

  • 00:50:00 В видео обсуждается, как контролировать производительность модели XGBoost во время обучения, указав оценочную метрику и передав массив пар x и y. Производительность модели на каждом оценочном наборе сохраняется и становится доступной после обучения. Используя эти показатели производительности, можно создать кривые обучения, чтобы лучше понять поведение модели и, возможно, прекратить обучение на раннем этапе, чтобы предотвратить переоснащение. В видео также рассказывается о ранней остановке, методе, при котором обучение останавливается после фиксированного количества эпох, если не наблюдается улучшения в оценке проверки.

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

  • 01:00:00 Докладчик создает список для хранения количества итераций для примера и использует цикл for для проверки скорости выполнения модели на основе количества потоков. Выводятся два результата: скорость сборки для каждой итерации и график, показывающий, как скорость модели уменьшается по мере увеличения количества потоков. Затем докладчик обсуждает настройку гиперпараметров, что означает передачу параметров в модель для повышения ее производительности. Они изучают параметры по умолчанию для xgboost и scikit-learn и отмечают, что настройка гиперпараметров может потребовать некоторой работы, чтобы снизить производительность модели. Наконец, они вникают в то, сколько деревьев или слабых учеников или оценщиков необходимо для настройки модели повышения градиента и насколько большим должно быть каждое дерево.

  • 01:05:00 В видео рассказывается о настройке гиперпараметров для оптимизации модели XGBoost. Они демонстрируют пример поиска по сетке параметра модели n-оценщика, который оценивает ряд значений для проверки оценок на данной модели. Они также охватывают различные методы подвыборки и то, как можно указать выборку строк во второй оболочке класса XGBoost. Кроме того, в видео подчеркивается важность настройки скорости обучения, которая выполняется методом проб и ошибок. Показано, что скорость обучения взаимодействует со многими другими аспектами процесса оптимизации, и меньшие скорости обучения потребуют большего количества эпох обучения. Наконец, диагностические графики полезны для изучения того, как скорость обучения влияет на скорость обучения и динамику обучения модели.

  • 01:10:00 Докладчик демонстрирует, как создать высокоэффективную модель XGBoost для набора данных Titanic. Докладчик использует pandas и обучающие тестовые библиотеки разделения для предварительной обработки данных и XGBoost для обучения модели. Рейтинг точности модели выше 80, что делает ее достойной. Ведущий также предостерегает от людей, которые загружают поддельные результаты в таблицу лидеров Kaggle, либо переобучая модель, либо подделывая результаты. Наконец, ведущий проходит код построчно, демонстрируя очистку данных, кодирование меток, обработку нулевых значений, определение осей X и Y и разделение данных для обучения и тестирования модели.

  • 01:15:00 Была вновь подчеркнута важность правильной обработки отсутствующих данных, поскольку прикладное машинное обучение в первую очередь касается данных, а не столько моделирования. Кроме того, были объяснены результаты мониторинга производительности модели, а ранняя остановка была представлена как подход к обучению сложных моделей машинного обучения во избежание переобучения. В этом разделе также обсуждалась настройка поддержки многопоточности для XGBoost и гиперпараметры по умолчанию для XGBoost и Scikit-learn.
A Complete Introduction to XGBoost for Machine Learning Engineers
A Complete Introduction to XGBoost for Machine Learning Engineers
  • 2022.03.28
  • www.youtube.com
This course will cover all the core aspects of the most well-known gradient booster used in the real-world.
 

Пример разработки функций в Python для инженеров по машинному обучению



Пример разработки функций в Python для инженеров по машинному обучению

Преподаватель начинает курс с представления концепции разработки признаков и ее решающей роли в извлечении ценности из огромного количества данных, генерируемых каждый день. Они подчеркивают важность разработки функций для максимизации ценности, извлеченной из беспорядочных данных. Предполагается, что учащиеся обладают базовыми знаниями Python, а также опытом использования NumPy, Pandas и Scikit-Learn.

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

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

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

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

Дальнейший анализ разведочных данных проводится по непрерывным признакам. Нечисловые функции, такие как имя и билет, удаляются, и печатаются первые пять строк набора данных. Данные описываются с помощью функций pandas, выявляющих пропущенные значения и бинарную целевую переменную под названием «Survived». Матрица корреляции анализируется для определения корреляций между признаками и их связи с «выжившим». Подчеркивается важность рассмотрения полного распределения данных, поскольку опора исключительно на средние или медианные значения может привести к неточным выводам. Графики и визуализации используются для изучения взаимосвязи между категориальными признаками и коэффициентом выживаемости, выявляя такие тенденции, как более высокий коэффициент выживаемости среди пассажиров первого класса и тех, у кого меньше членов семьи.

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

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

Преподаватель объясняет, что следующим шагом будет проектирование функций на основе информации, полученной в результате исследовательского анализа данных. Они начинают с создания новой функции под названием «Заголовок» из функции «Имя». Функция «Заголовок» извлекает титул из имени каждого пассажира (например, «мистер», «миссис», «мисс»), поскольку он может предоставить дополнительную информацию, связанную с социальным статусом и выживаемостью. Затем функция «Заголовок» для простоты сопоставляется с числовыми значениями.

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

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

После разработки функции «Секс» инструктор обращается к функции «Посадка», которая указывает порт посадки (C = Шербур, Q = Квинстаун, S = Саутгемптон). Однако ранее было определено, что функция «Посадка» является избыточной и не вносит существенного вклада в прогноз выживания. Поэтому он удаляется из набора данных.

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

На этом этапе инструктор подчеркивает важность предварительной обработки данных и подготовки функций для модели. Набор данных разделен на наборы для обучения и тестирования, чтобы точно оценить производительность модели. Отсутствующие значения в функции «Возраст» вводятся с использованием медианного возраста пассажиров, и все функции стандартизированы, чтобы иметь нулевое среднее значение и единичную дисперсию с использованием функций предварительной обработки Scikit-Learn.

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

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

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

  • 00:00:00 Преподаватель представляет курс по разработке признаков и его важности для извлечения ценности из огромного количества данных, генерируемых каждый день, предоставляя учащимся набор инструментов, необходимый им для извлечения максимальной пользы из этих беспорядочных данных. Предполагается, что учащиеся обладают некоторыми знаниями Python начального уровня, а также опытом использования NumPy, Pandas и Scikit-Learn. Преподаватель также проходит процесс построения модели машинного обучения на высоком уровне, подчеркивая важность исследовательского анализа данных и очистки данных, которые являются критическими этапами, на которых будет сосредоточено внимание исключительно в этом курсе. Учащиеся пройдут весь конвейер в последней главе, но основное внимание будет уделено разработке функций.

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

  • 00:10:00 В видео рассматриваются различные методы очистки и разработки функций, чтобы модели машинного обучения использовали только полезные сигналы. К ним относятся удаление выбросов, нормализация данных, преобразование искаженных данных, объединение функций в более полезные и создание категориальных переменных из непрерывных. Целью этих методов является получение признаков, которые точно фиксируют важные тенденции в данных и отбрасывают те, которые не являются репрезентативными. В видео также представлен набор данных «Титаник», который содержит информацию о пассажирах на борту корабля, включая их имя, возраст, класс, номер билета, номер каюты и порт посадки. Далее в видео исследуется распределение целевой переменной, а именно, выживает ли человек на корабле или нет.

  • 00:15:00 Спикер обсуждает проблему дисбаланса классов в машинном обучении, когда количество положительных случаев значительно меньше, чем отрицательное большинство случаев, что затрудняет обнаружение моделью сигнала в положительных случаях. Выступающий предлагает настроить модель, чтобы лучше уловить сигнал в обоих случаях, например, путем понижения дискретизации отрицательного класса. Однако, поскольку набор данных, используемый в примере, не слишком несбалансирован, докладчик переходит к изучению признаков данных, начиная с базового исследовательского анализа данных только по непрерывным признакам. Динамик отбрасывает нечисловые функции, такие как имя, билет, пол, каюта и посадка, и печатает первые пять строк очищенного набора данных. Затем спикер исследует распределение и корреляцию признаков и обнаруживает, что p-класс и справедливость имеют самую сильную корреляцию со столбцом выживания и, таким образом, могут быть полезны при прогнозировании.

  • 00:20:00 В видео проводится некоторый базовый пояснительный анализ данных о непрерывных характеристиках данных. Видео пропускает нечисловые функции, такие как имя и билет, и печатает первые 5 строк. Данные описываются с помощью встроенной функции pandas, и отмечается, что есть пропущенные значения и бинарная целевая переменная под названием «Survived». Матрица корреляции анализируется, и важно отметить, насколько каждая функция коррелирует с «выжившим» и любыми другими функциями. Утверждается, что сильная отрицательная корреляция может быть столь же полезной, как и положительная. Замечено, что характеристики «p-класс» и «Проезд за проезд» имеют самую сильную корреляцию с «Выжившими», но «Проезд за проезд» и «p-класс» имеют высокую корреляцию между признаками, что может привести к путанице в модели.

  • 00:25:00 Преподаватель обсуждает метод определения признаков, которые могут быть полезными предикторами для целевой переменной. Этот метод включает в себя группировку по целевой переменной и анализ распределения каждой характеристики для людей, которые выжили, по сравнению с людьми, которые не выжили, а также выполнение t-теста для определения статистической значимости. Преподаватель выделяет две функции, справедливую и классную, которые выделяются как потенциально хорошие индикаторы выживания, но предостерегает о влиянии корреляции на интерпретацию. Преподаватель также обсуждает отсутствующие значения для функции возраста и использует группировку, чтобы определить, случайно она отсутствует или нет. Кроме того, инструктор объясняет, как строить непрерывные объекты, чтобы визуализировать их распределения и взаимосвязи с целевой переменной.

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

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

  • 00:40:00 Спикер обсуждает процесс изучения и разработки фич для машинного обучения. Исследуемые функции включают кабину, билет и имя. Переменная кабины используется для создания индикаторной переменной наличия кабины, которая, как предполагается, влияет на выживаемость. Переменная билета назначается случайным образом и будет удалена как функция. Переменная имени исследуется на наличие титулов, которые могут представлять социальный статус и коррелировать с показателями выживаемости. Сводная таблица используется для изучения показателей выживаемости каждого титула, при этом исключением является «мастерский» титул для мальчиков. Наконец, спикер обсуждает построение категориальных признаков, чтобы исследовать взаимосвязь между различными уровнями этих признаков и коэффициентом выживаемости.

  • 00:45:00 Дальнейшее изучение функции показало, что название, индикатор каюты и пол имеют сильную корреляцию с выживанием, в то время как функция отправления не дает много информации и является избыточной. Используя сводную таблицу, было обнаружено, что больше людей, которые сели в Шербуре, имели каюты по сравнению с теми, кто сели в Квинстауне или Саутгемптоне, что объясняет более высокую выживаемость в Шербуре. Наконец, количество ближайших членов семьи на борту было объединено в одну характеристику, и из-за их корреляции было предложено использовать либо пассажирский класс, либо тариф.

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

  • 00:55:00 Ведущий обсуждает выявление выбросов с использованием различных порогов. Определяется функция обнаружения выбросов, а пороговые значения для каждой функции устанавливаются и корректируются на основе распределения значений. Максимальные значения для братьев и сестер, супругов, родителей, детей и возраста являются разумными, поэтому нет необходимости ограничивать их, но справедливая функция ограничена 99-м процентилем. Признаки возраста и светлоты преобразуются с использованием метода «вырезки», чтобы установить верхние границы признаков. Затем докладчик переходит к обсуждению искаженных данных и связанных с ними потенциальных проблем, включая модель, преследующую длинный хвост. Ведущий визуализирует распределение возрастных и справедливых непрерывных функций и преобразует их, чтобы создать более компактное и простое для понимания распределение.

  • 01:00:00 В видео рассматривается процесс преобразования данных, чтобы сделать их более удобными и компактными, чтобы улучшить модели машинного обучения. Конкретным используемым преобразованием является преобразование степени Бокса-Кокса, где показатель степени применяется к каждой точке данных в определенном признаке. Видео объясняет процесс тестирования преобразования с различными показателями и использованием таких критериев, как графики QQ и гистограммы, чтобы определить, какое преобразование дало наилучшие данные. Конечным результатом является более компактное распределение интересующей функции, которое не будет отвлекать модель машинного обучения длинными хвостами и выбросами. Затем преобразованные данные сохраняются как функция во фрейме данных для будущего использования.

  • 01:05:00 В видео показано, как создать новый объект из существующих текстовых данных. После анализа признака имени спикер показывает, как разобрать титул человека и создать новый признак титула. Обнаружено, что функция заголовка является сильным индикатором того, выжил ли кто-то, и добавляется к данным при подготовке к моделированию. В видео также рассказывается о создании бинарного индикатора для функции кабины, указывающего, есть ли у пассажира кабина или нет. Наконец, спикер демонстрирует, как объединить существующие функции, такие как количество братьев и сестер, супругов, родителей и детей на борту, в новую функцию, которая указывает количество ближайших членов семьи на борту, подготавливая данные для моделирования.

  • 01:10:00 Ведущий обсуждает важность преобразования категориальных признаков в числовые для моделей машинного обучения. Они объясняют, что это необходимо, поскольку модели могут понимать только числовые значения, а не строковые значения, и приводят пример кодирования меток из второго обучающего пакета. Затем они проходят цикл, чтобы применить это преобразование к нечисловым функциям в наборе данных Titanic. Наконец, докладчик обсуждает важность разделения данных на обучающие, проверочные и тестовые наборы для оценки производительности модели машинного обучения на невидимых данных. Они демонстрируют, как использовать разделение тестов обучения и обучения циклов, чтобы разделить данные на эти наборы.

  • 01:15:00 В видео рассказывается, как использовать метод разбиения обучающего теста для разделения данных на обучающие, проверочные и тестовые наборы. Метод может обрабатывать только разделение одного набора данных на два, поэтому для получения трех отдельных наборов данных необходимо два прохода метода. В видео также обсуждается важность стандартизации данных или преобразования их в числа, которые представляют, на сколько стандартных отклонений выше или ниже среднего значение, чтобы нормализовать признаки, находящиеся в разных масштабах. Стандартный скаляр импортируется и используется для масштабирования данных с примерами, иллюстрирующими процесс.

  • 01:20:00 Инструктор обсуждает важность масштабирования данных для некоторых моделей машинного обучения и сравнивает эффективность четырех различных наборов функций при прогнозировании выживания на «Титанике». Хотя некоторые алгоритмы, такие как случайный лес, не обязательно требуют масштабированных данных, масштабирование может помочь другим алгоритмам обучаться быстрее и даже работать лучше. Кроме того, инструктор определяет четыре набора функций; исходные функции, очищенные исходные функции, новые функции плюс очищенные исходные функции и уменьшенные функции, чтобы построить модель для каждой из них и сравнить производительность, чтобы понять ценность очистки, преобразования и создания функций. Наконец, инструктор записывает данные в CSV-файлы, чтобы убедиться, что одни и те же примеры используются в наборах для обучения, проверки и тестирования.

  • 01:25:00 Обсуждается процесс подгонки модели к необработанным исходным функциям с использованием таких пакетов, как joblib, matplotlib, seaborn, numpy, pandas, классификатор случайного леса и cv поиска по сетке. Корреляции между функциями визуализируются с помощью тепловой карты, созданной из матрицы корреляции, и обнаружено, что класс пассажира и салон имеют высокую корреляцию 0,7. Поиск по сетке cv используется для поиска лучших гиперпараметров модели, таких как количество оценок и максимальная глубина деревьев. Обнаружено, что лучшая модель имеет около 512 оценок с максимальной глубиной 8, в результате чего средний балл составляет около 84,5 процента, что позволяет перейти к следующему набору данных.

  • 01:30:00 В видео рассматривается важность функций в модели случайного леса и преимущества использования cv поиска по сетке. Важность характеристик для модели показывает, что пол является наиболее важной характеристикой, а возраст важнее, чем пассажирский класс, который ранее считался сильным показателем выживания. Однако класс пассажира может быть тесно связан с другими характеристиками, такими как наличие у кого-то салона или стоимость проезда, что приводит к путанице в модели относительно того, что на самом деле определяет взаимосвязь с целевой переменной. Как только модель соответствует лучшим настройкам гиперпараметров на 100% обучающих данных, она готова к оценке на проверочном наборе. Затем модель подгоняется к чистым функциям, чтобы определить, существенно ли отсутствующие значения и выбросы повлияли на ее способность улавливать основные тенденции. Лучшие настройки гиперпараметров для этой модели проще, чем для модели с необработанными функциями, а важность функций почти идентична предыдущей модели. Наконец, модель подходит для всех функций, включая преобразованные функции, чтобы увидеть, какую ценность они предоставляют в дополнение к простым функциям.

  • 01:35:00 В видео показан процесс оценки лучших моделей, созданных каждым набором функций в наборе проверочных данных, чтобы выбрать лучшую модель на основе производительности. В видео обсуждается важность учета задержки модели при выборе лучшей модели, а также упоминаются пакеты, используемые для расчета точности, прецизионности и полноты. Ранее сохраненные модели считываются с помощью цикла и сохраняются в виде словаря с именем модели в качестве ключа и объектом модели в качестве значения. Лучшая модель выбирается на основе производительности проверочного набора, а ее производительность на контрольном тестовом наборе оценивается для беспристрастного представления ее производительности.

  • 01:40:00 Ведущий рассказывает, как загрузить модели, хранящиеся в словаре моделей, и оценить их производительность с помощью функции «оценить модель». Докладчик объясняет, что в этом тематическом исследовании наиболее эффективной моделью в проверочном наборе является модель, построенная на всех функциях, а модель, построенная на уменьшенных функциях, является самой простой с наименьшей задержкой. Ведущий подчеркивает компромиссы между точностью и отзывом в зависимости от проблемы, которую они решают. Наконец, докладчик заявляет, что, поскольку у них нет требований ко времени прогнозирования, они развернут модель, основанную на всех функциях, и оценят ее на тестовом наборе.

  • 01:45:00 Спикер объясняет, что тестовый набор не использовался для выбора модели и является непредвзятым способом оценить производительность окончательно выбранной модели. Выбранная модель была построена на четырех различных функциях, с 64 оценщиками и максимальной глубиной в восемь. Точность была тщательно проверена и оценена на невидимых данных, что дало точность 83,7 процента при перекрестной проверке, 83 процента на проверочном наборе и 81 процент на тестовом наборе. Обладая этой информацией, спикер уверенно предлагает эту модель как лучшую модель для прогнозирования того, выживут ли люди на борту «Титаника» или нет. Докладчик также отмечает, что навыки, полученные в ходе этого курса, можно обобщить на любой новый набор функций, чтобы извлечь все до последней унции ценности для создания самой мощной модели машинного обучения.
Feature Engineering Case Study in Python for Machine Learning Engineers
Feature Engineering Case Study in Python for Machine Learning Engineers
  • 2022.04.06
  • www.youtube.com
Another free course to help you become a machine learning engineer in the real-world.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikb...
Причина обращения: