线性回归
概念
线性回归就是用一条高维一次曲线/曲面去拟合变量之间的关系。利用线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况是简单回归,大于一个自变量的是多元回归。
线性回归模型公式:
h
(
x
)
=
ω
1
x
1
+
ω
2
x
2
+
⋅
⋅
⋅
⋅
⋅
⋅
+
ω
n
x
n
+
b
h(x) = \omega_1x_1 + \omega_2x_2 +······+ \omega_nx_n +b
h(x)=ω1x1+ω2x2+⋅⋅⋅⋅⋅⋅+ωnxn+b
{x}是模型的特征空间,
ω
\omega
ω是特征向量的权值,b是常量。
令
x
0
=
1
x_0=1
x0=1,
ω
0
=
b
\omega_0 = b
ω0=b,
h
(
x
)
=
∑
i
n
ω
i
x
i
h(x) = \sum_i^n\omega_ix_i
h(x)=∑inωixi
总结线性回归的五个基本假设
- 线性性和可加性
- 误差项之间相互独立
- 自变量之间相互独立
- 误差项的方差应该是常数
- 误差项应呈正态分布
公式推导
误差:预测值与真实值之间的差异,用
ϵ
表
示
\epsilon表示
ϵ表示,
y
i
=
ω
i
x
i
+
ϵ
i
y_i = \omega_ix_i + \epsilon_i
yi=ωixi+ϵi
误差是符合均值为0方差为
θ
\theta
θ的高斯分布,具有独立同分布的特点。
求解线性回归模型
ω
\omega
ω的约束就是让误差最小,由于误差是服从高斯分布的,即:
P
(
ϵ
i
)
=
1
2
π
σ
e
x
p
(
−
(
ϵ
i
)
2
2
σ
2
)
P(\epsilon_i) = \frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\epsilon_i)^2}{2\sigma^2})
P(ϵi)=2πσ1exp(−2σ2(ϵi)2)
写不动公式了,直接上手撕推理过程的图片:
目标函数:
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
i
−
θ
i
x
i
)
2
J(\theta) = \frac{1}{2}\sum_{i=1}^{m}(y_i-\theta_ix_i)^2
J(θ)=21∑i=1m(yi−θixi)2,这就是最小二乘法的推导过程,通过寻找误差的最小二次方求得方程的最优解。
评估方法
最常用的评估项
R
2
R^2
R2如上式所示,
R
2
R^2
R2越接近1,残差平方和越接近0,模型拟合的越好。
梯度下降
得到目标函数之后,并不一定能直接求解,这时候就需要梯度下降算法求解。
俗话说,一口吃不成胖子,胖子都是慢慢吃起来的。目标函数的最低点也是这样,寻找一个起始点,告诉他方向,每次走一小步,走到函数不再下降了,就能寻到最低点了。
目标函数:
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
y
i
−
θ
i
x
i
)
2
J(\theta) = \frac{1}{2m}\sum_{i=1}^{m}(y_i-\theta_ix_i)^2
J(θ)=2m1∑i=1m(yi−θixi)2
迭代方向:
∂
J
(
θ
)
∂
θ
j
=
−
1
m
∑
i
=
1
m
(
y
i
−
θ
i
x
i
)
x
i
\frac{\partial J(\theta)}{\partial\theta_j} = -\frac{1}{m}\sum_{i=1}^{m}(y_i-\theta_ix_i)x_i
∂θj∂J(θ)=−m1∑i=1m(yi−θixi)xi
步长/学习率:
α
\alpha
α
迭代后的目标函数:
θ
j
=
θ
j
+
α
∂
J
(
θ
)
∂
θ
j
\theta_j = \theta_j + \alpha\frac{\partial J(\theta)}{\partial\theta_j}
θj=θj+α∂θj∂J(θ)
- 批量梯度下降:容易得到最优解,但是由于每次考虑所有样本,速度很慢
- 随机梯度下降:每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方向
- 小批量梯度下降法:每次更新选择一小部分数据来算,实用!
线性回归优缺点
优点:
- 思想简单,实现容易。建模迅速,对于小数据量、简单的关系很有效;
- 是许多强大的非线性模型的基础。
- 线性回归模型十分容易理解,结果具有很好的可解释性,有利于决策分析。 ω \omega ω能够直接看出特征的重要性。
- 蕴含机器学习中的很多重要思想。
- 能解决回归问题。
缺点:
- 对于非线性数据或者数据特征间具有相关性多项式回归难以建模.
- 难以很好地表达高度复杂的数据,容易欠拟合。
逻辑回归
概念
逻辑回归是经典的二分类算法。他是在线性回归的基础上衍生出的。逻辑回归是将在线性回归中得到的预测值,映射到sigmoid函数中,完成由值到概率的一个转换。假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。
s
i
g
m
o
i
d
=
1
1
+
e
−
z
sigmoid = \frac{1}{1+e^{-z}}
sigmoid=1+e−z1
公式推导
每次梯度下降,迭代后的参数:
θ
j
=
θ
j
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
x
i
\theta_j = \theta_j - \alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x_i)-y_i)x_i
θj=θj−αm1∑i=1m(hθ(xi)−yi)xi
逻辑回归优缺点
优点:
- 训练速度快,分类的时候,计算量仅仅只和特征的数目相关
- 简单易理解,模型的可解释性非常好,从特征的权重可以看到不同的特征对最后结果的影响程度
- 适合二分类问题,不需要缩放输入特征
- 内存资源占用小,因为只需要存储各个维度的特征值
缺点:
- 不能用LR去解决非线性问题
- 对多重共线性数据较为敏感
- 很难处理数据不平衡问题
- 准确率并不是很高,因为形式非常简单,很难去拟合数据的真实分布
- 逻辑回归本身无法筛选特征,有时会用gbdt来筛选特征,然后再上LR
softmax回归
概念
softmax回归是多分类模型,逻辑回归的一种推广。
假设样本由k个类别,softmax回归主要估算
x
i
x_i
xi属于每一类的概率,即
其中,
θ
1
,
θ
2
.
.
.
.
.
.
θ
k
\theta_1,\theta_2......\theta_k
θ1,θ2......θk 是模型的参数,
1
∑
j
=
1
k
e
θ
j
T
x
i
\frac{1}{\sum_{j=1}^ke^{\theta_j^Tx_i}}
∑j=1keθjTxi1 是为了让所有概率和为1并且都在[0,1]区间内。
公式推导
线性模型中数据不平衡问题
正负数据比例相差悬殊时预测效果不好。因为回归模型是使用最大似然估计来推导损失函数的,我们得到的结果是所有样本被预测为正确的最大概率。举个栗子,预测垃圾邮件的模型,数据中99%都是负例,两组回归模型,第一组所有负例预测正确,正例预测错误,正确率99%,第二组正例越策正确,但是负例预测出98个,正确率98%,显然,一个模型是毫无用处的,真实的业务场景我们是会选择第二个模型的。为了规避这一问题,我们要解决样本不均衡分布带来的问题。
- 上采样
- 下采样
- SMOTE采样,也属于上采样。给类别数量少的样本随机选择出几个近邻样本,并且在该样本与这些近邻样本的连线上随机采样,生成无重复的新样本。
建模过程中遇到的问题进行补充
- 线性回归你和效果不好的时候,可以使用岭回归。输入的样本是高维稀疏矩阵时,使用Lasso回归。
- 在现有模型上,加入新的变量,所得到的 R 2 R^2 R2会增加,更多的数据会有更好的准确率,因为最差的情况就是让新增的变量权值为0,得到与原先一样的模型。新增变量是否显著要根据变量对应的权重系数判断,和 R 2 R^2 R2无关
- 线性回归增强模型的表达能力/遇到非线性问题处理办法:连续特征离散化,特征衍生,特征交叉(将单独的特征组合形成合成特征-相乘/笛卡尔积,有助于表达非线性关系),gbdt、对特征分桶
- 线性回归和逻辑回归对特征离散化的好处
(1)稀疏向量内积乘法运算很快,计算结果方便存储,容易扩展
(2)离散后的特征对异常数据有很强的鲁棒性,对特征的轻微改变模型也会很稳定,结果不会受到很大的影响
(3)离散特征的增加和减少,模型不需要调整,重新训练就行,一域模型的快速迭代
(4)逻辑回归表达能力受限,连续变量离散化后,每个变量有单独的权重,相当于为模型引入了非线性,提升模型表达能力,加大你和。
(5)离散化后可以进行特征交叉,加入特征A 离散化为M个值,特征B离散为N个值,那么交叉之后会有M*N个变量,进一步引入非线性,提升表达能力
(6)简化逻辑回归模型,降低模型过拟合风险
(7)线性回归效果不好的原因:很难拟合复杂的非线性关系,实际情况中基础假设很难得到满足