Andrew机器学习笔记1:线性回归 linear regression

本文详细介绍单变量及多变量线性回归方法,包括数据处理、假设函数、代价函数、梯度下降算法等内容,并对比了梯度下降与正规方程两种求解方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据斯坦福大学Andrew NG的机器学习课程整理。

1. 单变量线性回归(预测房价–尺寸)

给定房子的大小尺寸和其售价,建立线性模型。

1.1数据处理

将X、θ 处理如下格式:

X=[1x1]θ=[θ0θ1]

将X、θ 写成矩阵形式,有利于matlab编程实现(matlab在内部对矩阵运算进行优化,比for循环运行时间短)。

1.2假设函数(hypothesis)

hθ=θ0+θ1x=θTX

1.3代价函数(cost function)

J=12mi=1m(hθ(x(i))y(i))2

平方误差代价函数是解决回归问题最常用的手段。J表示预测值与实际值误差,J越小越好。计算代价函数如下:
predictions=X*theta;
J=1/(2*m)*sum((predictions-y).^2);

1.4梯度下降(gradient descent)

梯度下降是求代价函数局部最小值的一种方法,其基本思想:沿当前梯度下降最快的方向搜索。因为线性回归的代价函数J是一个向下凸函数(弓形函数),因此,向下寻找最低点即可获得合适的假设函数参数(θ )。
计算步骤:
1.对θ0θ1 进行初步猜想(通常将其设置为0);
2.不断改变θ0θ1 ,使J减小直到找到J的最小值或者局部最小值。
计算公式:

θj=θjαθjJ(θ0,θ1)=θjαmi=1m(hθ(x(i))y(i))x(i)j

NOTE:需要对θ0θ1 同时更新。
 temp0=theta(1)-alpha/m*sum(X*theta-y);
 temp1=theta(2)-alpha/m*sum((X*theta-y).*X(:,2));
 theta(1)=temp0;
 theta(2)=temp1;

梯度下降函数值应随着迭代次数的增加而减小,在debug时,观察J函数值的变换有利于对模型参数正确与否的判断。学习率α控制θj 更新步长,若取值过小,则J收敛速度过慢,若取值过大,则J更新可能掠过最低点,导致J越更新值越大,即无法收敛or发散。

2. 多变量线性回归(预测房价–尺寸&&房间数量)

2.1 数据处理

X=111x11x21x31x12x22x32θ=θ0θ1θ2y=y1y2y3

2.2特征缩放(feature scaling)

选取部分X数据观察,第二列:面积,第三列:房间数量

1面积房间数量
121043
116003
124003
114162
130004

我们可以发现,面积取值范围远大于房间数量取值范围。如果直接使用数据进行计算,梯度下降速度较慢。当特征值相似时,梯度下降法收敛更快。通常,将特征缩放到-1~1之间(-3~3到-0.3~0.3范围内均可)。特征缩放公式:

xxμs

μ为数据x对应的特征均值,s为标准差(max-min)。
NOTE:预测实际数据时,也需要对数据进行缩放。
n=size(X,2); 
for i=1:n
    mu(i)=mean(X(:,i));
    sigma(i)=std(X(:,i));
    X_norm(:,i)=(X(:,i)-mu(i))./sigma(i);
end

n为特征个数,code对每个特征均进行了缩放。
接下来的梯度下降等计算方法与单变量线性回归形同。

2.3正规方程(normal equation)

除了特征下降法,正规方程也可以获得θ

θ=(XTX)1XTy

code: pinv(x’*x)*x’*y
梯度下降与正规方程比较:
梯度下降正规方程
需要计算α不需要
需要迭代多次不需要
当特征数目很大时,仍能正常工作需要计算矩阵乘法,当特征数很大时,计算慢
特征数<10000时比较适合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值