ML编程作业: Logistic Regression

matlab编写,要求难度从低到高。填代码不难。
主要理解损失函数(假设 - y 的MSE),相比linear regression,逻辑回归的假设是在外面套了个sigmoid函数,使得theta’*X的范围变成(0, 1),然后可以让>=0.5的X(i)的预测的y为1。否则为0。
这里写图片描述
因为y取值只有0 或 1,将两种取值的式子合并起来就是损失方程了。

逻辑回归的正则化是防止过拟合的,在损失方程后+**除theta0以外的参数平方***lambda。
这是使得参数越接近0。至于参数越接近0,越减少过拟合(我理解是这样),看视频吧。theta0对应的x0是常数1,所以要去掉theta0。

sigmoid(z)

f = @(x) 1/(1 + exp(-x));
g = arrayfun(f, z);

costFunction(theta, X, y)

hyp_ins = sigmoid(X * theta);

pos_part = -1 * log(hyp_ins);% m-by-1
zero_part = -1 * log(1 - hyp_ins);

J = sum(pos_part.*y + zero_part.*(1 - y)) / m;

for i = 1 : size(theta)
    grad(i) = sum((hyp_ins - y).* X(:, i))/m;

end

predict(theta, X)

mysig = sigmoid(X * theta);
p(mysig >= 0.5) = 1;
p(mysig < 0.5) = 0;

ex2_reg
costFunctionReg(theta, X, y, lambda)

hyp_ins = sigmoid(X * theta);

pos_part = -1 * log(hyp_ins);% m-by-1
zero_part = -1 * log(1 - hyp_ins);

J = sum(pos_part.*y + zero_part.*(1 - y)) / m;
regress = lambda * sum(theta(2:end).* theta(2:end)) / (2*m);% 除theta0
% 2:end这一步注意
J = J + regress;

for i = 1 : size(theta)
    if i == 1
        grad(i) = sum((hyp_ins - y).* X(:, i))/m;
    else
        grad(i) = sum((hyp_ins - y).* X(:, i))/m  + lambda * theta(i, 1)/m;
    end
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值