1、基本概念
- 逻辑回归
是一种监督学习分类算法,实现了给定数据集到0,1的一种映射。 - 逻辑回归的过程
面对一个回归或者分类问题,构造预测函数,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。 - 损失函数
表征预测值与真实值之间的差异程度,如果预测值与真实值越接近则损失函数应该越小。
结构风险函数 = 经验风险项 + 正则项 其中损失函数为经验风险项的重要组成部分
前半部分为经验风险项,后半部分为正则项。
- 概率
描述的是在一定条件下某个事件发生的可能性,概率越大说明这件事情越可能会发生 - 似然
描述的是结果已知的情况下,该事件在不同条件下发生的可能性,似然函数的值越大说明该事件在对应的条件下发生的可能性越大
2、LR的推导
2.1、 数据集介绍
数据集,其中(xi,yi)表示第i个样本,其中。即每个数据有n个特征,类别,要求训练数据,将数据分成两类0或1。
2.2 过程
-
为了表示简洁,在数据样本xi添加一个特征x0=1,将b作为一维特征。则有
-
以上实现了用样本xi的n个特征来表示样本的表达式,现在需要寻找一个映射使得z可以转换为0或者1
-
可以使用阶跃函数,但是阶跃函数性质不好,不可导求解过于复杂,这里选用Sigmoid函数:
-
当输入一个Z时,y输出一个0–1之间的数,假定y>0.5则最终结果判为1,y<0.5最终结果为0。当y=0.8时,最终结果为1,y=0.8也表征了此时输出为1的概率。令:
-
样本特征线性表示,然后输入到Sigmoid函数,输出结果在0–1之间,并且输出结果表征了分类结果为1的概率。即有:
可求得预测值为y的概率表达式为:
-
假设样本独立且同分布,最大似然估计:
-
进而求最大对数似然估计:
-
LR的损失函数:log loss,对数似然函数
-
随机梯度下降,求解最小值
迭代式:
3 程序
- Python实现逻辑回归
import numpy as np
from sklearn.linear_model import LogisticRegression
X = np.array([[0.1,0.2],[0.2,0.3],[1.5,1.8],[2.1,2.6]])
Y = np.array([0,0,1,1])
lr = LogisticRegression() # 这里有许多参数需要设置
lr.fit(X,Y)
pred = lr.predict([[1.6,2.0]])
print(pred)
4 总结
- 求解损失函数的方法
随机梯度下降、牛顿法、Adam - 优缺点
- 优点
1)速度快,适合二分类问题
2)简单易于理解,直接看到各个特征的权重
3)能容易地更新模型吸收新的数据 - 缺点
1)容易欠拟合,一般准确度不太高
2)对数据和场景的适应能力有局限性
3)只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分
- 优点
- 用途
- 寻找危险因素:寻找某一疾病的危险因素等;
- 预测:根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大;
- 判别:实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。
- Regression 常规步骤
- 寻找h函数(即预测函数)
- 构造J函数(损失函数)
- 想办法使得J函数最小并求得回归参数(θ)