线性模型:试图学得一个属性的线性组合来进行预测的函数
\[
f(x) = w_1x_1+w_2x_2+..+w_dx_d+b
\]
向量模式:
\[
f(x)=w^Tx+b
\]
简单、基本、可解释性好(可看出每部分属性所做的贡献)
可用于分类和回归
多个特征\({x_1,x_2,...,x_n}\)
\[
h_{\theta}(x) = \sum_{i=0}^{n}\theta_ix_i=\theta^Tx
\]
cost function
objective
损失函数MSE
\[
J(\theta_0,\theta_1,..,\theta_n) = \frac{1}{2m}\sum_{i=0}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2
\]
损失函数是一个先减小后增大的过程(随着\(\theta\)),是一个凸函数,衡量预测值与标准答案的差异。
优化损失函数的方法:梯度下降 ,梯度是上升最快的方向,负梯度是下降最快的方向。
\[
y=\theta_1x_1+\theta_0
\]
\[ \theta_0:=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)}) \]
\[ \theta_1:=\theta_1-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})\cdot x^{(i)} \]
\(\alpha\)太小,收敛速度太慢
\(\alpha\)太大,收敛速度快,震荡不稳定,甚至不收敛
多项式拟合:选取多项式的次数
模型的欠拟合和过拟合
欠拟合:没有很好的捕捉到数据的特征,不能很好的拟合数据
过拟合:把样本点的一些噪声特性也学习下来,泛化能力差
实际工业界使用各种模型都存在过拟合的风险:
利用正则化对高次项增加损失,减少高次项的权重,“不让他甩起来”
单单比对标准答案是不够的,减少\(\theta\)的绝对值,控制幅度,限制\(\theta\)的搜索空间
\[
J(\theta_0,\theta_1,..,\theta_n) = \frac{1}{2m}\sum_{i=0}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^{n}\theta_{j}^{2}
\]
对线性映射的结果进行数学变换,逼近y
\[ lny = w^Tx+b \]
\[ y = e^{w^Tx+b} \]
利用\(e^{w^Tx+b}\)逼近y
用线性回归+阈值解决分类问题,当有噪声点时,阈值偏移大,健壮性不够。
因此采用逻辑回归确定决策边界,这一骚操作摒弃原来的拟合样本分布,换了思维:找到分类的决策边界
sigmoid函数:
\[
y = \frac{1}{1+e^{-z}}
\]
\[ z = h_{\theta}(x) \]
sigmoid是一个压缩函数,将直线的取值范围压缩至\([0,1]\)
将预测的结果设为目标\(x\)判断为正样本的概率
此时\(h_{\theta}(x)\)为一条决策分类边界:
样本在其外部,所得概率大于0.5
样本在其内部,所得概率小于0.5
若采用均方差损失MSE
:
\[
J(\theta)=\frac{1}{m}\sum_{i=1}^{m}\frac{1}{2}(h_{\theta}(x^{(i)})-y^{(i)})^{2}
\]
该损失函数是非凸函数,有很多局部最值点,无法优化
因此采用对数损失(二元交叉熵损失)
\[
Cost(h_{\theta}(x),y)=\left\{\begin{matrix}
-log(h_{\theta}(x))&y=1 \\
-log(1-h_{\theta}(x))&y=0
\end{matrix}\right.
\]
\[ J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}log(h_{\theta}(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))] \]
添加正则化项
\[
J(\theta)=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}log(h_{\theta}(x^{(i)}))+(1-y^{(i)})log(1-h_{\theta}(x^{(i)}))]+\frac{\lambda}{2m}\sum_{j=1}^{n}\theta_{j}^{2}
\]
梯度下降法,沿着损失函数梯度的方向逐步修正参数:
\[
\theta_{j}:=\theta_{j}-\alpha\frac{\partial}{\partial \theta_{j}}J(\theta)
\]
one vs one:分成多个两组\([c_1,c_2],[c_1,c_3],[c_2,c_3]\)求每类的概率
预测结果为最大的概率对应的类
类别 | 概率 |
---|---|
\(c_1,c_2\) | \(p_1,p_2\) |
\(c_3,c_4\) | \(p_3,p_4\) |
\(c_5,c_6\) | \(p_5,p_6\) |
One VS rest:分别预测是否为\(c_1,c_2,c_3\)类,预测结果为最大概率对应的类
类别 | 概率 |
---|---|
\(c_1 VS \, rest\) | \(p_1\) |
\(c_2 VS \, rest\) | \(p_2\) |
\(c_3 VS \, rest\) | \(p_3\) |
模型本无好坏之分,LR虽然简单,但并不代表它弱于其他模型
LR优缺点如下表
优点 | 缺点 |
---|---|
能以概率的形式输出,而非只是0—1判定:可以做ranking | 对样本分布敏感 |
可解释强,可控度高:每个特征对于结果的贡献程度非常清晰 | |
训练快,特征工程(FE)之后效果好 | 非常依赖特征工程 |
添加特征简单 |
应用:
样本特征处理
离散化后用独热向量编码处理成0-1值
LR训练连续值,注意幅度缩放
处理大样本量(一个机器不够用)
spark MLlib
试试采样:是否需要分层采样
注意样本平衡
欠采样,过采样
修改损失函数,给不同的权重
原文:https://www.cnblogs.com/xm08030623/p/12336814.html