机器学习笔记2:机器学习任务的一般步骤

机器学习任务的一般步骤:
那么,在机器学习任务中,将如何对数据进行分析呢?这里,我们总结下一般的机器学习任务的步骤,它适用于在上一篇的机器学习简介中,我们介绍了几种机器学习的类型。

文章目录


#1、确定特征#
  在机器学习中,我们拿到的数据集,一般都是结构化的数据,那么在对这些数据的处理时,我们就需要判断这些数据是否有用,那就是需要确定这些数据的特征,这些特征对我们最终预测的结果有多大的影响。如在波士顿房价预测中,我们选择的特征有房子的房间数、房子的面积等都影响房价的预测。机器学习的特征选择是非常重要的,它决定了我们的最终数据的预测判断。这里,我主要简单介绍一下关于特征选择的一些基本知识。下图是特征工程的一些方法:
这里写图片描述
  后面另起章节对特征工程进行讲解

#2、确定模型 #
  模型选择,就是在选择何种数学公式对数据进行预测。当我们确定特征后,我们就需要将数据带入到相应的模型进行训练,在监督学习的任务中,在给定的带标签的训练样本 D = { x i , y i } i = 1 N \textit{D}=\left \{ \mathbf{x}_{i} ,y_{i}\right \}_{i=1}^{N} D={xi,yi}i=1N 学习到了一个 x → y ^ \mathbf{x}\rightarrow\hat{y} xy^的映射关系,从而得到对新的输入 x \mathbf{x} x进行预测。模型就是指对给定的 x \mathbf{x} x,如何预测其标签 y ^ \hat{y} y^
  线性模型(最简单的模型):
  
         f ( x ) = Σ j w i x i = W T X f(\mathbf{x})=\Sigma _{j}w_{i}x_{i}=\mathbf{W^{T}}\boldsymbol{X} f(x)=Σjwixi=WTX
        
  非线性模型(在线性模型的非线性化的条件下): 
  
        基函数: x 2 x^{2} x2、log、exp、样条函数、决策树……
        核化:将原问题转化为对偶问题,将对偶问题中的向量点积 &lt; x i , x j &gt; &lt;\mathbf{x}_{i},\mathbf{x}_{j}&gt; <xi,xj>换成核函数 k ( x i , x j ) k(\mathbf{x}_{i},\mathbf{x}_{j}) k(xi,xj)
        
但是我们的预测目标是使得真值和预测值之间的误差是极小值,所以我的训练函数应该是得到一个目标函数。
目标函数:损失函数正则项
 这里写图片描述
损失函数:
度量模型预测值和真值之间的差异
对于回归的问题,主要的损失函数有如下:令残差 r = f ( x ) − y r = f(x)-y r=f(x)y  
      --L2损失: L 2 ( r ) = 1 2 r 2 L_{2}(r) = \frac{1}{2}r^{2} L2(r)=21r2
      --L1损失: L 1 ( r ) = ∣ r ∣ L_{1}(r)=|r| L1(r)=r
      --Huber损失: L δ ( r ) = { 1 2 r 2  if  ∣ r ∣ ≤ δ δ ∣ r ∣ − 1 2 δ 2  if  ∣ r ∣ &gt; δ L_{\delta }(r)=\begin{cases}\frac{1}{2}r^{2} &amp; \text{ if } |r|\leq \delta \\ \delta |r|-\frac{1}{2}\delta^{2} &amp; \text{ if } |r|&gt; \delta \end{cases} Lδ(r)={21r2δr21δ2 if rδ if r>δ
对于分类问题,主要的损失函数有如下:
      – 0-1损失: l 0 / 1 ( y , f ( x ) ) = { 1  if  y f ( x ) &lt; 0 0  if  o t h e r e i s e l_{0/1}(y,f(x))=\begin{cases}1 &amp; \text{ if } yf(x)&lt;0 \\ 0 &amp; \text{ if } othereise \end{cases} l0/1(y,f(x))={10 if yf(x)<0 if othereise
      – Logistic 损失:也称为负log似然损失/logloss : l l o g ( y , f ( x ) ) = l o g ( 1 + e x p ( − y f ( x ) ) ) l_{log}(y,f(x))=log(1+exp(-yf(x))) llog(y,f(x))=log(1+exp(yf(x)))
      – 指数损失: l e x p ( y , f ( x ) ) = e x p ( − y f ( x ) ) l_{exp}(y,f(x))=exp(-yf(x)) lexp(y,f(x))=exp(yf(x))
      – 合页损失: l h i n g e ( y , f ( x ) ) = m a x ( 0 , 1 − y f ( x ) ) l_{hinge}(y,f(x))=max(0,1-yf(x)) lhinge(y,f(x))=max(0,1yf(x))
正则项:
  但是就算我们在训练集中能够把训练数据训练得到的损失最小,甚至为零,但是我们真正关心的是在预测上的性能,对于机器学习的模型来说,越是复杂的模型,越是拟合的很好,损失也越小,但是当在训练集上,它的方差就越大。所以要我们对模型进行惩罚,就得加入正则项。常用的正则项有如下:
      - L2正则: R ( θ ) = λ ∣ ∣ θ ∣ ∣ 2 2 = ∑ j = 1 D θ j 2 R(\mathbf{\theta})=\lambda||\mathbf{\theta}||^{2}_{2}=\sum_{j=1}^{D}\theta ^{2}_{j} R(θ)=λθ22=j=1Dθj2
      - L1正则: R ( θ ) = λ ∣ θ ∣ = ∑ j = 1 D ∣ θ ∣ R(\mathbf{\theta})=\lambda|\mathbf{\theta}|=\sum_{j=1}^{D}|\theta| R(θ)=λθ=j=1Dθ
      - L0正则: R ( θ ) = λ ∣ ∣ θ ∣ ∣ 0 R(\mathbf{\theta})=\lambda||\mathbf{\theta}||_{0} R(θ)=λθ0
下面谈论下正则的必要性:
通过sin曲线进行拟合:
       $Y=sin(2\pi X)+\varepsilon $
        X X X服从高斯分布: X ∼ U n i f o r m [ 0 , 1 ] , ε ∼ N ( 0 , 0. 3 2 ) X\sim Uniform[0,1],\varepsilon \sim N(0,0.3^{2}) XUniform[0,1],εN(0,0.32)
 预测模型(M阶多项式):
        y ^ = ∑ j = 0 M w j x j \hat{y}=\sum_{j=0}^{M}w_{j}x^{j} y^=j=0Mwjxj(样本是N=10)
       这里我们使用L2损失函数 1 N ∑ i = 1 N ( y − y ^ ) 2 \frac{1}{N}\sum_{i=1}^{N}(y-\hat{y})^2 N1i=1N(yy^)2
   这里写图片描述
 现在我们需拟合这个函数:
 (1)、0阶多项式拟合:
  y ^ = w 0 \hat{y}=w_{0} y^=w0 ,如下图红线就是该函数,拟合情况不是很好,样本点基本都不在红线附近
 这里写图片描述
 (2)、1阶多项式拟合:
  y ^ = w 0 + w 1 x \hat{y}=w_{0}+w_{1}x y^=w0+w1x,拟合情况比0阶好了一点
 这里写图片描述
 (3)、3阶多项式拟合:
  y ^ = w 0 + w 1 x + w 2 x 2 \hat{y}=w_{0}+w_{1}x+w_{2}x^{2} y^=w0+w1x+w2x2,拟合情况比刚刚又好了很多,基本所有的点都落在红线上了
 这里写图片描述
 (4)、9阶多项式拟合:
  y ^ = w 0 + w 1 x + w 2 x 2 + w 3 x 3 . . . . w 9 x 9 \hat{y}=w_{0}+w_{1}x+w_{2}x^{2}+w_{3}x^{3}....w_{9}x^{9} y^=w0+w1x+w2x2+w3x3....w9x9。可以看到所有的点都落在红线
 这里写图片描述
 但是,如果新增数据集的话,如下图,A点和B点就不落在红线上。而我们说当预测值和真值之间差异(方差)最小时,该模型才是最佳模型,但是目前看来,该模型在训练集上拟合的很好,误差为0,但是校验集上误差就很大。
 这里写图片描述
上述的现象看出,当模型复杂度增加时,训练误差继续下降,甚至趋向于0,但是测试误差却反而增大了,这种现象我们称之为过拟合(overfitting)。一般的模型都遵从这种规律,当模型复杂度到达某个值后,随着模型越来越复杂,预测值和真值之间的误差就越大:
这里写图片描述
考虑到这种情况,我们就需要增加一个正则项,对模型复杂度进行惩罚,避免出现过拟合的情况,如下图:
这里写图片描述
这里我们是增加了L2正则(当然还可以是其他正则),目标函数(使用L2损失和L2正则,称之为岭回归)如下:
这里写图片描述
有过拟合就有欠拟合,欠拟合是指模型太简单或者对复杂性惩罚太多
常见的线性模型的损失函数和正则项的组合:
这里写图片描述
#3、模型训练#
模型训练也就是我们的目标函数的优化,也就是对目标函数进行求解。简单的函数直接通过导数求解,对于比较复杂的函数,有凸优化等方式,如随机梯度下降法和牛顿法等
梯度下降法的简单介绍:快速找到局部极小值。将函数比作一座小山,我们站在某个山坡上,望四周看,从哪个 方向往下走,能最快走到底部,就是梯度的方向
    a.给定初始值 θ 0 \theta^{0} θ0
    b.更新 θ \theta θ,使得 J ( θ ) J(\theta) J(θ)越来越小:
       θ t = θ t 1 − η ▽ θ J ( θ ) \mathbf{\theta }^{t} = \mathbf{\theta }^{t1}-\eta \triangledown _{\theta}J(\theta) θt=θt1ηθJ(θ)
    直到收敛到或者达到预先设定的最大迭代数
不过,梯度下降有如下几点需要注意:
(1)、在使用梯度下降的时候,我们需要注意到,如果下降的步伐太小( η \eta η学习率)的话,收敛就会很慢,如果太大的话,容易出现overshoot the mininum的现象,如下图:

这里写图片描述
一直来回震荡,得不到收敛。所以在训练时候,如果发现函数值增加的话,需要适当减小学习率 e t a eta eta的值。

(2)、在我们的梯度下降的时候,我们得到的只是局部最小值,不是整个模型的最小值。如果二阶导数恒大于0,那么目标函数就是凸函数,所以局部最小值就是全局的最小值。如果不是的话,那么我们只能通过随机选择不同的初始值,得到多个局部极小值点。多个局部极小值的最小值就是函数的全局最小值。

#4、模型选择和评估#
同一个问题,可以使用不同的模型去预测,但是最终选择哪个模型,就需要看该模型在新的数据集上的预测误差是否是最小的,那么新的数据集就是校验集。如下所示:
这里写图片描述

通常来讲,我们也无法确定多少数据是足够的,没有一个标准去确定;同时也没有足够的样本给我们训练和校验。所以我们得通过其他技术来对数据集进行划分规划。如可以通过重采样技术来模拟校验集数据,如重采样的两个方式:
(1)、交叉验证
(2)、bootstrap
这里简单介绍交叉验证:
K-折交叉验证:
  交叉验证(Cross Validation ,CV),将训练数据分为容量相等的K份,对于每个k = 1,2,3…K 。留出第k份,其他K-1份作为训练数据,第k份为校验数据,作为预测误差的数据集。交叉验证估计的误差为:
         C V ( M ) = 1 K ∑ k = 1 K E k ( M ) CV(M)=\frac{1}{K}\sum_{k=1}^{K}E_{k}(M) CV(M)=K1k=1KEk(M)
对于不同的模型,计算其对于的误差CV(M),最佳模型为CV(M)最小的模型。模型复杂度和泛化误差的关系通常是U型曲线,如下图,当模型复杂度一定是,得到预测值与真值之间的误差最小,那么这个复杂度就是我们需要的模型复杂度:
这里写图片描述
那么通过校验集得到预测结果后,还需要使用如下一些评估标准进行度量预测的拟合效果:
(1)、开平均方误差(rooted mean squared error , RMSE):RMSE= 1 N ∑ i = 1 N ( y i ^ − y i ) 2 \sqrt{\frac{1}{N}\sum_{i=1}^{N}(\hat{y_{i}}-y_{i})^{2}} N1i=1N(yi^yi)2
(2)、平均绝对误差(mean absolute error, MAE):MAE= 1 N ∑ i = 1 N ∣ y i ^ − y i ∣ \frac{1}{N}\sum_{i=1}^{N}|\hat{y_{i}}-y_{i}| N1i=1Nyi^yi
(3)、R2 score:即考虑预测值和真值之间的差异,也考虑了问题本身真值之间的差异(scikit learn线性回归的缺省评价准则)
         S S r e s = ∑ i = 1 N ( y i ^ − y i ) 2 SS_{res}=\sum_{i=1}^{N}(\hat{y_{i}}-y_{i})^{2} SSres=i=1N(yi^yi)2
         S S t o t = ∑ i = 1 N ( y i − y ˉ ) 2 SS_{tot}=\sum_{i=1}^{N}(y_{i}-\bar{y})^{2} SStot=i=1N(yiyˉ)2
         R 2 = 1 − S S r e s S S t o t R^{2}=1-\frac{SS_{res}}{SS_{tot}} R2=1SStotSSres
所以, R 2 R^{2} R2越大,模型越好。
#5、模型预测和应用#
当选好模型后,就可以使用该模型在现实中进行应用了。也就是可以上线使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值