矩阵法求解线性回归

部署运行你感兴趣的模型镜像

 

由于梯度下降算法需要多次迭代,并且需要指定下降速率,如果下降速度过快则可能错过最优点,如果过慢则需要迭代多次,因此还可选用矩阵法求解。

首先给出一些基本数学知识:

矩阵的迹trace为矩阵主对角线元素之和:

  

tr(a)=a ,如果a为实数

以下是关于矩阵迹的一些性质:

  

对于多元线性回归,将所有训练数据作为一个矩阵,多元线性回归,也就是多个自变量的线性方程,类似y=a1x1+a2x2+a3x3...:

将y值也作为一个矩阵:

 

则可得

则误差为:

 

 转变为平方后:

其中转变为平方主要为了统一为正值,前面乘以1/2是方便求导后的计算。

对J(θ)求导,

 

 其中用到上面的求迹公式,以及求导公式,

令上式为0,

 

 则可求出最优的系数,矩阵方求解相对简单,不需要多次迭代,但当数据量过大时,即设计矩阵X过大时,对矩阵的乘法即求逆有很大计算复杂度,因此此方法适用于小规模数据。另外,用矩阵法时不需要对输入特征数据中心化。

 

转载于:https://www.cnblogs.com/xqnq2007/p/8073369.html

您可能感兴趣的与本文相关的镜像

GPT-SoVITS

GPT-SoVITS

AI应用

GPT-SoVITS 是一个开源的文本到语音(TTS)和语音转换模型,它结合了 GPT 的生成能力和 SoVITS 的语音转换技术。该项目以其强大的声音克隆能力而闻名,仅需少量语音样本(如5秒)即可实现高质量的即时语音合成,也可通过更长的音频(如1分钟)进行微调以获得更逼真的效果

Python中的梯度下降法是一种常用的优化算法,用于求解线性回归模型中的参数,使得损失函数最小化。对于线性回归,我们的目标通常是找到一个最佳拟合直线,使得数据点到这条直线的距离平方和最小。以下是基本步骤: 1. **初始化**:首先选择一个随机的权重向量`w`作为初始估计。 2. **计算损失函数**:线性回归的损失函数通常选择均方误差(MSE),即所有样本预测值真实值之差的平方和除以样本数。 3. **计算梯度**:对每个训练样本,计算损失函数关于权重向量的偏导数,即梯度。对于线性回归,梯度等于预测值实际值的偏差乘以样本对应的特征值。 4. **更新权重**:将当前权重向量减去学习率乘以梯度,这是一个小步调整,学习率决定了每次迭代调整的大小。 5. **重复迭代**:不断重复上述过程,直到达到预设的迭代次数、梯度足够小或者损失函数变化不大为止。 ```python import numpy as np def gradient_descent(X, y, w_init, learning_rate, num_iterations): m = X.shape[0] # 样本数 w = w_init.copy() for _ in range(num_iterations): y_pred = np.dot(X, w) # 预测值 dw = (1/m) * np.dot(X.T, (y_pred - y)) # 梯度 w -= learning_rate * dw # 更新权重 return w # 示例用法 X = ... # 特征矩阵 y = ... # 目标变量 w_init = np.zeros(X.shape[1]) # 初始化权重 learning_rate = 0.01 num_iterations = 1000 optimal_w = gradient_descent(X, y, w_init, learning_rate, num_iterations) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值