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

Методы классификации - важная часть приложений машинного обучения и интеллектуального анализа данных. Примерно 70% проблем Data Science - это проблемы классификации. Существует множество проблем классификации, но логистическая регрессия - очень распространенный и полезный метод регрессии для решения проблемы двоичной классификации. Другой категорией классификации является полиномиальная классификация, которая решает проблемы, когда в целевой переменной присутствует несколько классов. Например, набор данных IRIS содержит различные известные примеры многоклассовой классификации. Другие примеры - классификация категорий статей / блогов / документов.

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

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

В этом руководстве вы изучите следующие вещи в логистической регрессии:

  • Введение в логистическую регрессию
  • Линейная регрессия против. Логистическая регрессия
  • Оценка максимального правдоподобия Vs. Обычный метод наименьших квадратов
  • Как работает логистическая регрессия?
  • Построение модели в Scikit-learn
  • Оценка модели с использованием матрицы неточностей и кривой ROC.
  • Преимущества и недостатки логистической регрессии

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

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

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

Уравнение линейной регрессии:

Где y - зависимая переменная, а x1, x2… и Xn - независимые переменные.

Сигмовидная функция:

Примените сигмовидную функцию к линейной регрессии:

Свойства логистической регрессии:

  • Зависимая переменная в логистической регрессии соответствует распределению Бернулли.
  • Оценка производится по максимальному правдоподобию.
  • Нет квадрата R, соответствие модели рассчитывается с помощью Concordance, KS-Statistics.

Линейная регрессия против. Логистическая регрессия

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

Оценка максимального правдоподобия Vs. Метод наименьших квадратов

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

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

Сигмовидная функция

Сигмоидальная функция, также называемая логистической функцией, дает S-образную кривую, которая может принимать любое действительное число и отображать его в значение от 0 до 1. Если кривая переходит в положительную бесконечность, прогнозируемый y станет 1, а если кривая уходит в отрицательную бесконечность, прогнозируемый y станет 0. Если выход сигмовидной функции больше 0,5, мы можем классифицировать результат как 1 или ДА, а если он меньше 0,5, мы можем классифицировать его как 0 или НЕТ. Выход не может. Например: Если выход равен 0,75, мы можем сказать с точки зрения вероятности следующим образом: Вероятность того, что пациент будет болеть раком, составляет 75 процентов.

Типы логистической регрессии

Типы логистической регрессии:

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

Построение модели в Scikit-learn

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

Здесь вы собираетесь предсказать диабет с помощью классификатора логистической регрессии.

Давайте сначала загрузим требуемый набор данных Pima Indian Diabetes, используя функцию чтения CSV-файла pandas. Вы можете скачать данные по следующей ссылке:

Загрузка данных

#import pandas
import pandas as pd
col_names = ['pregnant', 'glucose', 'bp', 'skin', 'insulin', 'bmi', 'pedigree', 'age', 'label']
# load dataset
pima = pd.read_csv("pima-indians-diabetes.csv", header=None, names=col_names)
pima.head()

Выбор функции

Здесь вам нужно разделить данные столбцы на два типа переменных: зависимые (или целевая переменная) и независимые переменные (или функциональные переменные).

#split dataset in features and target variable
feature_cols = ['pregnant', 'insulin', 'bmi', 'age','glucose','bp','pedigree']
X = pima[feature_cols] # Features
y = pima.label # Target variable

Разделение данных

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

Давайте разделим набор данных с помощью функции train_test_split (). вам необходимо передать в основном 3 параметра: target и test_set size. Кроме того, вы можете использовать random_state для случайного выбора записей.

# split X and y into training and testing sets
from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)

Здесь набор данных разбит на две части в соотношении 75:25. Это означает, что 75% данных будут использоваться для обучения модели и 25% для тестирования модели.

Разработка модели и прогноз

Сначала импортируйте модуль логистической регрессии и создайте объект классификатора логистической регрессии с помощью функции LogisticRegression ().

Затем поместите свою модель в набор поездов с помощью fit () и выполните прогнозирование на тестовом наборе с помощью predic ().

# import the class
from sklearn.linear_model import LogisticRegression
# instantiate the model (using the default parameters)
logreg = LogisticRegression()
# fit the model with data
logreg.fit(X_train,y_train)

​# predict 
y_pred=logreg.predict(X_test)

Оценка модели с использованием матрицы неточностей

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

In [9]:

# import the metrics class
from sklearn import metrics
cnf_matrix = metrics.confusion_matrix(y_test, y_pred)
cnf_matrix

Output:
array([[119,  11],
       [ 26,  36]])

Здесь вы можете увидеть матрицу путаницы в виде объекта массива. Размер этой матрицы составляет 2 * 2, потому что эта модель является бинарной классификацией. у вас есть два класса 0 и 1. Диагональные значения представляют собой точные прогнозы, а недиагональные элементы - неточные прогнозы. На выходе 119 и 36 - фактические прогнозы, а 26 и 11 - неточные прогнозы.

Визуализация матрицы путаницы с использованием тепловой карты

Давайте визуализируем результаты модели в виде матрицы путаницы, используя matplotlib и seaborn.

Здесь вы визуализируете матрицу путаницы с помощью тепловой карты.

# import required modules
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

class_names=[0,1] # name  of classes
fig, ax = plt.subplots()
tick_marks = np.arange(len(class_names))
plt.xticks(tick_marks, class_names)
plt.yticks(tick_marks, class_names)
# create heatmap
sns.heatmap(pd.DataFrame(cnf_matrix), annot=True, cmap="YlGnBu" ,fmt='g')
ax.xaxis.set_label_position("top")
plt.tight_layout()
plt.title('Confusion matrix', y=1.1)
plt.ylabel('Actual label')
plt.xlabel('Predicted label')

Метрики оценки матрицы неточностей

Давайте оценим модель, используя такие метрики оценки модели, как точность, точность и отзывчивость.

print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
print("Precision:",metrics.precision_score(y_test, y_pred))
print("Recall:",metrics.recall_score(y_test, y_pred))

Output:
Accuracy: 0.8072916666666666
Precision: 0.7659574468085106
Recall: 0.5806451612903226

Итак, у вас классификационный рейтинг 80%, что считается хорошей точностью.

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

Напомним: если в наборе тестов есть пациенты, которые действительно страдают диабетом, и ваша модель логистической регрессии способна идентифицировать его в 58% случаев.

Кривая ROC

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

y_pred_proba = logreg.predict_proba(X_test)[::,1]
fpr, tpr, _ = metrics.roc_curve(y_test,  y_pred_proba)
auc = metrics.roc_auc_score(y_test, y_pred_proba)
plt.plot(fpr,tpr,label="data 1, auc="+str(auc))
plt.legend(loc=4)
plt.show()

Оценка AUC для этого случая составляет 0,86. Оценка AUC 1 представляет собой идеальный классификатор, а 0,5 - бесполезный классификатор.

Преимущества

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

Недостатки

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

Заключение

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

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

Первоначально опубликовано на https://www.datacamp.com/community/tutorials/understanding-logistic-regression-python

Хотите изучать науку о данных, загляните на DataCamp.

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

Свяжитесь со мной в Linkedin: https://www.linkedin.com/in/avinash-navlani/