一、线性模型
1.1 线性模型
线性模型:试图学得一个属性的线性组合来进行预测的函数
\[ f(x) = w_1x_1+w_2x_2+..+w_dx_d+b \]
向量模式:
\[ f(x)=w^Tx+b \]
简单、基本、可解释性好(可看出每部分属性所做的贡献)
可用于分类和回归
1.2 线性回归
- 有监督学习\(\rightarrow\)学习样本为\(D={(x_i,y_i)}^{N}_{i=1}\)
- 输出预测结果\(y\)为连续变量
- 需要学习映射
- 假定输入和输出之间有线性相关关系\(f:X\rightarrow Y\)
1.2.1 房价预测
多个特征\({x_1,x_2,...,x_n}\)
\[ h_{\theta}(x) = \sum_{i=0}^{n}\theta_ix_i=\theta^Tx \]
1.2.2 损失函数
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\)太大,收敛速度快,震荡不稳定,甚至不收敛
1.2.3 欠拟合和过拟合
多项式拟合:选取多项式的次数
模型的欠拟合和过拟合
欠拟合:没有很好的捕捉到数据的特征,不能很好的拟合数据
过拟合:把样本点的一些噪声特性也学习下来,泛化能力差
实际工业界使用各种模型都存在过拟合的风险:
- 更复杂的模型,通常有更强的学习能力,但也容易失去控制
- 训练数据存在噪声,不代表真实的数据分布
1.2.4 正则化
利用正则化对高次项增加损失,减少高次项的权重,“不让他甩起来”
单单比对标准答案是不够的,减少\(\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} \]
1.3 广义线性模型
对线性映射的结果进行数学变换,逼近y
- 指数变换处理
- 对数变换处理
\[ lny = w^Tx+b \]
\[ y = e^{w^Tx+b} \]
利用\(e^{w^Tx+b}\)逼近y
二、逻辑回归
2.1 从线性回归到逻辑回归
用线性回归+阈值解决分类问题,当有噪声点时,阈值偏移大,健壮性不够。
因此采用逻辑回归确定决策边界,这一骚操作摒弃原来的拟合样本分布,换了思维:找到分类的决策边界
2.2 sigmoid
sigmoid函数:
\[ y = \frac{1}{1+e^{-z}} \]
\[ z = h_{\theta}(x) \]
sigmoid是一个压缩函数,将直线的取值范围压缩至\([0,1]\)
将预测的结果设为目标\(x\)判断为正样本的概率
此时\(h_{\theta}(x)\)为一条决策分类边界:
样本在其外部,所得概率大于0.5
样本在其内部,所得概率小于0.5
2.3 损失函数
若采用均方差损失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} \]
2.4 损失函数优化
梯度下降法,沿着损失函数梯度的方向逐步修正参数:
\[ \theta_{j}:=\theta_{j}-\alpha\frac{\partial}{\partial \theta_{j}}J(\theta) \]
2.5 从二分类到多分类
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\) |
三、工程应用的经验
3.1 逻辑回归 VS 其他模型
模型本无好坏之分,LR虽然简单,但并不代表它弱于其他模型
LR优缺点如下表
优点 | 缺点 |
---|---|
能以概率的形式输出,而非只是0—1判定:可以做ranking | 对样本分布敏感 |
可解释强,可控度高:每个特征对于结果的贡献程度非常清晰 | |
训练快,特征工程(FE)之后效果好 | 非常依赖特征工程 |
添加特征简单 |
应用:
- CTR预估/推荐系统learning to rank/各种场景的分类
- 很多搜索引擎厂的广告CTR预估基线版是LR
- 电商搜索排序CTR预估基线版是LR
- 新闻app也是LR
3.2 样本处理
样本特征处理
离散化后用独热向量编码处理成0-1值
LR训练连续值,注意幅度缩放
处理大样本量(一个机器不够用)
spark MLlib
试试采样:是否需要分层采样
注意样本平衡
欠采样,过采样
修改损失函数,给不同的权重