Алгоритмы машинного обучения (1): прогнозирование классификации на основе логистической регрессии
1 Введение и применение логистической регрессии
1.1 Введение в логистическую регрессию
Хотя в логистической регрессии (сокращенно LR) есть слово «регрессия», логистическая регрессия на самом деле являетсяКлассификациямодели и широко используется в различных областях. Хотя глубокое обучение более популярно, чем эти традиционные методы, эти традиционные методы по-прежнему широко используются в различных областях из-за их уникальных преимуществ.
Для логистической регрессии двумя наиболее важными моментами являются еепростая модельиМодель хорошо интерпретируется.
Преимущества и недостатки моделей логистической регрессии:
- Преимущества: простота реализации, простота понимания и реализации, низкие вычислительные затраты, высокая скорость и небольшие ресурсы хранения.
- Недостатки: легко недообучить, точность классификации может быть невысокой
1.1 Применение логистической регрессии
Модели логистической регрессии широко используются в различных областях, включая машинное обучение, большинство областей медицины и социальных наук. Например, шкала тяжести травм и повреждений (TRISS), первоначально разработанная Boyd et al., широко используется для прогнозирования смертности пациентов с травмами с использованием логистической регрессии, основанной на наблюдаемых характеристиках пациентов (возраст, пол, индекс массы тела, различные показатели крови). результаты анализов и др.) анализ для прогнозирования риска развития конкретного заболевания (например, сахарного диабета, ишемической болезни сердца). Модели логистической регрессии также используются для прогнозирования вероятности отказа системы или продукта в данном процессе. Также используется в маркетинговых приложениях, таких как прогнозирование склонности клиента купить продукт или отменить заказ и т. д. В экономике его можно использовать для прогнозирования вероятности выхода человека на рынок труда, а бизнес-приложения можно использовать для прогнозирования вероятности того, что домовладелец не выплатит ипотечный кредит. Условные случайные поля являются расширением логистической регрессии для последовательных данных для обработки естественного языка.
Модель логистической регрессии теперь также является основным компонентом многих алгоритмов классификации, таких как противодействие мошенничеству с транзакциями по кредитным картам на основе алгоритма GBDT + логистическая регрессия LR в задачах классификации, оценка CTR (коэффициент кликов) и т. д. Преимущество заключается в том, что выходное значение, естественно, находится между 0 и 1 и имеет вероятностное значение. Модель ясна и имеет соответствующую теоретическую основу вероятности. Подходящие параметры представляют влияние каждой функции на результат. Также отличный инструмент для понимания данных. Но в то же время, поскольку это по сути линейный классификатор, он не может работать с более сложными ситуациями с данными. Много раз мы также используем модель логистической регрессии в качестве базовой линии (базового уровня) для некоторых попыток выполнения задачи.
После разговора о концепциях и приложениях этих логистических регрессий вы уже должны были их ожидать, так что давайте начнем прямо сейчас! ! !
2 Цели обучения
- Понимание теории логистической регрессии
- Освойте использование вызовов функций sklearn логистической регрессии и примените их к прогнозам в наборе данных радужной оболочки.
3 Поток кода
- Часть 1 Демонстрационная практика
-
- Шаг 1: Импорт функции библиотеки
-
- Шаг 2: Обучение модели
-
- Шаг 3: Просмотр параметров модели
-
- Шаг 4: Визуализация данных и модели
-
- Шаг 5: Предсказание модели
- Часть 2 Практика классификации логистической регрессии на основе набора данных радужной оболочки глаза
-
- Шаг 1: Импорт библиотечной функции
-
- Шаг 2: Чтение/загрузка данных
-
- Шаг 3: Простой просмотр информации о данных
-
- Шаг 4: Визуальное описание
-
- Шаг 5. Используйте модель логистической регрессии для обучения и прогнозирования бинарной классификации.
-
- Шаг 5. Используйте модель логистической регрессии для обучения и прогнозирования по трем классификациям (множественная классификация).
4 Алгоритм боя
4.1 Демонстрационная практика
Шаг 1: Импорт библиотечной функции
## 基础函数库
import numpy as np
## 导入画图库
import matplotlib.pyplot as plt
import seaborn as sns
## 导入逻辑回归模型函数
from sklearn.linear_model import LogisticRegression
Шаг 2: Обучение модели
##Demo演示LogisticRegression分类
## 构造数据集
x_fearures = np.array([[-1, -2], [-2, -1], [-3, -2], [1, 3], [2, 1], [3, 2]])
y_label = np.array([0, 0, 0, 1, 1, 1])
## 调用逻辑回归模型
lr_clf = LogisticRegression()
## 用逻辑回归模型拟合构造的数据集
lr_clf = lr_clf.fit(x_fearures, y_label) #其拟合方程为 y=w0+w1*x1+w2*x2
Шаг 3: Просмотр параметров модели
## 查看其对应模型的w
print('the weight of Logistic Regression:',lr_clf.coef_)
## 查看其对应模型的w0
print('the intercept(w0) of Logistic Regression:',lr_clf.intercept_)
the weight of Logistic Regression: [[0.73455784 0.69539712]]
the intercept(w0) of Logistic Regression: [-0.13139986]
Шаг 4: Визуализация данных и модели
## 可视化构造的数据样本点
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')
plt.show()
# 可视化决策边界
plt.figure()
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')
nx, ny = 200, 100
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()
x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny))
z_proba = lr_clf.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()])
z_proba = z_proba[:, 1].reshape(x_grid.shape)
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')
plt.show()
### 可视化预测新样本
plt.figure()
## new point 1
x_fearures_new1 = np.array([[0, -1]])
plt.scatter(x_fearures_new1[:,0],x_fearures_new1[:,1], s=50, cmap='viridis')
plt.annotate(s='New point 1',xy=(0,-1),xytext=(-2,0),color='blue',arrowprops=dict(arrowstyle='-|>',connectionstyle='arc3',color='red'))
## new point 2
x_fearures_new2 = np.array([[1, 2]])
plt.scatter(x_fearures_new2[:,0],x_fearures_new2[:,1], s=50, cmap='viridis')
plt.annotate(s='New point 2',xy=(1,2),xytext=(-1.5,2.5),color='red',arrowprops=dict(arrowstyle='-|>',connectionstyle='arc3',color='red'))
## 训练样本
plt.scatter(x_fearures[:,0],x_fearures[:,1], c=y_label, s=50, cmap='viridis')
plt.title('Dataset')
# 可视化决策边界
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')
plt.show()
Шаг 5: Предсказание модели
## 在训练集和测试集上分别利用训练好的模型进行预测
y_label_new1_predict = lr_clf.predict(x_fearures_new1)
y_label_new2_predict = lr_clf.predict(x_fearures_new2)
print('The New point 1 predict class:\n',y_label_new1_predict)
print('The New point 2 predict class:\n',y_label_new2_predict)
## 由于逻辑回归模型是概率预测模型(前文介绍的 p = p(y=1|x,\theta)),所以我们可以利用 predict_proba 函数预测其概率
y_label_new1_predict_proba = lr_clf.predict_proba(x_fearures_new1)
y_label_new2_predict_proba = lr_clf.predict_proba(x_fearures_new2)
print('The New point 1 predict Probability of each class:\n',y_label_new1_predict_proba)
print('The New point 2 predict Probability of each class:\n',y_label_new2_predict_proba)
The New point 1 predict class:
[0]
The New point 2 predict class:
[1]
The New point 1 predict Probability of each class:
[[0.69567724 0.30432276]]
The New point 2 predict Probability of each class:
[[0.11983936 0.88016064]]
Можно обнаружить, что обученная регрессионная модель предсказывает X_new1 как категорию 0 (нижняя левая сторона дискриминантной поверхности), а X_new2 предсказывает категорию 1 (верхняя правая сторона дискриминантной поверхности). Дискриминантная поверхность с вероятностью 0,5 модели логистической регрессии, полученная в результате ее обучения, — синяя линия на рисунке выше.
4.2 Практика классификации логистической регрессии на основе набора данных по радужной оболочке
В самом начале практики нам сначала нужно импортировать некоторые библиотеки базовых функций, включая: numpy (базовый программный пакет для научных вычислений на Python), pandas (pandas — это быстрая, мощная, гибкая и простая в использовании система данных с открытым исходным кодом). инструмент анализа и обработки), matplotlib и морские графики.
Шаг 1: Импорт библиотечной функции
## 基础函数库
import numpy as np
import pandas as pd
## 绘图函数库
import matplotlib.pyplot as plt
import seaborn as sns
На этот раз мы выбираем данные радужной оболочки (ирис), чтобы попытаться обучить метод, Набор данных содержит в общей сложности 5 переменных, в том числе 4 переменные функции и 1 целевую категориальную переменную. Всего имеется 150 образцов, и целевой переменной является категория цветов, все из которых принадлежат к трем подродам рода Iris, а именно Iris-setosa, Iris-versicolor и Iris-virginica). Четыре характеристики трех включенных радужных оболочек: длина чашелистика (см), ширина чашелистика (см), длина лепестка (см) и ширина лепестка (см) использовались для идентификации видов в прошлом.
Переменная | описывать |
---|---|
sepal length | Длина чашечки (см) |
sepal width | Ширина чашечки (см) |
petal length | Длина лепестка (см) |
petal width | Ширина лепестка (см) |
target | Три подрода ириса: setosa (0), versicolor (1), virginica (2). |
Шаг 2: Чтение/загрузка данных
## 我们利用 sklearn 中自带的 iris 数据作为数据载入,并利用Pandas转化为DataFrame格式
from sklearn.datasets import load_iris
data = load_iris() #得到数据特征
iris_target = data.target #得到数据对应的标签
iris_features = pd.DataFrame(data=data.data, columns=data.feature_names) #利用Pandas转化为DataFrame格式
Шаг 3: Простой просмотр информации о данных
## 利用.info()查看数据的整体信息
iris_features.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150 entries, 0 to 149
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 sepal length (cm) 150 non-null float64
1 sepal width (cm) 150 non-null float64
2 petal length (cm) 150 non-null float64
3 petal width (cm) 150 non-null float64
dtypes: float64(4)
memory usage: 4.8 KB
## 进行简单的数据查看,我们可以利用 .head() 头部.tail()尾部
iris_features.head()
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | |
---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 |
1 | 4.9 | 3.0 | 1.4 | 0.2 |
2 | 4.7 | 3.2 | 1.3 | 0.2 |
3 | 4.6 | 3.1 | 1.5 | 0.2 |
4 | 5.0 | 3.6 | 1.4 | 0.2 |
iris_features.tail()
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | |
---|---|---|---|---|
145 | 6.7 | 3.0 | 5.2 | 2.3 |
146 | 6.3 | 2.5 | 5.0 | 1.9 |
147 | 6.5 | 3.0 | 5.2 | 2.0 |
148 | 6.2 | 3.4 | 5.4 | 2.3 |
149 | 5.9 | 3.0 | 5.1 | 1.8 |
## 其对应的类别标签为,其中0,1,2分别代表'setosa', 'versicolor', 'virginica'三种不同花的类别。
iris_target
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
## 利用value_counts函数查看每个类别数量
pd.Series(iris_target).value_counts()
2 50
1 50
0 50
dtype: int64
## 对于特征进行一些统计描述
iris_features.describe()
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | |
---|---|---|---|---|
count | 150.000000 | 150.000000 | 150.000000 | 150.000000 |
mean | 5.843333 | 3.057333 | 3.758000 | 1.199333 |
std | 0.828066 | 0.435866 | 1.765298 | 0.762238 |
min | 4.300000 | 2.000000 | 1.000000 | 0.100000 |
25% | 5.100000 | 2.800000 | 1.600000 | 0.300000 |
50% | 5.800000 | 3.000000 | 4.350000 | 1.300000 |
75% | 6.400000 | 3.300000 | 5.100000 | 1.800000 |
max | 7.900000 | 4.400000 | 6.900000 | 2.500000 |
Из статистического описания мы можем видеть диапазон варьирования различных числовых признаков.
Шаг 4: Визуальное описание
## 合并标签和特征信息
iris_all = iris_features.copy() ##进行浅拷贝,防止对于原始数据的修改
iris_all['target'] = iris_target
## 特征与标签组合的散点可视化
sns.pairplot(data=iris_all,diag_kind='hist', hue= 'target')
plt.show()
Из приведенного выше рисунка видно, что в случае 2D распределение разброса различных комбинаций признаков для разных категорий цветов и приблизительная способность к различению.
for col in iris_features.columns:
sns.boxplot(x='target', y=col, saturation=0.5,palette='pastel', data=iris_all)
plt.title(col)
plt.show()
Используя блочную диаграмму, мы также можем получить различия в распределении разных категорий по разным функциям.
# 选取其前三个特征绘制三维散点图
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(111, projection='3d')
iris_all_class0 = iris_all[iris_all['target']==0].values
iris_all_class1 = iris_all[iris_all['target']==1].values
iris_all_class2 = iris_all[iris_all['target']==2].values
# 'setosa'(0), 'versicolor'(1), 'virginica'(2)
ax.scatter(iris_all_class0[:,0], iris_all_class0[:,1], iris_all_class0[:,2],label='setosa')
ax.scatter(iris_all_class1[:,0], iris_all_class1[:,1], iris_all_class1[:,2],label='versicolor')
ax.scatter(iris_all_class2[:,0], iris_all_class2[:,1], iris_all_class2[:,2],label='virginica')
plt.legend()
plt.show()
Шаг 5. Используйте модель логистической регрессии для обучения и прогнозирования бинарной классификации.
## 为了正确评估模型性能,将数据划分为训练集和测试集,并在训练集上训练模型,在测试集上验证模型性能。
from sklearn.model_selection import train_test_split
## 选择其类别为0和1的样本 (不包括类别为2的样本)
iris_features_part = iris_features.iloc[:100]
iris_target_part = iris_target[:100]
## 测试集大小为20%, 80%/20%分
x_train, x_test, y_train, y_test = train_test_split(iris_features_part, iris_target_part, test_size = 0.2, random_state = 2020)
## 从sklearn中导入逻辑回归模型
from sklearn.linear_model import LogisticRegression
## 定义 逻辑回归模型
clf = LogisticRegression(random_state=0, solver='lbfgs')
# 在训练集上训练逻辑回归模型
clf.fit(x_train, y_train)
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, l1_ratio=None, max_iter=100,
multi_class='auto', n_jobs=None, penalty='l2',
random_state=0, solver='lbfgs', tol=0.0001, verbose=0,
warm_start=False)
## 查看其对应的w
print('the weight of Logistic Regression:',clf.coef_)
## 查看其对应的w0
print('the intercept(w0) of Logistic Regression:',clf.intercept_)
the weight of Logistic Regression: [[ 0.45181973 -0.81743611 2.14470304 0.89838607]]
the intercept(w0) of Logistic Regression: [-6.53367714]
## 在训练集和测试集上分布利用训练好的模型进行预测
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)
from sklearn import metrics
## 利用accuracy(准确度)【预测正确的样本数目占总预测样本数目的比例】评估模型效果
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_train,train_predict))
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_test,test_predict))
## 查看混淆矩阵 (预测值和真实值的各类情况统计矩阵)
confusion_matrix_result = metrics.confusion_matrix(test_predict,y_test)
print('The confusion matrix result:\n',confusion_matrix_result)
# 利用热力图对于结果进行可视化
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_matrix_result, annot=True, cmap='Blues')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()
The accuracy of the Logistic Regression is: 1.0
The accuracy of the Logistic Regression is: 1.0
The confusion matrix result:
[[ 9 0]
[ 0 11]]
Мы можем обнаружить, что его точность равна 1, что означает, что все выборки предсказаны правильно.
Шаг 6. Используйте модель логистической регрессии для обучения и прогнозирования по трем классификациям (множественная классификация).
## 测试集大小为20%, 80%/20%分
x_train, x_test, y_train, y_test = train_test_split(iris_features, iris_target, test_size = 0.2, random_state = 2020)
## 定义 逻辑回归模型
clf = LogisticRegression(random_state=0, solver='lbfgs')
# 在训练集上训练逻辑回归模型
clf.fit(x_train, y_train)
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, l1_ratio=None, max_iter=100,
multi_class='auto', n_jobs=None, penalty='l2',
random_state=0, solver='lbfgs', tol=0.0001, verbose=0,
warm_start=False)
## 查看其对应的w
print('the weight of Logistic Regression:\n',clf.coef_)
## 查看其对应的w0
print('the intercept(w0) of Logistic Regression:\n',clf.intercept_)
## 由于这个是3分类,所有我们这里得到了三个逻辑回归模型的参数,其三个逻辑回归组合起来即可实现三分类。
the weight of Logistic Regression:
[[-0.45928925 0.83069886 -2.26606531 -0.9974398 ]
[ 0.33117319 -0.72863423 -0.06841147 -0.9871103 ]
[ 0.12811606 -0.10206463 2.33447679 1.9845501 ]]
the intercept(w0) of Logistic Regression:
[ 9.43880677 3.93047364 -13.36928041]
## 在训练集和测试集上分布利用训练好的模型进行预测
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)
## 由于逻辑回归模型是概率预测模型(前文介绍的 p = p(y=1|x,\theta)),所有我们可以利用 predict_proba 函数预测其概率
train_predict_proba = clf.predict_proba(x_train)
test_predict_proba = clf.predict_proba(x_test)
print('The test predict Probability of each class:\n',test_predict_proba)
## 其中第一列代表预测为0类的概率,第二列代表预测为1类的概率,第三列代表预测为2类的概率。
## 利用accuracy(准确度)【预测正确的样本数目占总预测样本数目的比例】评估模型效果
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_train,train_predict))
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_test,test_predict))
The test predict Probability of each class:
[[1.03461734e-05 2.33279475e-02 9.76661706e-01]
[9.69926591e-01 3.00732875e-02 1.21676996e-07]
[2.09992547e-02 8.69156617e-01 1.09844128e-01]
[3.61934870e-03 7.91979966e-01 2.04400685e-01]
[7.90943202e-03 8.00605300e-01 1.91485268e-01]
[7.30034960e-04 6.60508053e-01 3.38761912e-01]
[1.68614209e-04 1.86322045e-01 8.13509341e-01]
[1.06915332e-01 8.90815532e-01 2.26913667e-03]
[9.46928070e-01 5.30707294e-02 1.20016057e-06]
[9.62346385e-01 3.76532233e-02 3.91897289e-07]
[1.19533384e-04 1.38823468e-01 8.61056998e-01]
[8.78881883e-03 6.97207361e-01 2.94003820e-01]
[9.73938143e-01 2.60617346e-02 1.22613836e-07]
[1.78434056e-03 4.79518177e-01 5.18697482e-01]
[5.56924342e-04 2.46776841e-01 7.52666235e-01]
[9.83549842e-01 1.64500670e-02 9.13617258e-08]
[1.65201477e-02 9.54672749e-01 2.88071038e-02]
[8.99853708e-03 7.82707576e-01 2.08293887e-01]
[2.98015025e-05 5.45900066e-02 9.45380192e-01]
[9.35695863e-01 6.43039513e-02 1.85301359e-07]
[9.80621190e-01 1.93787400e-02 7.00125246e-08]
[1.68478815e-04 3.30167226e-01 6.69664295e-01]
[3.54046163e-03 4.02267805e-01 5.94191734e-01]
[9.70617284e-01 2.93824740e-02 2.42443967e-07]
[2.56895205e-04 1.54631583e-01 8.45111522e-01]
[3.48668490e-02 9.11966141e-01 5.31670105e-02]
[1.47218847e-02 6.84038115e-01 3.01240001e-01]
[9.46510447e-04 4.28641987e-01 5.70411503e-01]
[9.64848137e-01 3.51516748e-02 1.87917880e-07]
[9.70436779e-01 2.95624025e-02 8.18591606e-07]]
The accuracy of the Logistic Regression is: 0.9833333333333333
The accuracy of the Logistic Regression is: 0.8666666666666667
## 查看混淆矩阵
confusion_matrix_result = metrics.confusion_matrix(test_predict,y_test)
print('The confusion matrix result:\n',confusion_matrix_result)
# 利用热力图对于结果进行可视化
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_matrix_result, annot=True, cmap='Blues')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()
The confusion matrix result:
[[10 0 0]
[ 0 8 2]
[ 0 2 8]]
По результатам мы можем обнаружить, что точность прогнозирования результатов трех категорий снизилась, и ее точность на тестовом наборе составляет: 86,67% 86,67\% 86,67%, что связано с «разноцветным» (1) и « признаков этих двух категорий virginica' (2), мы также можем обнаружить из визуализации, что границы признаков имеют некоторую нечеткость (пограничные категории смешаны, и границы четко не различимы), все они проявляются в предсказания этих двух категорий сделали определенную ошибку.
5 важных пунктов знаний
Введение в принцип логистической регрессии:
Хотя логистическая регрессия имеет в своем названии «регрессию», на самом деле это метод классификации, в основном используемый для задач с двумя классификациями (то есть есть только два выхода, представляющих две категории соответственно), поэтому логистическая функция (или сигмовидная функция) используется. ), форма функции:
l o g i ( z ) = 1 1 + e − z logi(z)=\frac{1}{1+e^{-z}} logi(z)=1+e−z1
Соответствующее ему функциональное изображение может быть представлено следующим образом:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-5,5,0.01)
y = 1/(1+np.exp(-x))
plt.plot(x,y)
plt.xlabel('z')
plt.ylabel('y')
plt.grid()
plt.show()
Из приведенного выше рисунка видно, что логистическая функция является монотонно возрастающей функцией и принимает значение 0,5 при z=0, а диапазон значений функции logi ( ⋅ ) logi(\cdot) logi(⋅) равен ( 0 , 1 ) (0,1) (0,1).
Основное уравнение регрессии: z = w 0 + ∑ i N w i x i z=w_0+\sum_i^N w_ix_i z=w0+∑iNwixi,
Запишите в него уравнение регрессии в виде:
п знак равно п ( y знак равно 1 ∣ Икс , θ ) знак равно час θ ( Икс , θ ) знак равно 1 1 + е - ( w 0 + ∑ я N wixi ) p = p (y = 1 | x, \ theta) = h_ \theta(x,\theta)=\frac{1}{1+e^{-(w_0+\sum_i^N w_ix_i)}} p=p(y=1∣x,θ)=hθ(x,θ )=1+e−(w0+∑iNwixi)1
Итак, p ( y = 1 ∣ x , θ ) = h θ ( x , θ ) p (y = 1 | x, \ theta) = h_ \ theta (x, \ theta) p (y = 1 ∣ x, θ ) = hθ (x, θ), p ( y = 0 ∣ x , θ ) = 1 − h θ ( x , θ ) p (y = 0 | x, \ theta) = 1-h_ \ theta (x, \тета) p(y=0∣x,θ)=1−hθ(x,θ)
Логистическая регрессия В принципе логистическая регрессия фактически реализует границу решения: для функции y = 1 1 + e − zy=\frac{1}{1+e^{-z}} y=1+e− z1, когда z = > 0 z=>0 z=>0, y = > 0,5 y=>0,5 y=>0,5, классифицируется как 1, когда z
Для обучения модели: по сути, это использование данных для решения конкретной w w w соответствующей модели. Таким образом, получается характерная модель логистической регрессии для текущих данных.
Для мультиклассификации мультиклассификация может быть достигнута путем объединения нескольких бинарных логистических регрессий.