01| 线性模型(线性回归与逻辑回归)

一、线性模型

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

b4b8065f7a10ea28f6489e85085787b5.png

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

    试试采样:是否需要分层采样

  • 注意样本平衡

    欠采样,过采样

    修改损失函数,给不同的权重

四、基于python实现

4.1 线性回归实现

4.2 逻辑回归

猜你喜欢

转载自www.cnblogs.com/xm08030623/p/12336814.html
今日推荐