线性回归算法
线性回归 (Linear Regression) 是一种用于预测连续值的最基本的机器学习算法,它假设目标变量 y 和特征变量 x 之间存在线性关系,并试图找到一条最佳拟合直线来描述这种关系。
y = w * x + b
其中:
- 
y是预测值 - 
x是特征变量 - 
w是权重 (斜率) - 
b是偏置 (截距) 
线性回归的目标是找到最佳的 w 和 b,使得预测值 y 与真实值之间的误差最小。常用的误差函数是均方误差 (MSE):
MSE = 1/n * Σ(y_i - y_pred_i)^2
其中:
- y_i 是实际值。
 - y_pred_i 是预测值。
 - n 是数据点的数量。
 
如何求解线性回归?
1、最小二乘法
最小二乘法的目标是最小化残差平方和(RSS),其公式为:

其中 yi是实际值,yi^是预测值,求解后得到
 
求解过程
梯度下降法
梯度下降法的目标是最小化损失函数 J(w,b)J(w,b) 。对于线性回归问题,通常使用均方误差(MSE)作为损失函数:

其中:
mm是样本数量。yiyi是实际值。y^iy^i是预测值,由线性回归模型计算得到。
对于线性回归,梯度计算如下:

参数更新规则
梯度下降法通过以下规则更新参数 ww 和 b:

其中:
αα是学习率(learning rate),控制每次更新的步长。
使用 Python 实现线性回归
手动实现梯度下降法
import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression # 生成一些随机数据 np.random.seed(0) x = 2 * np.random.rand(100, 1) y = 4 + 3 * x + np.random.randn(100, 1) # 初始化参数 w = 0 b = 0 learning_rate = 0.1 n_iterations = 1000 # 梯度下降 for i in range(n_iterations): y_pred = w * x + b dw = -(2/len(x)) * np.sum(x * (y - y_pred)) db = -(2/len(x)) * np.sum(y - y_pred) w = w - learning_rate * dw b = b - learning_rate * db # 输出最终参数 print(f"手动实现的斜率 (w): {w}") print(f"手动实现的截距 (b): {b}") # 可视化手动实现的拟合结果 y_pred_manual = w * x + b plt.scatter(x, y) plt.plot(x, y_pred_manual, color='green') plt.xlabel('x') plt.ylabel('y') plt.title('Manual Gradient Descent Fit') plt.show()

                    
                

                
            
        
浙公网安备 33010602011771号