Stanford ML - Linear regression with one variable 单变量线性回归

单变量线性回归属于监督式学习。给定训练集,定义下面的变量:

m = Number of training examples
x’s = “input” variable / features
y’s = “output” variable / “target” variable


单变量的回归函数是:


Cost function是:



我们的目标是选取合适的theta0,theta1使h(x)的取值尽可能的接近y - 用平方差来度量。考虑所有的m个输入,这里用cost function J来衡量总的差值。


大学好像学过,可以用梯度下降算法来解,不过都忘了。核心思想是从某个theta0,theta1出发,不断改变他们的取值使J越来越小,直到不能再小为止。听着这意思跟极限有关啊,然后导数等于0就可以了。这也是Normal equation的思想,下一讲里介绍。


梯度下降算法的公式:



把J带进去求偏导,得如下公式:



注意要同时更新theta0和theta1。高数很重要呀,都忘记了的说。线性代数也很重要啊。买本书,随便看看这些概念吧。


梯度下降的每一步都要用所有的训练集数据来计算,感觉是计算密集型算法。具体的实现呢,得用一个循环来迭代计算theta0,theta1,框架如下:

for iter = 1:num_iters

    % ====================== YOUR CODE HERE ======================
    % Instructions: Perform a single gradient step on the parameter vector
    %               theta. 
    %
    % Hint: While debugging, it can be useful to print out the values
    %       of the cost function (computeCost) and gradient here.
    %
    sum = zeros(2, 1);
    for i = 1:m
        delta = X(i,:)*theta - y(i);
        sum(1) = sum(1) + delta;
        sum(2) = sum(2) + delta*X(i,2);
    end
    
    sum = sum .* alpha ./ m;
    theta = theta - sum;

    % ============================================================

    % Save the cost J in every iteration    
    J_history(iter) = computeCost(X, y, theta);
    % fprintf('%f\n', J_history(iter))
end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值