本文主要记录线性回归、逻辑回归和神经网络算法的基本思想及用实现过程。
简单回顾:
机器学习的主要组成部分:输入、算法、输出、训练集;核心思想:通过训练集数据优化算法的参数,以提升对未知输入的输出预测精度。这一算法优化过程被形象的描述为学习。
一、最基础的机器学习就是线性回归和逻辑回归了。
1.线性回归
输入(features):
x1,x2,...,xn
假设函数(hypothesis function):
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
误差函数(cost function):
J(θ)=12m∑i=1n(hθ(xi)−yi)2
为使误差函数值最小,用梯度下降(gradient descent)多次迭代计算合适的 θi :
θi=θi−α∂∂θiJ(θ)
即
θj=θj−α1m∑i=1n(yi−hθ(xi))x(i)j
由于不同的特征值(输入)取值范围趋于一致时可以加快梯度递减,所以可以对特征值进行适当缩放或标准化:
x=x−us
2.逻辑回归
逻辑回归亦可称为分类问题。首先从简单的二元逻辑回归入手,即输出
y={0,1}
可以看做是线性回归基础上的变异,用sigmoid函数
hθ(x)=11+eg(z)
对线性回归的输出估计值进行了归一化处理,
hθ(x)∈(0,1)
。
误差函数的形式与线性回归的不同,但是思想还是一致的,
J(θ)=−1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
计算合适的 θi 用的还是上面相同的梯度下降法。
过拟合的问题:训练完的算法对训练集中的数据预测过于精准,使得函数对未知的输入出现较大的预测误差。
解决方法:正则化
正则化的线性回归:
J(θ)=12m ∑i=1m(hθ(x(i))−y(i))2+λ ∑j=1nθ2j
Repeat { θ0:=θ0−α 1m ∑i=1m(hθ(x(i))−y(i))x(i)0 θj:=θj−α [(1m ∑i=1m(hθ(x(i))−y(i))x(i)j)+λmθj]} j∈{1,2...n}
正则化的逻辑回归:
J(θ)=−1m∑i=1m[y(i) log(hθ(x(i)))+(1−y(i)) log(1−hθ(x(i)))]+λ2m∑j=1nθ2j
3.神经网络算法
神经网络算法虽然称得上是非线性算法,但是究其局部而言还是运用了线性回归的思维方式。
误差函数:
J(Θ)=−1m∑i=1m∑k=1K[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θ(l)j,i)2
实现步骤:
(1)为初始的权重赋以随机化的值
(2)用前向传递算法计算 hΘ(x(i))
(3)计算误差函数 J(Θ)
(4)用后向传递算法计算偏导 ∂∂Θ(l)jkJ(Θ)
(5)用梯度下降或者其他高级算法计算使得 J(Θ) 最小化的权重 Θ