一、关于logistic回归
Logistic回归是一种用于二分类或多分类问题的线性模型,它通过sigmoid函数将线性模型的输出映射到概率空间,使用极大似然估计来求解模型参数。Logistic回归的偏回归系数可以反映自变量和因变量之间的关系等。
Logistic回归的目标是根据输入特征 X 预测输出变量 Y 的类别,其中 Y 可以是二值或多值的离散变量。
假设输出变量 Y 的条件概率分布 P (Y|X) 可以用一个 sigmoid 函数表示,即
其中 w 是权重向量,b 是偏置项,e 是自然对数的底数。
Logistic回归的模型参数 w 和 b 可以通过极大似然估计来求解,即最大化数据的对数似然函数
其中 N 是数据的数量, 是第 i 个数据的真实标签, 是第 i 个数据的预测概率。
Logistic回归的模型参数 w 和 b 的优化通常采用梯度下降法,即每次迭代更新 w 和 b 为
,
其中 是学习率, 和 是对数似然函数的偏导数。
Logistic回归的偏回归系数 w 可以反映自变量 X 和因变量 Y 之间的关系,即 表示当 增加一个单位时, 的变化量,
其中 。因此, 的正负号可以表示 和 Y 的正相关或负相关, 的绝对值可以表示对 Y 的影响程度。
二、Logistic回归的应用
Loistic回归在很多场景中都有应用,在医学研究中,logistic回归可以用来分析疾病的发生与各种危险因素之间的关系。而在机器学习中Logistic回归可以用来做文本分类、情感分析、图像识别等任务。接下来我们就用Logistic回归实现一个简单的分类
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=100, n_features=2, n_redundant=0, random_state=42)
model = LogisticRegression()
model.fit(X, y)
new_X = np.array([[0.5, -0.5], [-0.5, 0.5]])
new_y = model.predict(new_X)
print(new_y)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='rainbow')
plt.scatter(new_X[:, 0], new_X[:, 1], c=new_y, cmap='rainbow', marker='*')
xx, yy = np.meshgrid(np.linspace(-3, 3, 100), np.linspace(-3, 3, 100))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.2, cmap='rainbow')
plt.xlabel('x1')
plt.ylabel('x2')
plt.title('Logistic Regression Classification')
plt.show()
运行结果如下:
三、Logistic回归的优缺点
从上述的定义和例子来看,我们可以发现Logistic回归是一种简单而有效的模型,它可以很容易地实现和解释。它可以处理包括连续和离散、有序和无序等多种类型的自变量,还可以给出概率预测和置信区间,有利于评估结果的不确定性。同时它也有不能很好地处理非线性关系、对异常值和多重共线性敏感、可能存在欠拟合和过拟合之类的问题,需要对使用场景进行考虑。