ML(machine learning)_course_吴恩达课程__编程练习(一)

NG的ex1.PDF就不发上来了。

假设、代价函数与梯度下降的由来

(一)Hypothesis

现在我们有一只大象,要把它放进冰箱,只需要三步~

    现在我们需要使用一组数据找出某种规律,在最简单的情况下,我们认为这个规律是符合一元一次方程的,所以给出一个假设(Hypothesis)如上图。

    其中,x1是自变量,h(x)是因变量,而theta0与theta1就是需要找到的规律。
    在有了假设后,按照正常人的想法,当然是用不同的theta去尝试了,但是这个过程非常漫长,效率太低,按照这个思路,我们假设已经有可以自动变化的theta,那么现在还缺少什么呢?缺少评估X*θ与y的“偏差”的方法。
    这个方法就是cost function。

(二)Cost function

    事实上这是平方损失函数(quadratic loss function),至于为什么是平方,为什么必须是除以2*m(以后单开一个文章聊聊这个)
     现在要知道的是:我们需要这个J(θ)的值尽可能的小。

(三)Gradient Descent

     有些机灵鬼可能已经看出来了,这实际上是对J(θ)的求偏导,其中,alpha是梯度下降的“步长”,求导后的值是“方向”。
     值得注意的是,对于θ的更新应该是一个原子操作,即不执行则已,要执行必须一次更新完所有θ。对于梯度下降的例子,可以举一个一元二次方程来介绍,类似NG那种,在这里不多赘述。

(四)Linear Regression

 plotdata.m内容:
    plot(x,y,'rx','MarkerSize',10);
    xlabel('面积');
    ylabel('price');


 computecost.m内容:
    number=X*theta-y;
    J=transpose(number)*number
    J=J/(2*m);


 gradientDescent.m内容:
     theta=theta-(transpose(transpose(X*theta-y)*X*alpha*(1/m)));


 computeCostMulti.m内容:
     J=(((X*theta-y)/(2*m))')*(X*theta-y);


 gradientDescentMulti.m内容:
     theta=theta-(alpha/m)*((((X*theta-y)')*X)');


 ex1_multi.m中预测内容:
      price = [ones(1,1) (([1650,3]-mu)./sigma)]*theta;

panda

继续阅读此作者的更多文章