first week of machine learning on Coursera

来源:互联网 发布:centos修改ip地址 编辑:程序博客网 时间:2024/06/18 16:59

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的值。
梯度下降法的直观描述就是,当人在山顶,每次迈出一步长α,他可以选择任意方向来下山,但是需要以最短时间下山。那么肯定选择和自身位置等高线垂直的方向下山,此时正好是梯度下降的方向。

θj=θjαJ(θ0,θ1)θj(forj=0andj=1)

这里的α代表学习速率,也就是下山时的步长。
temp0:=θ0αJ(θ0,θ1)θ0
temp1:=θ1αJ(θ0,θ1)θ1
θ0:=temp0
θ1:=temp1
通过梯度下降不断的更新θ0θ1,知道J(θ)收敛为止。如下图的J(θ)是个凸函数(Convex function)它收敛时为全局最小值。
步长太大可能会导致无法收敛:
![Alt text](./屏幕快照 2017-09-23 下午7.14.33.png)


线性模型时:
假设函数hθ(xi)=θ1x+θ0
成本函数cost function:J(θ0,θ1)=12mmi=1(hθ(xi)yi)2
这里为什么乘以12m系数呢,乘以1m是使用均方误差来衡量平方误差,这是数理统计中经常使用的方法;乘以12是因为后续对J(θ0,θ1)求导时会多出个2,用12来抵消,是式子看起来更简便。因为我们的目的就是求cost function最小化时的θ0θ1,前面乘以个系数并不影响。
此时,

θ0:θ0αddθ0J(θ0)=θ0α1mi=1m(hθ(xi)yi)

θ1:θ1αddθ1J(θ1)=θ1α1m(hθ(xi)yi)xi

Batch:表示步长,也称为学习速率,就是上式中的α.


Vector:an N*1 matrix
矩阵计算:
单位矩阵(Identity matrix):对角线元素为1,其余元素为0的方阵。

I=100010001

矩阵乘法:A×BB×A
除非:A×I=I×A
矩阵的逆,当矩阵是个方阵时,m×m,并且矩阵A存在逆矩阵,则满足
A×A1=A1×A=I