您的位置:首页 > 其它

机器学习 第二周 总结 知识点

2017-10-05 20:12 239 查看
第二周重点是梯度下降算法的实现和正规方程,附带的有特征,多项式回归,octave的使用也十分重要



n 代表特征的数量

x(i)代表第 i 个训练实例,是特征矩阵中的第 i 行,是一个向量(vector)。

比方说,上图的



代表特征矩阵中第 i 行的第 j 个特征,也就是第 i 个训练实例的第 j 个特征。 

如上图的



支持多变量的假设 h 表示为: 

这个公式中有 n+1 个参数和 n 个变量,为了使得公式能够简化一些,引入 x0=1,则公式

转化为:  



此时模型中的参数是一个 n+1 维的向量,任何一个训练实例也都是 n+1 维的向量,特

征矩阵 X 的维度是 m*(n+1)。因此公式可以简化为:,其中上标 T 代表矩阵

转置。

多变量梯度下降

与单变量线性回归类似,在多变量线性回归中,我们也构建一个代价函数,则这个代价

函数是所有建模误差的平方和,即: 

其中:

我们的目标和单变量线性回归问题中一样,是要找出使得代价函数最小的一系列参数。

多变量线性回归的批量梯度下降算法为:









我们开始随机选择一系列的参数值,计算所有的预测结果后,再给所有的参数一个新的

值,如此循环直到收敛。

 

 

为更好实现梯度下降,我们要进行特征缩放











在梯度下降算法的实现过程中,还要考虑学习率的选取,梯度下降算法的每次迭代受到学习率的影响,如果学习率α 过小,则达到收敛所需的迭代次数会非常高;如果学习率 α 过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。

通常可以考虑尝试些学习率:α=0.01,0.03,0.1,0.3,1,3,10

 

 

线性回归可能无法应用于所有的回归场景,我们引入多项式回归

注:如果我们采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。

 

在多项式回归中,我们可能通过赋值将多项式回归转换成线性回归,例如



对于某些问题而言,正规方程是一个很好的解决方法,此时我们使用正规方程而不是用梯度下降

正规方程是通过求解下面的方程来找出使得代价函数最小的参数的



假设我们的训练集特征矩阵为 X(包含了 x0=1)并且我们的训练集结果为向量 y,则利用正规方程解出向量



上标 T 代表矩阵转置,上标-1 代表矩阵的逆。设矩阵 A=XTX,则:(XTX)-1=A-1




 

在 Octave 中,正规方程写作

pinv(X'*X)*X'*y

注:正规方程无法用于不可逆的矩阵

第五章主要讲octave的使用,这是需要熟记的内容(实践操作,注意平时要多练习)

默认情况下

max(A)返回的是每一列的最大值,如果你想要找出整个矩阵 A 的最大值,你可以输入

max(max(A)),或者你可以将 A 矩阵转成一个向量,然后键入max(A(:)),这样做就是把 A 当

做一个向量,并返回 A 向量中的最大值

 

prod 意思是 product(乘积),它将返回元素的乘积。

floor(a) 是向下四舍五入,因此对于 a 中的元素 0.5 将被下舍入变成 0。

还有 ceil(a),表示向上四舍五入,所以 0.5 将上舍入变为最接近的整数,也就是 1。

 

假如我输入 max(A,[],1),这样做会得到每一列的最大值。

相对地,如果我键入 max(A,[],2),这将得到每一行的最大值

sum(A,1),这样就得到每一列的总和,

求每一行的和,键入 sum(A,2),这样就得到了 A 中每一行的和

flipup/flipud 表示向上/向下翻转。

 

plot(t, y1),得到正弦函数,我使用函数 hold on,hold on 函数 的功能是将新的图像绘制在旧的之上

我现在绘制 y2,输入:plot(t, y2)。

我要以不同的颜色绘制余弦函数,所以我在这里输入带引号的 r 绘制余弦函数,r 表示

所使用的颜色:plot(t, y2,’r’),再加上命令 xlabel('time'),来标记 X 轴即水平轴,输入

ylabel('value'),来标记垂直轴的值。

 

同时我也可以来标记我的两条函数曲线,用这个命令 legend('sin', 'cos')将这个图例放在

右上方,表示这两条曲线表示的内容。最后输入 title('myplot'),在图像的顶部显示这幅图的

标题。

 

如果你想保存这幅图像,你输入 print –dpng 'myplot.png',png 是一个图像文件格式,如

果你这样做了,它可以让你保存为一个文件。

Octave 也可以保存为很多其他的格式,你可以键入help  plot。

最后如果你想,删掉这个图像,用命令 close 会让这个图像关掉。

 

subplot 命令,我们要使用subplot(1,2,1),它将图像分为一个 1*2 的格子,也就是前两

个参数,然后它使用第一个格子,也就是最后一个参数 1 的意思。

 

最后一个命令,你可以改变轴的刻度,比如改成[0.5 1 -1 1],输入命令:axis([0.5 1 -1 1])

也就是设置了右边图的 x 轴和 y 轴的范围。具体而言,它将右图中的横轴的范围调整至 0.5到 1,竖轴的范围为-1 到 1。

 

 

如果指令后面是;而不是,  则不会输出任何信息。逗号在octave中可以看到函数调用

 

可以通过设置你的 indices (索引) 等于 1 一直到 10,来做到这一点。这时

indices 就是一个从 1 到 10 的序列。

你也可以写 i = indices,这实际上和我直接把 i 写到 1 到 10 是一样。你
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: