机器学习修炼手册

笔者对机器学习这门课程的学习开始于二年级的《数据挖掘》,当时老师对数据挖掘中的常用的算法做了一些介绍,但这仅仅是个入门教学,我并没有深入了解的其中的原理。到现在笔者深刻的意识到ML的重要性,于是抽空看了一些这方面的资料,整理了这一份文档。

机器学习算法包括,监督学习(回归、分类)以及非监督学习(聚类)。

梯度下降

(1)θj:=θjαθJ(θ)

其中α为学习率一般为很小的数字(0.001-0.1),θ为我们需要求解的参数,J(θ)为能量函数或者为损失函数,通过上述公式可知,梯度下降是沿着损失函数梯度的反方向寻找迭代寻找最优值的过程。梯度下降容易陷入局部最极小点,所以我们要采取一定的措施来阻止这种现象的发生。

过拟合(Overfitting)

如果训练样本的特征过多,我们学习的假设可能在训练集上表现地很好,但是在验证集上表现地就不尽人意

避免过拟合

  • 减少特征的大小
  • 正则化
    • 在保证所有特征都保留的情况下,限制θ的大小,即Small values for parameters θ0,θ1,θ2...θn
    • 当特征量很多时,该方式仍然表现的很好
  • 交叉验证(Cross Validation)

正则化

线性回归

对于线性回归而言,其损失函数形式如下: (2)J(θ)=12mi=1m(hθ(x(i))y(i))2 引入正则化之后的损失函数的形式为: (3)J(θ)=12m(i=1m(hθ(x(i))y(i))2+λj=1nθj2)

GD迭代求解参数

Repeat{ (4)θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i) (5)θj:=θjα1m(i=1m(hθ(x(i))y(i))xj(i)+λθj) }

梯度下降法的学习率α需要提前指定,并且还要制定收敛标准。

Normal Equation

(6)θ=(xTx+λ[000010001](n+1)(n+1))1xTy

上式是对线性回归正则化后的解析解。可以证明的是当λ>0时,求逆符号内部的式子总是可逆的。

逻辑回归

在没有加入正则化之前,逻辑回归的损失函数的形式是这样的:

(7)J(θ)=1mi=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))

加入正则项之后的形式为:

(8)J(θ)=1mi=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))+λ2mj=1nθj2

GD迭代求解参数

Repeat{ (9)θ0:=θ0α1mi=1m(hθ(x(i))y(i))x0(i) (10)θj:=θjα1m(i=1m(hθ(x(i))y(i))xj(i)+λθj) }

SVM支持向量机

支持向量机又被称作最大间距(Large Margin)分类器,损失函数的形式是:

(11)J(θ)=Ci=1m(y(i)cost1(hθ(x(i)))+(1y(i))cost0(hθ(x(i))))+12j=1nθj2

其中:hθ(x(i))=θTxicost1以及cost0的形式如下图所示:

(12){we want θTx1,if y =1we want θTx1,if y =0

在考虑到soft margin时的损失函数是hinge损失,SVM就等价于Hinge损失函数+L2正则。此时损失函数为0时候就对应着非支持向量样本的作用,“从而所有的普通样本都不参与最终超平面的决定,这才是支持向量机最大的优势所在,对训练样本数目的依赖大大减少,而且提高了训练效率”。 以下是七月在线大神July写的一篇关于SVM的介绍,个人觉得不错。分享下:支持向量机通俗导论(理解SVM的三层境界)