3-线性回归之使用正规方程来求解线性回归问题

使用正规方程来求解线性回归问题

1、接续前面两小节(1-线性回归之单变量线性回归基本原理的python实现_骑着蜗牛环游深度学习世界的博客-CSDN博客2-线性回归之多变量线性回归基本原理的python实现_骑着蜗牛环游深度学习世界的博客-CSDN博客

2、正规方程的使用受限:

​ ①特征数不能太多,通常来说当n小于10000 时还是可以接受的

​ ②只适用于线性模型,不适合逻辑回归模型等其他模型

3、正规方程的优点:

​ ①无需进行特征缩放(即无需归一化)

​ ②不需要迭代

1正规方程原理简述

  1. 正规方程是通过求解式(1)来找出使得代价函数最小的参数的:

∂ ∂ θ j J ( θ j ) = 0 (1) \frac{\partial }{\partial {{\theta }_{j}}}J\left( {{\theta }_{j}} \right)=0 \tag{1} θjJ(θj)=0(1)

  1. 对于训练集的特征矩阵 X X X(已包含 x 0 = 1 x_0=1 x0=1),标签向量 y y y,利用正规方程解出向量 θ = ( X T X ) − 1 X T y \theta ={{\left( {{X}^{T}}X \right)}^{-1}}{{X}^{T}}y θ=(XTX)1XTy,(具体的推导过程可以看下图)

在这里插入图片描述

2python实操

  1. 构建正规方程函数:
# 正规方程
def normalEqn(X, y):
    # 如果使用pinv则可以处理逆矩阵不存在的情况
    theta = np.linalg.inv(X.T@X)@X.T@y # X.T@X等价于X.T.dot(X)
    return theta
  1. 使用正规方程求解参数向量(这里使用的是第二篇文章的多特征数据集,为了与使用梯度下降的结果进行对比,还是进行了特征缩放):
# 多变量正规方程求解
raw_data = pd.read_csv('ex1data2.txt', names=['square', 'bedrooms', 'price'])
# 实际数据规范化结果
data = normalize_feature(raw_data)
X = get_X(data)

y = get_y(data)

final_theta2=normalEqn(X, y)
final_theta2
# 结果如下:

在这里插入图片描述

  • 从结果来看,还是有差距的
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
正规方程是一种用于求解线性回归问题的方法。它通过将代价函数对参数θ的偏导数等于零,来求得代价函数最小时的参数值。具体而言,正规方程首先定义代价函数,然后将其对参数θ进行偏导数运算,令偏导数等于零,最后解出参数θ的值。 使用正规方程求解线性回归可以避免使用梯度下降等迭代算法,直接得到参数θ的解析解。对于简单的线性回归问题正规方程是一种方便且直观的求解方法。 要使用正规方程求解线性回归,需要以下几个步骤: 1. 定义代价函数:线性回归的代价函数通常采用均方误差(Mean Square Error, MSE)。它衡量了模型预测值与实际值之间的差异。代价函数的定义为所有样本预测值与实际值之差的平方和的一半。 2. 求解偏导数:将代价函数对参数θ进行偏导数运算,得到一个关于θ的方程。 3. 令偏导数等于零:将求得的偏导数方程等于零,得到一个关于θ的方程。 4. 解方程:解出关于θ的方程,得到最优的参数θ值。 需要注意的是,正规方程求解过程中需要计算矩阵的逆,因此当矩阵不可逆时,无法使用正规方程求解线性回归。此时可以考虑使用岭回归或Lasso回归等方法来解决。 总结起来,正规方程是一种通过最小化代价函数的解析解来求解线性回归的方法。它是一种直观且方便的求解方法,但在某些情况下可能无法使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值