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

Статья будет охватывать следующие темы:

  1. Категориальное кодирование признаков
  2. Логистическая функция
  3. Что такое логистическая регрессия
  4. Градиентный спуск и стохастический градиентный спуск
  5. Реализация логистической регрессии
  6. Кликайте по прогнозу с помощью логистической регрессии
  7. Логистическая регрессия с регуляризацией L1 и L2
  8. Логистическая регрессия для выбора признаков

1. Преобразование категориальных признаков в числовые — одно горячее кодирование и порядковое кодирование.

Самое простое решение, которое мы можем придумать с точки зрения преобразования категориального признака с k возможными значениями, — это сопоставить его с числовым признаком со значениями от 1 до k. Например, [Технологии, Мода, Мода, Спорт, Технологии, Технологии, Спорт] становится [1,2,2,3,1,1]. Однако это наложит порядковые характеристики, например, Спорт важнее, чем Технологии.

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

Для этого есть метод OneHotEncoder, но здесь давайте рассмотрим другой модуль, DictVertorizer, который также обеспечивает эффективное преобразование. Он преобразует диктиноарные объекты в горячие закодированные векторы.

Мы можем использовать порядковое кодирование, чтобы использовать порядковые или ранжированные знания в нашем обучении, например, большое, среднее и маленькое становятся 3, 2, 1 соответственно. Мы можем легко реализовать порядковое кодирование с помощью панд, например:

2. Классификация данных с помощью логистической регрессии

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

Начало работы с логистической функцией. Начнем с логистической функции (которая чаще называется сигмовидной функцией). В основном он отображает вход на выход со значением от 0 до 1 и определяется следующим образом:

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

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

Учитывая выборку данных x с n функциями, x₁, x₂, x₃ … xₙ и весами (называемыми коэффициентами) модели w, z выражается следующим образом:

Также иногда модель поставляется с перехватом (также называемым смещением).

Что касается выхода y(z) в диапазоне от 0 до 1, в алгоритме он становится вероятностью того, что целью является 1 или положительный класс:

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

Модель логистической регрессии или, более конкретно, ее весовой вектор w изучается из обучающих данных с целью прогнозирования положительной выборки как можно ближе к 1 и прогнозирования отрицательной выборки как можно ближе к 0. На математическом языке веса обучаются так, чтобы минимизировать стоимость, определяемую как среднеквадратическая ошибка (MSE), которая измеряет среднее значение квадратов разницы между правдой и предсказанием. функция стоимости J(w) относительно оптимизируемых весов выражается следующим образом:

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

Примеры выпуклых и невыпуклых функций показаны соответственно ниже:

Чтобы преодолеть это, функция затрат на практике определяется следующим образом:

Рассмотрим подробнее стоимость одной обучающей выборки:

Когда основная истина y (i) = 1, если модель предсказывает правильно с полной уверенностью, стоимость выборки j равна 0; стоимость j увеличивается, когда прогнозируемая вероятность y^ уменьшается. если модель неверно предсказывает, что у положительного класса нет шансов, цена бесконечно высока.

Обучение модели логистической регрессии

Теперь вопрос в том, как мы можем получить оптимальное значение w, при котором J(w) минимизируется. Мы можем сделать это, используя градиентный спуск.

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

Здесь левый w — весовой вектор после шага обучения, а правый w — вектор перед перемещением, η — скорость обучения, а дельта w — производная первого порядка, градиент.

начнем с производной функции стоимости J(w) по w.

  1. Сначала вычислим производную y^(x) по w.

2. Затем вычислите производную стоимости выборки J(w) следующим образом:

3. Наконец, мы вычисляем полную стоимость по m образцам следующим образом:

4. Затем мы обобщаем его на Δw:

5. В сочетании с предыдущими производными веса могут быть обновлены следующим образом: