由于毕设是关于机器学习的,所以有在学习一些关于机器学习的内容。
起步是先看Andrew ng 的视频,这一周的总结如下。
首先,机器学习分为监督学习和非监督学习。
而我的理解是监督学习是有标准的,即你可以对你的结果以他之前的一些数据作为标准进行判断,所谓监督。监督问题也分为分类和回归问题。分类即结果是一些离散值,回归问题是结果是一些连续值。
对于非监督学习即是给出一些数据集,您能找到他们的结构吗,即并没有所谓的标准,分为聚类和非聚类问题。
最开始是接触线性回归。
training set-->learning algorithm
input-->hypothesis-->output
m个训练例子,x(input)即是特征或者变量,y(output)为目标变量,一般来说X可以一个或者多个。
先来讨论一个x的情况:
h(x) = θ0 + θ1*x;
cost function J(θ) = 1/2m*∑(h(xi)-yi)2 (i-->1:m)
找到 θ0和θ1使得J(θ)最小。当这两值都不为0时,可以得到一三维曲面。
使J(θ)最小,我们可以使用gradient descent 的方法:
θj := θj - α*?/?θjJ(θ0,θ1) 同步更新每个θ
α为学习率,确定步子迈多大。
然后对于多特征(多x)的相应内容:
然后一些对于线性代数的知识的回顾。矩阵与向量,矩阵的转置,求逆之类的。矩阵的乘法不满足交换律和消去律。
X为一矩阵,m位训练例数,n为特征数,Xj(i)为在第i个训练例中的特征j 的值,X(i)为在第i个训练例中所有的特征的值,为一列值
h(x) = θ0 + θ1*x1+θ2*x2+θ3*x3+....+θn*xn;
所以我们在x的最开始加全是1的一行,来达到h(θ) = θT*X的效果。
在实行gradient descent 的方法时,我们以以下公式同步更新:
θj := θj - α*(1/m)∑(hθ(x(i))-y(i))xj(i) (i-->1:m)
- 对于特征范围不一的问题,我们可以用 feature scaling,即特征缩放的方法来解决。
mean normalization:
x1 <--(x1-avg)/range
而且还有区别于gradient descent的方法来求最终θ值
Normal Equation(正规方程):
直接得到θ值。
θ = (XTX)-1XTy(当n大(n>10000)时不适用,时间消耗太大)
特征处理:删除多余或者无用特征
以及Octave的使用