一. 逻辑回归及概述
1.概述
逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。其中每一组数据都是由p 个指标构成。
2.原理
由于逻辑回归的原理是用逻辑函数把线性回归的结果(-∞,∞)映射到(0,1),故先介绍线性回归函数和逻辑函数
二.线性回归及逻辑函数
1.线性回归
线性回归函数的数学表达式:
其中xi是自变量,y是因变量,y的值域为(-∞,∞),θ0是常数项,θi(i=1,2,...,n)是待求系数,不同的权重θi反映了自变量对因变量不同的贡献程度。
2.逻辑函数(Sigmoid函数)
2.1 逻辑函数以及其导函数的数学表达式
2.2 逻辑函数及其导函数的图像
1 g(z)
2.g'(z)
3.可知逻辑函数是一个连续且任意阶可导的函数,值域为(0,1)。
三.逻辑回归函数
1.逻辑回归函数公式:
前文中也提到过逻辑回归的原理是用逻辑函数把线性回归的结果从(-∞,∞)映射到(0,1)。所以用公式描述上面这句话:
2.构造逻辑回归函数
线性回归函数的结果y,放到sigmod函数中去,就构造了逻辑回归函数。
又因为上式中y= x,规在把逻指回归的结果g(y)看成某个事件发生的概率,那么这个事件不发生
概率就是1-g(y),俩者的比值可做几率(odds)
四.极大似然估计
一.逻辑回归与极大似然估计的关系:
最大似然估计就是通过已知结果去反推最大概率导致该结果的参数。极大似然估计是概率论在统计学中的应用,它提供了一种给定观察数据来评估模型参数的方法,即 “模型已定,参数未知”,通过若干次试验,观察其结果,利用实验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。逻辑回归是一种监督式学习,是有训练标签的,就是有已知结果的,从这个已知结果入手,去推导能获得最大概率的结果参数θ,只要我们得出了这个参数,那我们的模型就自然可以很准确的预测未知的数据了。
由上文可知:
如果令
p(y=1|x) = g(y) = gθ(y)则
对于一个样本数据(x,y)
其中y∈{0,1}。
当由m个属性样本时
将每一个样本发生的概率相乘,就是这个合成在一起得到的合事件发生的总概率(利用概率中的乘法公式),即为似然函数,可以写成:
其中θ为待求参数。因为ln函数不改变单调性所以可以求对数得
二.构造损失函数
1.损失函数一般定义为预测值和真实值的差
2.如果取整个数据集上的平均对数似然损失,我们可以得到:
其中J(θ)为损失函数,由对数似然函数前面添加负号取平均得到
五.用梯度下降法求解参数
1.什么是梯度下降
梯度就是导数
梯度下降法就是一种通过求目标函数的导数来寻找目标函数最小化的方法。
梯度下降目的是找到目标函数最小化时的取值所对应的自变量的值,目的是为了找自变量X。
2.损失函数梯度推导
至此可以得到梯度下降中的方向
迭代公式
阿尔法代表学习率,不代表步长
又因为
所以迭代公式可以改写为
六.算法实现
1.算法实现
import numpy as np
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
# 准备数据
X = np.array([[1, 3], [2, 5], [3, 7], [5, 11], [7, 14], [8, 9]])
y = np.array([0, 0, 0, 1, 1, 1])
# 创建逻辑回归模型
model = LogisticRegression()
# 拟合模型
model.fit(X, y)
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
# 画出决策边界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
np.arange(y_min, y_max, 0.02))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.3, cmap='viridis')
plt.show()
2.LogisticRegression()函数
1.LogisticRegression()函数是Sklearn库中的,主要用于逻辑回归
2.
class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True,
intercept_scaling=1, class_weight=None, random_state=None,
solver='lbfgs', max_iter=100, multi_class='auto', verbose=0,
warm_start=False, n_jobs=None, l1_ratio=None)