Code Monkey home page Code Monkey logo

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

第十二章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的转置

笔记纠错

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

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

关于 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)

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

翻译问题[第六周 11.5]

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


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

导出为 epub

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

可以提供个epub文件

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

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 ?

错误纠正帖

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

Markdown中数学公式中的中括号

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

查全率公式

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

4.7正规方程推导的问题

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

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

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

PDF笔记笔误

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

little typo

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

练习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笔记中一些部分偏简

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

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

能否转载

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

请教一个问题

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

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}}$是标准差或范围。

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的话偏置单元不就没有意义了吗?求大佬解惑~

内容缺少

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

ex1中正则化问题

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

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.