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

1、确定特征

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

2、确定模型

  模型选择,就是在选择何种数学公式对数据进行预测。当我们确定特征后,我们就需要将数据带入到相应的模型进行训练,在监督学习的任务中,在给定的带标签的训练样本D={xi,yi}i=1N 学习到了一个xy^的映射关系,从而得到对新的输入x进行预测。模型就是指对给定的x,如何预测其标签 y^
  线性模型(最简单的模型):
  
        f(x)=Σjwixi=WTX
        
  非线性模型(在线性模型的非线性化的条件下): 
  
        基函数:x2、log、exp、样条函数、决策树……
        核化:将原问题转化为对偶问题,将对偶问题中的向量点积<xi,xj>换成核函数k(xi,xj)
        
但是我们的预测目标是使得真值和预测值之间的误差是极小值,所以我的训练函数应该是得到一个目标函数。
目标函数:损失函数正则项
 机器学习笔记(2)机器学习任务的一般步骤
损失函数:
度量模型预测值和真值之间的差异
对于回归的问题,主要的损失函数有如下:令残差 r=f(x)y  
      –L2损失:L2(r)=12r2
      –L1损失:L1(r)=|r|
      –Huber损失:Lδ(r)={12r2 if |r|δδ|r|12δ2 if |r|>δ
对于分类问题,主要的损失函数有如下:
      – 0-1损失:l0/1(y,f(x))={1 if yf(x)<00 if othereise
      – Logistic 损失:也称为负log似然损失/logloss : llog(y,f(x))=log(1+exp(yf(x)))
      – 指数损失:lexp(y,f(x))=exp(yf(x))
      – 合页损失:lhinge(y,f(x))=max(0,1yf(x))
正则项:
  但是就算我们在训练集中能够把训练数据训练得到的损失最小,甚至为零,但是我们真正关心的是在预测上的性能,对于机器学习的模型来说,越是复杂的模型,越是拟合的很好,损失也越小,但是当在训练集上,它的方差就越大。所以要我们对模型进行惩罚,就得加入正则项。常用的正则项有如下:
      - L2正则:R(θ)=λ||θ||22=j=1Dθj2
      - L1正则:R(θ)=λ|θ|=j=1D|θ|
      - L0正则:R(θ)=λ||θ||0
下面谈论下正则的必要性:
通过sin曲线进行拟合:
       Y=sin(2πX)+ε
       X服从高斯分布:XUniform[0,1],εN(0,0.32)
 预测模型(M阶多项式):
       y^=j=0Mwjxj(样本是N=10)
       这里我们使用L2损失函数 1Ni=1N(yy^)2
   机器学习笔记(2)机器学习任务的一般步骤
 现在我们需拟合这个函数:
 (1)、0阶多项式拟合:
 y^=w0 ,如下图红线就是该函数,拟合情况不是很好,样本点基本都不在红线附近
 机器学习笔记(2)机器学习任务的一般步骤
 (2)、1阶多项式拟合:
 y^=w0+w1x,拟合情况比0阶好了一点
 机器学习笔记(2)机器学习任务的一般步骤
 (3)、3阶多项式拟合:
 y^=w0+w1x+w2x2,拟合情况比刚刚又好了很多,基本所有的点都落在红线上了
 机器学习笔记(2)机器学习任务的一般步骤
 (4)、9阶多项式拟合:
 y^=w0+w1x+w2x2+w3x3....w9x9。可以看到所有的点都落在红线
 机器学习笔记(2)机器学习任务的一般步骤
 但是,如果新增数据集的话,如下图,A点和B点就不落在红线上。而我们说当预测值和真值之间差异(方差)最小时,该模型才是最佳模型,但是目前看来,该模型在训练集上拟合的很好,误差为0,但是校验集上误差就很大。
 机器学习笔记(2)机器学习任务的一般步骤
上述的现象看出,当模型复杂度增加时,训练误差继续下降,甚至趋向于0,但是测试误差却反而增大了,这种现象我们称之为过拟合(overfitting)。一般的模型都遵从这种规律,当模型复杂度到达某个值后,随着模型越来越复杂,预测值和真值之间的误差就越大:
机器学习笔记(2)机器学习任务的一般步骤
考虑到这种情况,我们就需要增加一个正则项,对模型复杂度进行惩罚,避免出现过拟合的情况,如下图:
机器学习笔记(2)机器学习任务的一般步骤
这里我们是增加了L2正则(当然还可以是其他正则),目标函数(使用L2损失和L2正则,称之为岭回归)如下:
机器学习笔记(2)机器学习任务的一般步骤
有过拟合就有欠拟合,欠拟合是指模型太简单或者对复杂性惩罚太多
常见的线性模型的损失函数和正则项的组合:
机器学习笔记(2)机器学习任务的一般步骤

3、模型训练

模型训练也就是我们的目标函数的优化,也就是对目标函数进行求解。简单的函数直接通过导数求解,对于比较复杂的函数,有凸优化等方式,如随机梯度下降法和牛顿法等
梯度下降法的简单介绍:快速找到局部极小值。将函数比作一座小山,我们站在某个山坡上,望四周看,从哪个 方向往下走,能最快走到底部,就是梯度的方向
    a.给定初始值 θ0
    b.更新θ,使得J(θ)越来越小:
       θt=θt1ηθJ(θ)
    直到收敛到或者达到预先设定的最大迭代数
不过,梯度下降有如下几点需要注意:
(1)、在使用梯度下降的时候,我们需要注意到,如果下降的步伐太小(η学习率)的话,收敛就会很慢,如果太大的话,容易出现overshoot the mininum的现象,如下图:

机器学习笔记(2)机器学习任务的一般步骤
一直来回震荡,得不到收敛。所以在训练时候,如果发现函数值增加的话,需要适当减小学习率eta的值。

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

4、模型选择和评估

同一个问题,可以使用不同的模型去预测,但是最终选择哪个模型,就需要看该模型在新的数据集上的预测误差是否是最小的,那么新的数据集就是校验集。如下所示:
机器学习笔记(2)机器学习任务的一般步骤

通常来讲,我们也无法确定多少数据是足够的,没有一个标准去确定;同时也没有足够的样本给我们训练和校验。所以我们得通过其他技术来对数据集进行划分规划。如可以通过重采样技术来模拟校验集数据,如重采样的两个方式:
(1)、交叉验证
(2)、bootstrap
这里简单介绍交叉验证:
K-折交叉验证:
  交叉验证(Cross Validation ,CV),将训练数据分为容量相等的K份,对于每个k = 1,2,3….K 。留出第k份,其他K-1份作为训练数据,第k份为校验数据,作为预测误差的数据集。交叉验证估计的误差为:
        CV(M)=1Kk=1KEk(M)
对于不同的模型,计算其对于的误差CV(M),最佳模型为CV(M)最小的模型。模型复杂度和泛化误差的关系通常是U型曲线,如下图,当模型复杂度一定是,得到预测值与真值之间的误差最小,那么这个复杂度就是我们需要的模型复杂度:
机器学习笔记(2)机器学习任务的一般步骤
那么通过校验集得到预测结果后,还需要使用如下一些评估标准进行度量预测的拟合效果:
(1)、开平均方误差(rooted mean squared error , RMSE):RMSE=1Ni=1N(yi^yi)2
(2)、平均绝对误差(mean absolute error, MAE):MAE=1Ni=1N|yi^yi|
(3)、R2 score:即考虑预测值和真值之间的差异,也考虑了问题本身真值之间的差异(scikit learn线性回归的缺省评价准则)
        SSres=i=1N(yi^yi)2
        SStot=i=1N(yiy¯)2
        R2=1SSresSStot
所以,R2越大,模型越好。

5、模型预测和应用

当选好模型后,就可以使用该模型在现实中进行应用了。也就是可以上线使用

相关文章:

  • 2021-09-16
  • 2021-09-21
  • 2022-12-23
  • 2021-12-30
  • 2021-12-29
  • 2021-06-13
  • 2022-01-07
猜你喜欢
  • 2021-07-17
  • 2022-12-23
  • 2021-12-03
  • 2021-07-11
  • 2022-01-07
  • 2022-01-24
相关资源
相似解决方案