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

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

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

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

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

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

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

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281880/image1_ga8gze.png

Где, y зависит от переменной, а x1, x2 … и Xn являются объясняющими переменными.

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

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281880/image2_kwxquj.png

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

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281880/image3_qldafx.png

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

Переменная в логистической регрессии следует биномиальному распределению .

Оценка выполняется по максимальной вероятности.

Нет R-квадрат, фитнес модели вычисляется через Конкорданс, KS-статистика.

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281070/linear_vs_logistic_regression_edxw03.png

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

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

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

МЛЭ может быть методом максимизации “вероятности”, в то время как OLS может быть методом аппроксимации с минимизацией расстояния. Функция максимизации вероятности определяет параметры, которые, предположительно, обеспечивают наблюдаемые данные. С статистической точки зрения, МЛЭ задает среднее значение и дисперсию в качестве параметров при определении точных параметрических значений для данной модели. Этот набор параметров часто используется для прогнозирования информации, необходимой при гауссовом распределении .

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

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

Сигмоидальная функция, также называемая логистической функцией, дает кривую в форме ‘S’, которая возьмет любое действительное число и отобразит его в значение между 0 и 1. Если кривая переходит в положительную бесконечность, y предсказанное станет 1, а если кривая переходит в отрицательную бесконечность, y предсказанное станет 0. Если выход сигмоидальной функции равен 0.5, то мы классифицируем результат как 1 или YES, а если это всего лишь 0.5, то мы классифицируем его как 0 или NO. Пример outputcannotFor: Если результат равен 0.75, то с точки зрения вероятности мы скажем так: есть 75-процентная вероятность того, что пациент страдает от рака.

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281880/image4_gw5mmv.png

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281070/sigmoid2_lv4c7i.png

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

Двоичная логистическая регрессия: Целевая переменная имеет только два возможных исхода, таких как Спам или Не Спам, Рак или Нет рака.

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

Обычная логистическая регрессия: целевая переменная имеет три или более категорий, таких как ресторан или рейтинг продукта от 1 до 5 .

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

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

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

Сначала загрузим указанный набор данных Pima Indian Diabetes с помощью функции чтения CSV панд. Вы загрузите данные по следующей ссылке: https://www.kaggle.com/uciml/pima-indians-diabetes-database.

Загрузка #импорт панд

импортировать панд в виде pd

col_names = [“беременна”, “глюкоза”, “bp”, “кожа”, “инсулин”, “bmi”, “родословная”, “возраст”, “ярлык”]

# набор данных загрузки

pima = pd.read_csv(“pima-indians-diabetes.csv”, header=None, names=col_names)

pima.head()Data

http://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1534281070/Screen_Shot_2018-08-14_at_5.06.08_PM_ykb1jt.png

Выборочная функция

Здесь вы хотите разделить данные столбцы на два типа переменных depend(или target variable) и independent variable(или feature variables).

#split набор данных в свойствах и целевая переменная

feature_cols = [‘беременная’, ‘инсулин’, ‘бми’, ‘возраст’, ‘глюкоза’, ‘бп’, ‘родословная’]

X = pima[feature_cols] # Features

y = pima.label # Целевая переменная

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

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

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

# разделите X и y на обучающие и тестовые наборы.

из sklearn.cross_validation импорт train_test_split

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=0)

/home/admin/.local/lib/python3.5/site-пакеты/sklearn/cross_validation.py:41: DeprecationWarning: В версии 0.18 этот модуль был устарел в пользу модуля выбора model_selection, в который переносятся все рефактурированные классы и функции. Также обратите внимание, что интерфейс новых CV итераторов отличается от интерфейса этого модуля. Этот модуль будет удален в версии 0.20.

“Этот модуль будет удален в 0.20.”, DeprecationWarning).

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

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

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

Затем, с помощью функции fit(), подгоните свою модель под игру и выполните предсказание на тестовом множестве с помощью функции preict().

# импортируйте категорию

от sklearn.linear_model импорт ЛогистикаРегрессия

# инстанцировать модель (используя параметры по умолчанию).

logreg = LogisticRegression()

# подогнать модель под данные

logreg.fit(X_train,y_train)

#

y_pred=logreg.predict(X_test)

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

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

# импорт класса метрик

показатели импорта sklearn

cnf_matrix = metrics.confusion_matrix(y_test, y_pred)

кнф_матрица

array([[119, 11],

[ 26, 36]])

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

Визуализация путаницы с помощью Heatmap

Представим результаты модели в виде матрицы путаницы с помощью matplotlib и seaborn.

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

# импортируем необходимые модули

импорт онемелый как пшт

импорт matplotlib.pyplot как plt

импорт морской флот как сыновья

%матплотлиб в линии

class_names=[0,1] # name of class

fig, ax = plt.subplots()

tick_marks = np.arange(len(class_names))

plt.xticks(tick_marks, class_names)

plt.yticks(tick_marks, class_names)

# создать тепловую карту

sns.heatmap(pd.DataFrame(cnf_matrix), annot=True, cmap=”YlGnBu” , fmt=’g’)

ax.xaxis.set_label_position(“top”)

plt.tight_layout()

plt.title(‘Путаница’, y=1.1)

plt.ylabel(‘Actual label’)

plt.xlabel(‘Predicted label’)

Текст(0.5.257.44, “Предсказанная этикетка”)

Метрики оценки путаных матриц

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

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))

Точность: 0.807291666666666.

Точность: 0.7659574468085106

Вспомни: 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=”данные 1, auc=”+str(auc)))

plt.legend(loc=4)

plt.show()

Счет AUC по этому делу – 0,86. AUC оценка 1 представляет идеальный классификатор, и 0,5 представляет ничего не стоящий классификатор.

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

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

Недостатки

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