first week of machine learning on Coursera
@(Coursera)
惯例是,先在Matlab/octava上实现算法原型,确定可用再迁移到其他编译环境。因为Matlab/octava集成了很多机器学习算法和常用的计算,对于算法实现速度很快,而且代码比较简单。
平方误差函数是解决回归问题最常用的代价函数(cost function)。
我们的目的是使我们作出的假设函数hypothesis function最接近于实际的训练集样本点集(x,y),假设函数用h(θ)=θ1x+θ0表示衡量假设函数拟合训练样本的情况是通过代价函数来衡量的,代价函数用J(θ)来表示,J(θ)是θ1和θ0的函数。
所以我们的目的就是找到一组θ1和θ0,使得J(θ)的值最小。
我们使用梯度下降法来寻找θ1和θ0的值。
梯度下降法的直观描述就是,当人在山顶,每次迈出一步长α,他可以选择任意方向来下山,但是需要以最短时间下山。那么肯定选择和自身位置等高线垂直的方向下山,此时正好是梯度下降的方向。
这里的α代表学习速率,也就是下山时的步长。
temp0:=θ0−α∂J(θ0,θ1)∂θ0
temp1:=θ1−α∂J(θ0,θ1)∂θ1
θ0:=temp0
θ1:=temp1
通过梯度下降不断的更新θ0和θ1,知道J(θ)收敛为止。如下图的J(θ)是个凸函数(Convex function)它收敛时为全局最小值。
步长太大可能会导致无法收敛:

线性模型时:
假设函数hθ(xi)=θ1x+θ0
成本函数cost function:J(θ0,θ1)=12m∑mi=1(hθ(xi)−yi)2
这里为什么乘以12m系数呢,乘以1m是使用均方误差来衡量平方误差,这是数理统计中经常使用的方法;乘以12是因为后续对J(θ0,θ1)求导时会多出个2,用12来抵消,是式子看起来更简便。因为我们的目的就是求cost function最小化时的θ0和θ1,前面乘以个系数并不影响。
此时,
Batch:表示步长,也称为学习速率,就是上式中的α.
Vector:an N*1 matrix
矩阵计算:
单位矩阵(Identity matrix):对角线元素为1,其余元素为0的方阵。
矩阵乘法:A×B≠B×A
除非:A×I=I×A
矩阵的逆,当矩阵是个方阵时,m×m,并且矩阵A存在逆矩阵,则满足