机器学习之线性回归

设线性回归的训练集为
T = [ X ∣ Y ] T = [X|Y] T=[XY]
其中 X ∈ R m × p X \in R^{m \times p} XRm×p, Y ∈ R m × 1 Y\in R^{m \times 1} YRm×1, m为训练集的样本个数,p为样本特征数。
作线性回归,设其回归模型为
h i ( X ) = [ 1 , x 1 ( i ) , x 2 ( i ) , ⋯   , x p ( i ) ] ⋅ [ θ 0 , θ 1 , θ 2 , ⋯   , θ p ] T = X ( i ) θ h_i(X) = [1,x_1^{(i)},x_2^{(i)},\cdots,x_p^{(i)}]\cdot[\theta_0,\theta_1,\theta_2,\cdots,\theta_p]^T = \mathbf{X^{(i)}}\mathbf{\theta} hi(X)=[1,x1(i),x2(i),,xp(i)][θ0,θ1,θ2,,θp]T=X(i)θ
其中 X , θ \mathbf{X, \theta} X,θ均为p+1维向量。
最小化性能指标
J ( θ ) = 1 2 m ∑ i = 1 m ( H ( X ) − Y ) 2 J(\theta) = \frac{1}{2m}\sum_{i=1}^{m}(H(X)-Y)^2 J(θ)=2m1i=1m(H(X)Y)2
梯度为
J ˙ ( θ ) = 1 m ∑ i = 1 m X T ( H ( X ) − Y ) \dot J(\theta) = \frac{1}{m}\sum_{i=1}^{m}X^T(H(X)-Y) J˙(θ)=m1i=1mXT(H(X)Y)
其中, H ( X ) = [ h 1 ( x ) , h 2 ( x ) , ⋯   , h m ( x ) ] T H(X)= [h_1(x),h_2(x),\cdots,h_m(x)]^T H(X)=[h1(x),h2(x),,hm(x)]T
Matlab代码实现为

clear ; close all; clc
data = load('ex1data2.txt');
X = data(:, 1:2);
y = data(:, 3);
m = length(y);

%normalization
mu = mean(X);       %  mean value 
sigma = std(X);     %  standard deviation
X_norm  = (X - repmat(mu,size(X,1),1)) ./  repmat(sigma,size(X,1),1);

X = [ones(m, 1) X];     % Add intercept term to X

% Choose some alpha value
alpha = 0.01;
num_iters = 8500;
theta = zeros(3, 1);
J_history = zeros(num_iters, 1);

for iter = 1:num_iters
    theta = theta - alpha / m * X' * (X * theta - y); 
    J_history(iter) = computeCostMulti(X, y, theta);
end

function J = computeCostMulti(X, y, theta)
m = length(y);
J = 0;
J = sum((X * theta - y).^2) / (2*m);
end


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值