Глубокое понимание логистической регрессии, включая математику, участвующую в ней.

Привет ребята!!!

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

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

Введение в классификацию

Классификация - это подкатегория контролируемого обучения, где процесс состоит в категоризации заданного набора данных по классам. Такие классы, как Хорошо / Плохо (отзывы), Спам / не спам (электронные письма) или положительный / отрицательный / нейтральный (твиты). Это может быть выполнено как для структурированных, так и для неструктурированных данных. Процесс начинается с прогнозирования класса заданных точек данных. Классы часто называют целевыми, метками или категориями.

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

Есть два основных типа проблем классификации:

  • Двоичная классификация. Типичным примером является обнаружение спама в электронной почте, при котором каждое электронное письмо является спамом → 1 спам; или не → 0.
  • Мультиклассовая классификация: как распознавание рукописных символов (классы от 0 до 9).

Давайте попробуем разобраться в этом на примере.

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

Реальное применение классификации:

  • Распознавание речи
  • Классификация спама
  • Распознавание лиц
  • Распознавание почерка

Типы учащихся в классификации

  • Ленивые учащиеся. Ленивые учащиеся просто сохраняют данные обучения и ждут, пока не появятся данные тестирования. Классификация выполняется с использованием наиболее связанных данных в сохраненных обучающих данных. У них больше времени на предсказания, чем у активных учеников. Например, k-ближайший сосед, рассуждение на основе случая.
  • Активные ученики. Активные ученики создают модель классификации на основе данных обучения, прежде чем получать данные для прогнозов. Он должен иметь возможность придерживаться единственной гипотезы, которая будет работать для всего пространства. Из-за этого они тратят много времени на обучение и меньше времени на прогнозы. Например, дерево решений, наивный байесовский метод, искусственные нейронные сети.

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

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

Допустим, мы создаем идеально сбалансированный набор данных, содержащий список клиентов и метку, позволяющую определить, совершил ли покупатель покупку. В наборе данных 20 клиентов; 10 клиентов в возрасте от 10 до 19 лет, которые совершили покупку, и 10 клиентов в возрасте от 20 до 29 лет, которые не совершали покупки. «Приобретено» представляет собой двоичную метку, обозначаемую 0 и 1, где 0 означает «покупатель не совершал покупку», а 1 означает «покупатель совершил покупку».

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

Первая проблема с линейной регрессией: она дает непрерывные ответы, тогда как нам нужно всего два ответа: «0» или «1». Поскольку это всего лишь двоичная классификация, мы можем решить эту проблему, заявив, что - если Y больше 0,5 (над зеленой линией), спрогнозируйте, что этот покупатель будет делать покупки, в противном случае покупок не будет. Но это не работает в классификаторе с несколькими классами.

Вторая проблема «Эффект выбросов»:

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

Нашей модели линейной регрессии удается вписаться в новую линию, но если вы присмотритесь, можно увидеть, что некоторые результаты для клиентов (в возрасте от 20 до 22 лет) предсказываются неверно. Поскольку линейная регрессия пытается соответствовать линии регрессии, минимизируя ошибку прогнозирования, чтобы минимизировать расстояние между прогнозируемым и фактическим значением для клиентов в возрасте от 60 до 70 лет. Это может быть решено только с помощью логистической регрессии.

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

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

Бинарная логистическая регрессия

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

Прогнозирование:

Давайте воспользуемся тем же уравнением множественной линейной регрессии из нашего руководства по линейной регрессии.

Функция затрат

Мы не будем использовать ту же функцию стоимости MSE, что и для линейной регрессии. Потому что здесь функция прогнозирования нелинейна из-за преобразования сигмоида. Таким образом, здесь MSE приведет к множеству локальных минимумов, а градиентный спуск может не найти оптимальный глобальный минимум.
Вместо среднеквадратичной ошибки мы используем функцию стоимости, называемую кросс-энтропией, также известную как лог-потеря. Потери кросс-энтропии можно разделить на две отдельные функции затрат: одну для y = 1 и одну для y = 0.

Преимущества логарифмирования проявляются, когда вы смотрите на графики функции затрат для y = 1 и y = 0. Эти плавные монотонные функции (всегда увеличивающие или всегда уменьшающие) позволяют легко вычислить градиент и минимизировать затраты.

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

Вышеупомянутые функции сжаты в одну

Градиентный спуск

Чтобы свести к минимуму наши затраты, мы используем градиентный спуск, как и раньше, в линейной регрессии. Существуют и другие, более сложные алгоритмы оптимизации, такие как сопряженный градиент-подобный BFGS (пакетный градиентный спуск), но вам не о чем беспокоиться. Библиотеки машинного обучения, такие как Scikit-learn, скрывают свои реализации, чтобы вы могли сосредоточиться на более интересных вещах!

Поскольку эта лежащая в основе технология аналогична линейной «регрессии», этот алгоритм также называется логистической «регрессией».

Мультиклассовая логистическая регрессия

Вместо y = 0,1 мы расширим наше определение так, чтобы y = 0,1… n. Мы повторно запускаем двоичную классификацию несколько раз, по одному для каждого класса.

Процедура

  • Разделите задачу на n + 1 задачу двоичной классификации (+1, потому что индекс начинается с 0?).
  • Предскажите вероятность того, что наблюдения относятся к этому единственному классу.
  • прогноз = макс (вероятность классов)

Для каждой подзадачи мы выбираем один класс (ДА) и объединяем все остальные во второй класс (НЕТ). Затем мы берем класс с самым высоким прогнозируемым значением. Здесь мы используем функцию SOFTMAX для этого.

Регрессия SoftMax - это форма логистической регрессии, которая нормализует входное значение в вектор значений, который соответствует распределению вероятностей, общая сумма которого составляет до 1. Выходные значения находятся в диапазоне [0,1] что приятно, потому что мы можем избежать двоичной классификации и разместить столько классов или измерений в нашей модели нейронной сети. Эта функция предполагает использование искусственной нейронной сети. Вот почему SoftMax иногда называют полиномиальной логистической регрессией. Стандартная (единичная) функция SoftMax определяется по формуле:

Другими словами: мы применяем стандартную экспоненциальную функцию к каждому элементу zi входного вектора z и нормализуем эти значения путем деления на сумму всех этих экспонент; эта нормализация гарантирует, что сумма компонентов выходного вектора σ (z) равна 1.
Эта функция очень глубока. Поскольку у нас есть библиотека машинного обучения scikit-learn, чтобы сделать это простыми шагами.

#same code for all types of classifier
from sklearn.linear_model import LogisticRegression
#making a model 
logreg = LogisticRegression()
#training our model
logreg.fit(x_train, y_train)
#predict output of model
test_y_hat = logreg.predict(x_test)
#test the model
print("Mean absolute error: %.2f" % np.mean(np.absolute(test_y_hat - y_test)))
print("Residual sum of squares (MSE): %.2f" % np.mean((test_y_hat - y_test) ** 2))
from sklearn.metrics import accuracy_score
accuracy_score(y_test, test_y_hat)

Матрица неточностей - это таблица, которая часто используется для описания эффективности модели классификации (или «классификатора») для набора тестовых данных, для которых истинные значения известен. Сама матрица неточностей относительно проста для понимания, но связанная с ней терминология может сбивать с толку. Проще говоря, когда одинаковые типы значений совпадают, то есть TP и TN являются правильно предсказанными значениями.

#plotting confusion metrics 
from sklearn import metrics
cnf_matrix = metrics.confusion_matrix(y_test, test_y_hat)
sns.heatmap(cnf_matrix, annot=True)
plt.title("Confusion Matrix")
plt.show()

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