逻辑回归
是一种广义线性回归模型,是分类算法而不是一个回归算法。它是根据已知的一系列因变量估计离散数值(比方说二进制数值 0 或 1 ,是或否,真或假)。y=f(x∗w+b)y=f(x∗w+b)
其中w是训练得到的权重参数(Weight);x是样本特征数据;b是偏置(Bias),f成为激活函数。
简单来说,它通过将数据拟合进一个逻辑函数来预估一个事件出现的概率。因此,它也被叫做逻辑回归。因为它预估的是概率,所以它的输出值大小在 0 和 1 之间(正如所预计的一样)。
- 应用场景:
1.CR预估、推荐排序
2.信评分
3.大规模在线学习
重要概念
- 1.Sigmoid函数
sigmoid(x)=1/(1+e^{z))
2.二分类:在逻辑回归的基础上,判断分类概率是否大于0.5,大于则属于这个分类。
y= 1,f(xw+b) ≥ 0.5
y=−1,f(xw+b)<0.5 - 参数求解方法:最大似然估计(每个样本预测结果二值化输出较大概率的乘积)
- 损失函数cost:似然函数取对数。损失最小化->参数估计时优化的目标。常用方法梯度下降法
- 正则化
L1:λ/2m*(|x1|+|x2|+…+|xn|)
L2:λ/2m*( ∣ x 1 ∣ |x1| ∣x1∣2+$|x2|$2+…+ ∣ x n ∣ |xn| ∣xn∣^2)
m是样本总个数,n是正则化后选择参数的个数,x参数越多惩罚越厉害,模型欠拟合 - 回归模型重要参数
例子学习
import scipy as sp
import numpy as np
from sklearn.cross_validation import train_test_split
from sklearn import metrics
from sklearn.linear_model import LogisticRegression
x=np.loadtxt('D:\\MyData\\Desktop\\winequality-red.txt' , delimiter = "," , usecols=(1,2,3,4,5,6,7,8,9,10,11,12,13) ) #获取属性集
y=np.loadtxt('D:\\MyData\\Desktop\\winequality-red.txt', delimiter = "," , usecols=(0)) #获取标签集
# 加载数据集,切分数据集80%训练,20%测试
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) #切分数据集
#调用逻辑斯特回归
model = LogisticRegression()
model.fit(x_train, y_train)
# 预测
expected = y_test #测试样本的期望输出
predicted = model.predict(x_test) #测试样本预测
#输出结果
print('Coefficient: n', model.coef_) #输出三种类别的logistics回归系数
print('Intercept: n', model.intercept_) #输出三种类别的logistics回归截距
print(metrics.classification_report(expected, predicted)) #输出结果,精确度、召回率、f-1分数
print(metrics.confusion_matrix(expected, predicted)) #混淆矩阵
结果:
Coefficient: n [[-4.5e-01 6.7e-01 9.9e-01 -5.6e-01-2.5e-02 9.0e-02 1.3e+00 9.3e-02 -3.9e-01 -1.4e-01 -1.7e-01 5.8e-01 1.5e-02]
[ 9.1e-01 -9.7e-01 -9.8e-01 1.9e-01 6.7e-03 8.6e-01 4.5e-01 2.9e-01
5.7e-01 -1.7e+00 8.2e-01 1.9e-01 -1.5e-02]
[-4.1e-01 4.07e-01 1.3e-01 1.7e-01 2.4e-02 -7.8e-01 -1.7e+00 -7.3e-02
-6.6e-01 1.06e+00 -4.7e-01 -1.2e+00 -5.8e-06]]
Intercept: n [-0.30550987 0.35785443 -0.06918921]
precision recall f1-score support
1.0 1.00 1.00 1.00 12
2.0 1.00 0.92 0.96 13
3.0 0.92 1.00 0.96 11
avg / total 0.97 0.97 0.97 36
[[12 0 0]
[ 0 12 1]
[ 0 0 11]]
- 优点:
1.算法简单、训练速度快
2.模型可解析性好(线性可加)
3.深度神经网络的基础 - 缺点
模型精度一般,容易欠拟合 - 改进
加入交互项
精简模型特性
使用正则化方法
使用非线性模型