斯坦福机器学习笔记-Lecture 1,2

来源:互联网 发布:手机玩lol软件 编辑:程序博客网 时间:2024/04/30 12:25

1. 知识点

1. 监督学习

指提前知道数据集以及正确答案,预测新数据对应的答案。

2. 无监督学习

未知正确答案,对已有的数据进行分类。

3. 线性回归

一种常见的学习方法。主要方法为设目标变量为已知feature的线性函数,并使其代价最小。
公式:
单变量

h(x)=θ0+θ1x

多变量向量形式
h(X)=Xθ

在外文文献中,向量往往是列向量。在对矩阵进行索引时,会先说行号再说列号。而且通常认为矩阵的一列是一个向量。因此一个m*n的矩阵也可看作n个m维向量。机器学习中维度分析非常重要,熟练掌握可以简化编程步骤。
代价函数
J(θ)=12mΣi=mi=1(h(x)(i)y)2

这里最前面除的2是一种约定,目前我还不清楚这样做的意义。有可能是为了下一步的求导将2约掉从而简化梯度下降时的计算复杂度?
多变量形式
J(θ)=12m(Xθy)T(Xθy)

机器学习中,常用h(hypothesis)来表示预测函数,使用J来代表代价函数,使用m代表样本数量,n代表特征数量。上标表示第i个样本,下标则表示第j种特征
如果直线不能很好的拟合数据,可以选择加入x2,x等。应注意观察点的分布。

4. 梯度下降

θ:=θαmXT(Xθy)

α为学习率,选取太小会导致收敛过慢,选取太大会导致不收敛。应结合代价图确定取值。

5. 正则方程

θ=(XTX)1XTY

正则方程虽然不需要迭代,但是当出现成千上百的特征时,正则方程会带来O(n3)的复杂度,此时就不如梯度下降法(O(n))了。

6. 向量化编程

吴老师一直在强调为什么要用matlab完成作业,因为使用matlab能帮我们节省大量的时间。而且matlab内部对矩阵乘法做了大量优化,因此一个算法使用循环写出来和直接做向量乘法之间的效率有天壤之别。在编程中应注意尽可能把循环转化为向量。

附录:第二章编程作业答案(仅供参考)

https://github.com/SilverBulletmdc/stanford_ml_ex/tree/master/machine-learning-ex1/ex1

0 0
原创粉丝点击