机器学习:局部加权线性回归(locallyweightedlinearregression)(代码片段)

挂科难 挂科难     2022-12-04     702

关键词:

线性回归

先复习一下线性回归的损失函数:

我们的目标是使该函数最小,用矩阵表示为:

对参数w求导得:

令上式等于0可估计出回归系数w得最优解:

但线性回归往往容易欠拟合,除了使用更复杂得函数拟合,还可以使用局部加权线性回归(locally weighted linear regression)

局部加权线性回归(LWLR)

在该算法中我们给待预测点附件得每个点赋予一定的权重,即在计算时我们更关注附近的数据,离的远的数据就不管了。
常使用高斯核来给数据点赋权重

高斯核

局部加权线性回归损失函数

同理,解的回归系数为损失函数对w求偏导,令偏导等于0求解w

回归系数

举个例子我们要拟合的数据如下,显然线性回归会欠拟合:

使用局部加权线性回归:

import matplotlib.pyplot as plt
import numpy as np
import math

data = np.loadtxt('ex0.txt')


def lwlr(testpoint, xArr, yArr, k):
    m = xArr.shape[0]   # 有多少行,200
    weights = np.mat(np.eye(m))  # (200,200)的单位矩阵
    for j in range(m):
        diffMat = testpoint - xArr[j, :]  # xArr的j行所有值
        weights[j, j] = np.exp(diffMat * diffMat.T / (-2.0*k**2))  # 这一直说我没对齐,卡了半天,最后把输入的X,mat一下就好了
    xTx = xArr.T * (weights * xArr)
    if np.linalg.det(xTx) == 0.0:
        print("矩阵为奇异矩阵,不能求逆")
        return
    ws = xTx.I * (xArr.T * (weights * yArr.T))
    return testpoint * ws


def lwlrTest(testArr, xArr, yArr, k):
    m = testArr.shape[0]  # 样本数200
    yHat = np.zeros(m)  #
    for i in range(m):
        yHat[i] = lwlr(testArr[i], xArr, yArr, k)
    return yHat


X = np.mat(data[:, :2])
y = np.mat(data[:, -1])
yHat = lwlrTest(X, X, y, 0.01)  # 预测值yHat
srtInd = X[:, 1].argsort(0)  # 按特征的大小(x轴)排序,画折线图必须先排序, srtInd = [[151],[24]]
xSort = X[srtInd][:, -1]

plt.plot(xSort[:, -1], yHat[srtInd], c='r')
plt.scatter(data[:, -2], data[:, -1])
plt.show()


如果使用线性回归会欠拟合:

局部加权回归欠拟合过拟合-andrewng机器学习公开课笔记1.3

本文主要解说局部加权(线性)回归。在解说局部加权线性回归之前,先解说两个概念:欠拟合、过拟合。由此引出局部加权线性回归算法。 欠拟合、过拟合   例如以下图中三个拟合模型。第一个是一个线性模型。... 查看详情

机器学习:局部加权线性回归(locallyweightedlinearregression)(代码片段)

线性回归先复习一下线性回归的损失函数:我们的目标是使该函数最小,用矩阵表示为:对参数w求导得:令上式等于0可估计出回归系数w得最优解:但线性回归往往容易欠拟合,除了使用更复杂得函数拟合... 查看详情

斯坦福吴恩达教授机器学习公开课第三讲笔记——局部加权回归/线性回归的概率解释/分类和逻辑回归

查看详情

bagging策略和随机森林的应用以及线性回归与局部加权回归三种实例(线性回归adaboostgradientboostingregressor)机器学习(代码片段)

一.Bagging策略bootstrapaggregation有放回抽样集合从样本集中重采样(有重复的)选出n个样本在所有属性上,对这n个样本建立分类器(ID3、C4.5、CART、SVM、Logistic回归等)重复以上两步m次,即获得了m个分类器将数据放在m个分类器上... 查看详情

局部加权回归(hgl的机器学习笔记3)

局部加权回归(LocallyWeightedRegression,LWR)局部加权回归使一种非参数方法(Non-parametric)。在每次预测新样本时会重新训练临近的数据得到新参数值。意思是每次预测数据需要依赖训练训练集,所以每次估计的参数值是不确定的。 局... 查看详情

局部加权回归(hgl的机器学习笔记3)

局部加权回归(LocallyWeightedRegression,LWR)局部加权回归使一种非参数方法(Non-parametric)。在每次预测新样本时会重新训练临近的数据得到新参数值。意思是每次预测数据需要依赖训练训练集,所以每次估计的参数值是不确定的。 局... 查看详情

机器学习之线性回归(代码片段)

目录预测数值型数据:回归用线性回归找到最佳拟合直线程序8-1标准回归函数和数据导入函数程序8-2基于程序8-1绘图图片8-1ex0的数据集和它的最佳拟合直线局部加权线性回归图片8-2参数k与权重的关系程序8-3局部加权线性回归函... 查看详情

局部加权线性回归

    通常,你选择交给学习算法处理的特征的方式对算法的工作过程有很大影响。    例:在前面的例子中,用x1表示房间大小。通过线性回归,在横轴为房间大小,纵轴为价格的图中,画出拟合曲线... 查看详情

机器学习

1.用于执行分类,回归,聚类和密度估计的机器学习方法:  a.监督学习的用途: k-近邻算法线性回归朴素贝叶斯算法局部加权线性回归支持向量机Ride回归决策树lasso最小回归系数估计    b.无监督学习的... 查看详情

机器学习——树回归

  线性回归创建模型需要拟合所有的样本点(局部加权线性回归除外)。当数据拥有众多特征并且特征之间关系十分复杂的时候,构建全局模型的想法就显得太难了,也略显笨拙。而且,实际生活中很多问题都是非线性的,不... 查看详情

机器学习-线性回归(代码片段)

线性回归简介:之前的文章中介绍过一种回归算法,梯度下降算法,这里再看看另外一个回归算法,线性回归,主要的内容包括简单的线性回归和局部加权回归算法。在回归里面需要考虑的问题就是,我如... 查看详情

cs229笔记一监督学习,线性回归,lms算法,正态方程,概率解释和局部加权线性回归

监督学习对于一个房价预测系统,给出房间的面积和价格,以面积和价格作坐标轴,绘出各个点。定义符号:(x_{(i)})表示一个输入特征(x)。(y_{(i)})表示一个输出目标(y)。((x_{(i)},y_{(i)}))表示一个训练样本。(left{(x_{(i)},y_{(i)});i=1,dots... 查看详情

机器学习基础概念笔记

...见算法:K-均值、最大期望算法、DBSCAN、Parzen窗设计 机器学习应用步骤:收集数据——准备输入数据——分析输入数据 查看详情

机器学习概念

机器学习就是把无序的数据转换成实用的信息。机器学习的主要任务就是分类,通过通过训练数据训练算法,终于能够将实际的数据分到合适的类别中监督学习算法:预測目标变量的值k-means算法。线性回归朴素贝叶斯算法,局... 查看详情

斯坦福机器学习课程笔记

...模拟)---策略(风险函数)--算法(最优化方法)第一节:机器学习的基本概念和分类第二节:线性回归,最小二乘批梯度下降(bgd)和随机梯度下降(sgd)第三节:过拟合,欠拟合非参数学习算法:局部加权回归概率角度解释线性回归... 查看详情

第二篇[机器学习]学习机器学习,从最简单的线性回归开始

机器学习,分为监督学习和无监督学习,监督学习里有回归和分类,分类有线性回归和逻辑回归。从最简单的线性回归开始:通过已有数据需要预测的线性方程:实际值和预测值的误差,求最小误差函数(最小二乘法):1.梯度... 查看详情

sparkmllib机器学习(代码片段)

目录 本章导读1. 机器学习概率2. SparkMLlib总体设计3. 数据类型3.1 局部向量3.2 标记点3.3 局部矩阵3.4 分布式矩阵4. 基础统计4.1 摘要统计4.2 相关统计1. 皮尔森相关系数2. 斯皮尔森秩相关系数4.3 分层抽样4.4 假设校验4.5 随... 查看详情

sparkmllib机器学习(代码片段)

目录 本章导读1. 机器学习概率2. SparkMLlib总体设计3. 数据类型3.1 局部向量3.2 标记点3.3 局部矩阵3.4 分布式矩阵4. 基础统计4.1 摘要统计4.2 相关统计1. 皮尔森相关系数2. 斯皮尔森秩相关系数4.3 分层抽样4.4 假设校验4.5 随... 查看详情