【机器学习实战】监督式学习-回归

本文深入探讨了回归分析,从线性回归开始,包括如何找到最佳拟合直线,局部加权线性回归及其对不同核大小的敏感性。接着介绍了岭回归和lasso,它们通过缩减系数来提高模型解释性。此外,还讨论了树回归,特别是CART算法,以及如何通过剪枝来避免过拟合。案例研究比较了不同回归方法在预测鲍鱼年龄和乐高价格方面的表现。
摘要由CSDN通过智能技术生成
8. 预测数值型数据:回归
8.1 用线性回归找到最佳拟合直线

线性回归

  • 优点:结果易于理解,计算不复杂
  • 对非线性数据拟合不好
  • 适用数据类型:数值型和标称型数据

回归的一般方法

  • 收集数据
  • 准备数据:需要数值型数据,标称型数据会被转化成二值型数据
  • 分析数据:在回归前把数据展示在二维图上有助于加深对数据的理解,在求得回归系数后,再把拟合线也绘制在图上。
  • 训练算法:找到回归系数
  • 测试算法:使用R2或者预测值和数据的你和杜,来分析模型的效果
  • 使用算法:对模型给定一个输入,可以预测一个数值;此时得到的是一个连续型数据而不仅仅是离散的类别标签。

通过最小化平方误差拟合回归曲线(即OLS,普通最小二乘法)

  • 平方误差: Σ i = 1 m ( y i − x i T w ) 2 \Sigma^m_{i=1}(y_i-x_i^{T}w)^2 Σi=1m(yixiTw)2

  • 平方误差的矩阵表示: ( y − X w ) T ( y − X w ) (y-Xw)^T(y-Xw) (yXw)T(yXw),对w求导并令其等于零可得:

    w ^ = ( X T X ) − 1 X T y \hat{w} = (X^TX)^{-1}X^Ty w^=(XTX)1XTy,其中 w ^ \hat{w} w^表示其估计最优解

算法实现
def standRegres(xArr, yArr):
    """
    基于普通最小二乘法线性回归
    """
    xMat = np.mat(xArr)
    yMat = np.mat(yArr).T
    xTx = xMat.T * xMat
    if np.linalg.det(xTx) == 0.0:  # 若行列式为0,则可计算逆矩阵
        print "This matrix is singular, cannot do inverse"
        return
    ws = xTx.I * (xMat.T * yMat)
    return ws

xArr, yArr = loadDataSet("./machinelearninginaction/Ch08/ex0.txt")
ws = standRegres(xArr, yArr)
xMat = np.mat(xArr)
yMat = np.mat(yArr)
yHat = xMat * ws

# 画图查看回归效果
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(xMat[:, 1].flatten().A[0], yMat.T[:, 0].flatten().A[0], s=8)

xCopy = xMat.copy()
xCopy.sort(0)
yHat = xCopy * ws
ax.plot(xCopy[:, 1], yHat, color="r")
plt.show()

print  np.corrcoef((xMat*ws).T, yMat)  # 计算预测值和真实值的相关系数

线性回归效果

8.2 局部加权线性回归
  • 使用最小均方误差的无偏估计时,线性回归容易出现欠拟合现象。可考虑在估计中引入一些偏差,从而降低预测的均方误差。
  • 局部加权线性回归(Locally Weighted Linear Regression,LWLR)
    • 每次预测前先选出对应的数据子集
    • 计算回归系数w: w ^ = ( X T W X ) − 1 X T W y \hat{w} = (X^TWX)^{-1}X^TWy w^=(XTWX)1XTWy
      • W为权重矩阵,为数据集中每个点赋予权重
      • LWLR核函数通常用高斯核: w ( i , i ) = e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值