Giter VIP home page Giter VIP logo

coursera-ml-andrewng-notes's Introduction

斯坦福大学2014(吴恩达)机器学习教程中文笔记

课程地址:https://www.coursera.org/course/ml

笔记在线阅读

Machine Learning(机器学习)是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演译。在过去的十年中,机器学习帮助我们自动驾驶汽车,有效的语音识别,有效的网络搜索,并极大地提高了人类基因组的认识。机器学习是当今非常普遍,你可能会使用这一天几十倍而不自知。很多研究者也认为这是最好的人工智能的取得方式。在本课中,您将学习最有效的机器学习技术,并获得实践,让它们为自己的工作。更重要的是,你会不仅得到理论基础的学习,而且获得那些需要快速和强大的应用技术解决问题的实用技术。最后,你会学到一些硅谷利用机器学习和人工智能的最佳实践创新。

本课程提供了一个广泛的介绍机器学习、数据挖掘、统计模式识别的课程。主题包括:

(一)监督学习(参数/非参数算法,支持向量机,核函数,神经网络)。

(二)无监督学习(聚类,降维,推荐系统,深入学习推荐)。

(三)在机器学习的最佳实践(偏差/方差理论;在机器学习和人工智能创新过程)。本课程还将使用大量的案例研究,您还将学习如何运用学习算法构建智能机器人(感知,控制),文本的理解(Web搜索,反垃圾邮件),计算机视觉,医疗信息,音频,数据挖掘,和其他领域。

本课程需要10周共18节课,相对以前的机器学习视频,这个视频更加清晰,而且每课都有ppt课件,推荐学习。

本人2014年下半年开始翻译本课程字幕,并写了课程的中文笔记。笔记被下载了几万次,应该帮助了不少人,也有很多人一直在帮助我,现在我把笔记的word原稿和markdown原稿分享给大家。

markdown的笔记和课程中英文字幕我将放在github,希望大家能继续完善。为方便数学公式的在线显示,在线观看的是html文件,公式已经被转为图片,公式源码在markdown文件。

最后想对各位朋友说: 赠人玫瑰,手有余香! 在人工智能的道路上,你不是一个人在战斗!

黄海广

2018-3-26 夜

微信公众号:机器学习初学者 gongzhong 我的知乎

参考:

  1. https://www.coursera.org/course/ml 机器学习公开课

  2. https://mooc.guokr.com/note/12/ 小小人_V 的个人笔记

  3. 《统计学习方法》李航

  4. 《机器学习课》邹博

备注:吴恩达老师的深度学习课(deepLearning.ai)的笔记地址:https://github.com/fengdu78/deeplearning_ai_books


文件夹说明:

docx:笔记的word版本

markdown:笔记的markdown版本

html:笔记的html版本

images:笔记的图片

ppt:课程的原版课件

srt:课程的中英文字幕(mp4文件需要在百度云下载,大家可以用记事本或者字幕编辑软件来编辑字幕,共同完善。

百度云链接:https://pan.baidu.com/s/1h8QjqBlOm0Exh7orm9teMQ 密码:d3we,下载后解压)

code:课程的python代码

机器学习课程视频:https://www.bilibili.com/video/BV1W34y1i7xK

笔记在线阅读

笔记pdf版本下载 :见Github根目录。

机器学习qq群:955171419(我们有13个群,加过一个就不需要加了)


机器学习教程中文笔记目录

一、 引言(Introduction)

1.1 欢迎

1.2 机器学习是什么?

1.3 监督学习

1.4 无监督学习

二、单变量线性回归(Linear Regression with One Variable)

2.1 模型表示

2.2 代价函数

2.3 代价函数的直观理解I

2.4 代价函数的直观理解II

2.5 梯度下降

2.6 梯度下降的直观理解

2.7 梯度下降的线性回归

2.8 接下来的内容

三、线性代数回顾(Linear Algebra Review)

3.1 矩阵和向量

3.2 加法和标量乘法

3.3 矩阵向量乘法

3.4 矩阵乘法

3.5 矩阵乘法的性质

3.6 逆、转置

四、多变量线性回归(Linear Regression with Multiple Variables)

4.1 多维特征

4.2 多变量梯度下降

4.3 梯度下降法实践1-特征缩放

4.4 梯度下降法实践2-学习率

4.5 特征和多项式回归

4.6 正规方程

4.7 正规方程及不可逆性(选修)

五、Octave教程(Octave Tutorial)

5.1 基本操作

5.2 移动数据

5.3 计算数据

5.4 绘图数据

5.5 控制语句:forwhileif语句

5.6 向量化 88

5.7 工作和提交的编程练习

六、逻辑回归(Logistic Regression)

6.1 分类问题

6.2 假说表示

6.3 判定边界

6.4 代价函数

6.5 简化的成本函数和梯度下降

6.6 高级优化

6.7 多类别分类:一对多

七、正则化(Regularization)

7.1 过拟合的问题

7.2 代价函数

7.3 正则化线性回归

7.4 正则化的逻辑回归模型

第八、神经网络:表述(Neural Networks: Representation)

8.1 非线性假设

8.2 神经元和大脑

8.3 模型表示1

8.4 模型表示2

8.5 样本和直观理解1

8.6 样本和直观理解II

8.7 多类分类

九、神经网络的学习(Neural Networks: Learning)

9.1 代价函数

9.2 反向传播算法

9.3 反向传播算法的直观理解

9.4 实现注意:展开参数

9.5 梯度检验

9.6 随机初始化

9.7 综合起来

9.8 自主驾驶

十、应用机器学习的建议(Advice for Applying Machine Learning)

10.1 决定下一步做什么

10.2 评估一个假设

10.3 模型选择和交叉验证集

10.4 诊断偏差和方差

10.5 正则化和偏差/方差

10.6 学习曲线

10.7 决定下一步做什么

十一、机器学习系统的设计(Machine Learning System Design)

11.1 首先要做什么

11.2 误差分析

11.3 类偏斜的误差度量

11.4 查准率和查全率之间的权衡

11.5 机器学习的数据

第7周

十二、支持向量机(Support Vector Machines)

12.1 优化目标

12.2 大边界的直观理解

12.3 数学背后的大边界分类(选修)

12.4 核函数1

12.5 核函数2

12.6 使用支持向量机

十三、聚类(Clustering)

13.1 无监督学习:简介

13.2 K-均值算法

13.3 优化目标

13.4 随机初始化

13.5 选择聚类数

十四、降维(Dimensionality Reduction)

14.1 动机一:数据压缩

14.2 动机二:数据可视化

14.3 主成分分析问题

14.4 主成分分析算法

14.5 选择主成分的数量

14.6 重建的压缩表示

14.7 主成分分析法的应用建议

十五、异常检测(Anomaly Detection)

15.1 问题的动机

15.2 高斯分布

15.3 算法

15.4 开发和评价一个异常检测系统

15.5 异常检测与监督学习对比

15.6 选择特征

15.7 多元高斯分布(选修)

15.8 使用多元高斯分布进行异常检测(选修)

十六、推荐系统(Recommender Systems)

16.1 问题形式化

16.2 基于内容的推荐系统

16.3 协同过滤

16.4 协同过滤算法

16.5 向量化:低秩矩阵分解

16.6 推行工作上的细节:均值归一化

十七、大规模机器学习(Large Scale Machine Learning)

17.1 大型数据集的学习

17.2 随机梯度下降法

17.3 小批量梯度下降

17.4 随机梯度下降收敛

17.5 在线学习

17.6 映射化简和数据并行

十八、应用实例:图片文字识别(Application Example: Photo OCR)

18.1 问题描述和流程图

18.2 滑动窗口

18.3 获取大量数据和人工数据

18.4 上限分析:哪部分管道的接下去做

十九、总结(Conclusion)

19.1 总结和致谢


机器学习qq群:955171419(我们有13个群,加过一个就不需要加了)

coursera-ml-andrewng-notes's People

Contributors

chandlercjy avatar dufanyin avatar fengdu78 avatar ir1d avatar junxnone avatar kaiyuwei avatar leodrliu avatar liam-yang avatar ringotc avatar wbychn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

coursera-ml-andrewng-notes's Issues

little typo

in chapter 6.5
“这将我们将得到某个参数” should be replace “这将使我们将得到某个参数” or “这样我们将得到某个参数”

多变量线性回归部分笔记前后不一致

word第45页增加内容中“其中X为m行n列矩阵”应为“其中X为m行n+1列矩阵”(第36页末尾提到过这一点),同时这一段后面也应相应修改X与theta的维度

内容缺少

后面17 18还没有,是因为之前的视频就没有吗

Markdown中数学公式中的中括号

大佬,我注意到在Markdown里的数学公式中的中括号都是直接使用的键盘上的 [ 和 ] ,这样的效果不太好,建议使用 \left[\right] 这样的中括号会比较高大美观 [手动狗头]

ex4-NN back propagation 中,反向传播偏置单元的参数为0吗?

fun: 0.31677973007087407
jac: array([ -4.85498059e-05,   1.52435475e-09,  -2.42237461e-08, ...,
       5.36244893e-05,   5.82601644e-05,   7.84943560e-05])
message: 'Max. number of function evaluations reached'
  nfev: 400
   nit: 28
status: 3
success: False
     x: array([  0.00000000e+00,   7.62177373e-06,  -1.21118731e-04, ...,
      -1.12048523e+00,  -1.00430109e+00,   1.42107038e+00])

这里x中的array就是最后得到的theta值吧?第一个是0的话偏置单元不就没有意义了吗?求大佬解惑~

week2.md

4.3 梯度下降法实践1-特征缩放
最简单的方法是令:${{x}{n}}=\frac{{{x}{n}}-{{\mu}{n}}}{{{s}{n}}}$
应为
${{x}{n}}=\frac{{{x}{n}}-{{\mu}{n}}}{{{s}{n}}}$,其中 ${\mu_{n}}$是平均值,${s_{n}}$是标准差或范围。

能否转载

请问 笔记能否转载到我的公众号,我会指明来处和链接

PDF笔记中一些部分偏简

“4.4 梯度下降法实践 2-学习率 ” 在视频中吴恩达老师谈及了不少的关于学习率的很好的处理细节,但是pdf笔记中有些简单掠过或者省略不提,当然自己可以记笔记补充上去,不过希望后期可以在pdf笔记中增加,造福别人(初学者)哈哈。下面是我认为比较重要的细节,但是笔记中好像没有怎么提到。

  1. 视频中举例了两幅很好的反例图说明了什么情况下我们需要降低学习率;
    2.视频中提及一个重要事实:数学家已经证明,只要学习率足够小,则每次迭代之后代价函数都会减少;
    3.如何尝试不同的学习率?吴恩达老师的方式是“3倍间隔法”;
    4.如何选取合适的学习率?绘制代价函数随迭代次数变化的曲线,选取使得代价函数“快速下降”
    的学习率作为当前问题合适的学习率。

错误纠正帖

笔记错误的地方请在这里跟帖,我修改好了也会在这里跟帖。
错误格式:笔记版本+页码+错误的地方,并附上修改的地方。
谢谢大家!

4.7正规方程推导的问题

你好老哥,感谢你整理这些资料所做的贡献。在看正规方程推导过程中的时候有个疑问,由image推导到
image
这里的时候,分母上是否还应该加上 m?虽然不影响最后的结果,但是看推导过程的时候会有些疑问。

ex1中正则化问题

多变量线性回归-特征归一化部分,data2 = (data2 - data2.mean()) / data2.std() 代码应改为data2 = (data2 - data2.mean()) / data2.std(ddof=0)吧

grandient函数定义疑问

在 code 的1.linear_regreesion_v1.ipynb文件中, 关于 grandient 函数的定义不明白?

def gradient(theta, X, y):
    m = X.shape[0]

    inner = X.T @ (X @ theta - y)  # (m,n).T @ (m, 1) -> (n, 1),X @ theta等价于X.dot(theta)

    return inner / m

为什么是 inner = X.T @ (X @ theta - y)?
我看方程的定义是:
image

为啥不是 inner = (theta.T @ X -y) @ X ?

PDF笔记笔误

PDF版笔记P67
“接下来一个操作,让我们把A设为 A = [A, [100, 101, 102]]”
应改为:
“接下来一个操作,让我们把A设为 A = [A, [100; 101; 102]]”
感谢您做出的贡献。

请教一个问题

您好,我是新手。我在网易云课堂上面学习吴恩达老师的课程。有用到一些数据的文件,请问您知道在哪里可以下载吗

翻译问题[第六周 11.5]

我觉得关键的测试:首先,一个人类专家看到了特征值 $x$,能很有信心的预测出$y$值吗?因为这可以证明 $ y$ 可以根据特征值$x$被准确地预测出来。其次,我们实际上能得到一组庞大的训练集,并且在这个训练集中训练一个有很多参数的学习算法吗?如果你不能做到这两者,那么更多时候,你会得到一个性能很好的学习算法。


最后一句,看英文我也没太明白,我觉得是[1同时做到这两点],[2才会得到一个好算法]。 但是对1取反,怎么结果还是2?

导出为 epub

epub 文件在移动设备上体验会好很多

可以提供个epub文件

或者提供导出为epub 文件的方法

练习8【推荐电影与示例不同】的原因

首先,十分感谢你分享的python版参考答案!每次自己写完,再看看你的思路,总有新的收获。

我注意到比较大的问题是(练习8末尾你自己也提到了)——“推荐的电影实际上并不符合练习文本中的内容”。这其实是Y值的normalization导致的,而吴老师在课上也没有提到这个问题(实际上他自己也算错了)。

Normalize可以形象地理解为“大众审美”:一部电影的评分用户越少,则其feature就越未知(最终求得x趋近于0),则对于任意用户,无论其对各feature的喜好(theta)如何,ta对该电影的可能评分更趋近于平均分(x * theta + Ymean ≈ 0 + Ymean ≈ Ymean)。但现实中,很多电影的评分人数极少,平均分则容易出现极端值;比如Star Kid (1997),三人评分为5,平均分高达5。于是在大多数情况下,协同过滤会预测Star Kid评分为5,于是它被列为最推荐的电影(在本题的条件下,求得x * theta = 0.00000028532343,所以最终结果甚至大于5)。

为了避免这种“少数代表多数”的错误,我们可以设定:当某部电影的评分总人数(R[i, :])小于某值L时,不对它进行normalize处理,即Ymean=0。预测评分x * theta + Ymean ≈ 0 + 0 ≈ 0。现实意义可理解为——由于观看人数不足,完全不推荐。

另外值得一提的是,随着电影评分人数增加,其feature越可知,即便人数低于L、使Ymean=0,但由于算法求得的x不再全部趋于0,对于有足够评分的用户(theta也不全趋于0),有可能预测评分x * theta + Ymean > 0。这意味着,我们并不是把所有评分人数不够的电影都预测为0分,而只是相对于那些评分人数足够多的电影,我们不推荐它们。

还有一种思路是,设[(每个用户的平均评分)的平均值]为评分不足人数的电影的平均评分(当用户评分电影过少时,其Ymean可记为0),来代替将Ymean“简单粗暴”地设为0。但这种方法并不影响评分人数足够多的电影的预测评分,因此不赘述。

最后提一个很有意思的点。在吴老师的作业模板里,尽管他通过“[Ynorm, Ymean] = normalizeRatings(Y, R);”计算了Ynorm,但在训练时使用 fmincg计算theta时使用的却是Y!这样算下来的x * theta本身就可能是一个较为合理预测值了,再加上Ymean,导致出现预测评分高达8、9的情况(不难分析,预测评分大概率是1-5分间的值)。

附上我的结果(n=10,maxiter=100):
Predicted rating 4.6 for Star Wars (1977)
Predicted rating 4.6 for Shawshank Redemption, The (1994)
Predicted rating 4.5 for Schindler's List (1993)
Predicted rating 4.5 for Raiders of the Lost Ark (1981)
Predicted rating 4.5 for Usual Suspects, The (1995)
Predicted rating 4.5 for Titanic (1997)
Predicted rating 4.4 for Close Shave, A (1995)
Predicted rating 4.4 for Wrong Trousers, The (1993)
Predicted rating 4.4 for Empire Strikes Back, The (1980)
Predicted rating 4.4 for Braveheart (1995)

查全率公式

pdf版本,第六周,11.5节,117页,图片下面的一句话“这些趋势非常明显首先大部分算法”中间缺一个标点符号。
改了之后麻烦把这个issue关掉吧,我之前没有看到有专门的反馈小错误的issue。

笔记纠错

6.1 分类问题
我们将因变量(dependent variable)可能属于的两个类分别称为负向类(negative class)
和正向类(positive class)

在医学上,negative是阴性,positive是阳性。阴性表示良性(Benign),阳性表示恶性(Malignant)
更正:阴性类(negative class)和阳性类(positive class)

第十二章SVM笔记中的几处错误

最近在学习SVM,把笔记V5.32中SVM这一章的内容通读了一遍,发现了下面几处小错误,希望作者有时间能够修复这些错误。

  • P174:第二段,我们同样可以看到,当z增大时,也就是相当于θTx增大时,z对应的值会变得非常小。不是z的值变得非常小,而应该是代价函数的值变得非常小。

  • P178:倒数第二段中,反之,如果y = 0,我们观察一下,函数cost0(z),它只有在z <= 1的区间里有函数值为0。不是z <= 1,而应该是z <= -1

  • P186:第二段,这个θTx(i) > = 1 或者θTx(i) < -1的,约束是可以被p(i).x >= 1这个约束所代替的。不是p(i).x >=1而应该是p(i).||θ||

  • P190:第四段中,得到hθ(x) = f1 + f2 + … + fn,应该是hθ(x) = (theta1)f1 + (theta2)f2 + ... + (thetan)fn

ML-Exercise1中的代码有误

image
这一步计算代价函数的时候,应该减y的转置

image
这一步计算梯度下降的时候,也应该减y的转置

关于 ex2-logistic-regression 最后应该是 / 而不是 % 吧

In [37]:

theta_min = np.matrix(result2[0])
predictions = predict(theta_min, X2)
correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b) in zip(predictions, y2)]
accuracy = (sum(map(int, correct)) % len(correct))
print ('accuracy = `{0}%'.format(accuracy))

在第四行的 len(correct) 的前面 % 应该是 /
而且 我用 / 的时候 与您之后的

model = linear_model.LogisticRegression(penalty='l2', C=1.0)
model.fit(X2, y2.ravel())
model.score(X2, y2)

结果一致 您看一下是否有问题呢
感谢您的无私帮助

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.