机器学习之线性回归缩减维度

如何使用Lasso算法降维? 本篇文章将介绍基于Lasso算法的降维方法,并利用Python编程实践,来帮助读者深入理解Lasso算法的原理和应用。 阅读详情

什么叫高维数据?

在这里插入图片描述
如上图 前面 我们求解线性回归的时候 列举的一个例子。
这个例子中:
房子的面积, 房间的数量 , 楼间距, 离学校的距离 我们的数据 从这四个维度取例 ,也称为数据的维度 用d表示。
下面的每一行 表示一个 房子的样本 。 样本可以有N 多个。

维数膨胀

当我们数据的维度 大于 样本的数量的时候 我们称为 维数膨胀

在分析高维数据过程中碰到最大的问题就是维数的膨胀,也就是通常所说的“维数灾难”问题。研究表明,随着维数的增长,分析所需的空间样本数会呈指数增长

如下所示,当数据空间维度由1增加为3,最明显的变化是其所需样本增加;换言之,当样本量确定时,样本密度将会降低,从而样本呈稀疏状态。假设样本量n=12,单个维度宽度为3,那在一维空间下,样本密度为12/3=4,在二维空间下,样本分布空间大小为3*3,则样本密度为12/9=1.33,在三维空间下样本密度为12/27=0.44。
设想一下,当数据空间为更高维时,X=[x1x1,x2x2,….,xnxn]会怎么样?

在这里插入图片描述
1,需要更多的样本,样本随着数据维度的增加呈指数型增长;
2,数据变得更稀疏,导致数据灾难;
3,在高维数据空间,预测将变得不再容易;
4, 导致模型过拟合。

数据降维

对于高维数据,维数灾难所带来的过拟合问题,其解决思路是:
1)增加样本量;
2)减少样本特征
而对于现实情况,会存在所能获取到的样本数据量有限的情况,甚至远小于数据维度,即:d>>n。如证券市场交易数据、多媒体图形图像视频数据、航天航空采集数据、生物特征数据等。
常见的降维方法: lasso ,前向逐步回归法,LAR,PCA 等。

这里我们先学习 两种 lasso ,前向逐步回归法。

Lasso

这篇文章详细介绍了 岭回归
我们得出如下公式:

在这里插入图片描述

这个lamda 帮我们解决了 不是满秩矩阵的问题。 但是 其中这个lamda 该取多少值呢 ?

因为 lamda 这个 因子的不确定性 所以得到权重也不太一样 。

在这里插入图片描述
从这个图中 我们可以发现 随着 lamda 逐渐变大 ,权重中的 二维权重(x,y) y 值逐渐接近为 0 。
g(z)= w0x0 + 0x1那么我们调节 lamda值 就可以 减少 一个维度的数据 。 所以岭回归 不断可以解决 满秩矩阵的问题 ,还可以缩减 维度问题。

lasso 就是 对 上述的 权重 和 lamda 在做一个限制 。

n
Σ | Wk| ≤ λ
k=1

在λ 足够小的时候 , 一些系数会因此被迫缩减到 0 。 这样就可以减少 若干系数。

前向逐步回归法

前向逐步回归法 可以得到 跟lasso 差不多的效果。但是更加简单。 它属于 贪心算法 。

在这里插入图片描述

上图中的 增大 或者减少 这样操作 。 比如 g(z) = w0* X0 +w1 * X1

让W0 += 0.1 或者 W0 += -0.1 比较 哪个误差更小 。 谁小 就取哪个 。 就跟盲人探路 是一回事。 盲人没走一步 就探测一下 前面有坑没有 没有就往前走 ,否则就往后退 。

前向逐步回归法代码实现
#coding=utf-8

from  numpy  import *

import  numpy  as np 

import  matplotlib.pyplot  as plt 



filename='./ex1.txt' #文件目录
def loaddataSet(filename):
    numfeat = len(open(filename).readline().split('\t'))-1
    dataMat = [];labelsVec = []
    file = open(filename)
    for line in file.readlines():
        lineArr = []
        curLine = line.strip().split('\t')
        for i in range(numfeat):
            lineArr.append(float(curLine[i]))
        dataMat.append(lineArr)
        labelsVec.append(float(curLine[-1]))
    return dataMat,labelsVec
def rssError(yArr,yHatArr): #yArr and yHatArr both need to be arrays
    return ((yArr-yHatArr)**2).sum()
def stageWise(xArr,yArr,eps=0.01,numIt=10):
    xMat = mat(xArr); yMat=mat(yArr).T
    yMean = mean(yMat,0)
    #yMat = yMat - yMean     #can also regularize ys but will get smaller coef
    #xMat = regularize(xMat)
    m,n=shape(xMat)
    returnMat = zeros((numIt,n)) #testing code remove
    ws = zeros((n,1)); wsTest = ws.copy(); wsMax = ws.copy()


    print("wsTest==",wsTest)
    for i in range(numIt):
        print( ws.T)
        lowestError = inf; 
        for j in range(n):
            # 来回试探 看看 哪个适合
            for sign in [-1,1]:
                wsTest = ws.copy()

                print("wsTest[j]",wsTest[j])
                wsTest[j] += eps*sign
                yTest = xMat*wsTest
                rssE = rssError(yMat.A,yTest.A)
                if rssE < lowestError:
                    lowestError = rssE
                    wsMax = wsTest
        ws = wsMax.copy()
        returnMat[i,:]=ws.T

    return returnMat
def  PlotLine(X,wMat):
    
      fig = plt.figure()

      ax = fig.add_subplot(111)

      #number = 20
      ax.plot(wMat)
      
      print("X",X)


      #ax.plot(mat(X).T[:,1],wMat.T[:,1])

      plt.show()
def  TestStage():

	x,y= loaddataSet(filename)

	wMat=stageWise(x,y)

	PlotLine(x,wMat)

TestStage()

前向逐步回归法 缩减参数

很多同学估计跟我一样 算法看明白了 但是 这个怎么就缩减参数了呢? 非常感谢 我的老朋友唐国斌 给了我很大的启发 。

比如特征值有10个, w就有10个 ,逐步向前回归就是直接把10个特征值,减少成9个 w也变成9个 然后看减少后,比减少前是否好,如果好了,就减少,一个个特征值去试,看看直接删除这个特征值,会不会让模型变得更好,有些特征值,删除反而比保留好,这个是因为这些值可能和其他几个特征值 差不多 就是信息冗余了

参考文献

https://blog.youkuaiyun.com/xiaozhu_1024/article/details/80585151
再次 感谢 老朋友 唐国斌

线性回归模型(7大模型) ​ 先从一个简单的问题开始:如何用一个线性函数来拟合一个二维数据集?​ 假设我们有一个二维数据集,其中每个样本都由一个x和一个y组成。我们可以用一个线性函数 y = ax + b 来拟合这个数据集,其中a和b是待定的系数。我们的目标是找到最佳的a和b,使得这个线性函数能够尽可能地拟合这个数据集。​ 这就是线性回归的基本思想:通过拟合一个线性函数来预测一个连续型的输出变量。这是一个非常简单的案例。 阅读详情

相关推荐

机器学习实战(七)线性回归(Linear Regression)

目录 0. 前言 1. 假设函数(Hypothesis) 2. 标准线性回归 2.1. 代价函数(Cost Function) 2.2. 梯度下降(Gradient Descent) 2.3. 特征缩放(Feature Scaling) 2.4. 正规方程(Normal Equation) 3. 局部加权线性回归(LWLR) 4. 岭回归 5. lasso 6. 前向逐步线性...

今天你学习了吗 1505

关键词解释:维度缩减(Dimensionality Reduction)

摘要:维度缩减是机器学习与数据分析中的核心技术,旨在将高维数据映射到低维空间,同时尽可能保留其关键结构或信息。它广泛应用于可视化、去噪、加速计算和避免“维度灾难”。

sweet_ran的博客 1172

机器学习笔记02——线性回归

目录概念模型解决过拟合问题岭回归LASSO 回归 概念 线性回归假设输出变量是若干输入变量的线性组合,并根据这一关系求解线性组合中的最优系数。简单来说就是探索X和Y之间线性变量关系的函数 在众多回归分析的方法里,线性回归模型最易于拟合,其估计结果的统计特性也更容易确定,因而得到广泛应用。而在机器学习中,回归问题隐含了输入变量和输出变量均可连续取值的前提,因而利用线性回归模型可以对任意输入给出对输出的估计。 模型 假定一个实例可以用列向量 x=(x1​;x2​;⋯,xn​) 表示,每个 xi​ 代表了实例在第

david2000999的博客 1867

回归预测中的降维处理(Filter过滤法)

回归预测中的降维处理1 降维是什么?2 降维有哪些方式?2.1 特征选择2.2 特征提取3 特征选择的方法3.1 特征选择方法3.1.1 Filter过滤法:方差过滤Wrapper包装法:功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出

qq_35659322的博客 3588

【笔记软件obsidian】从入门到精通

目录 一、前言 二、下载及安装 三、【选修】ios用户如何通过iCloud进行三平台同步 四、基本Markdown语法 五、【选修】插件的下载及安装方式 六、

patrick的博客 9万+

ESP32 TWAI CAN库实战:从零构建CyberGear微电机控制框架

本文详细介绍了如何利用ESP32的TWAI控制器和Arduino环境,从零构建一个面向对象的CyberGear微电机控制框架。该框架将复杂的CAN通信协议封装为简洁的API,开发者无需深究底层细节,即可轻松实现电机的速度、位置和扭矩控制,大幅简化机器人关节、云台等项目的开发流程。

oil88的博客 499

pca

参考文献: https://zhuanlan.zhihu.com/p/21580949

Claroja 406

【CubeMX】STM32G474 HRTIM 死区时间与互补PWM实战解析

本文深入解析STM32G474的HRTIM高分辨率定时器在互补PWM生成与死区时间配置中的应用。通过CubeMX工具详细演示时钟配置、单路PWM基础、互补输出与死区时间设置,并结合逆变器等电力电子实战案例,帮助开发者避免直通风险,优化系统性能。

efc12345678的博客 746

机器学习笔记(二):线性模型

线性模型是机器学习常用的众多模型中最简单的模型,但却蕴含着机器学习中一些重要的基本思想。许多功能更为强大的非线性模型可在线性模型的基础上通过引入层级结构或高维映射得到,因此了解线性模型对学习其他机器学习模型具有重要意义。 本文主要介绍机器学习中常用的线性模型,内容主要包括: 一、 线性回归(Linear Regression) 二、 对数几率回归(Logistic Regression) 三、 线...

qq_35771020的博客 560

VUE3 实战手记(一)集成 EasyUI for Vue 组件库

本文详细介绍了如何在VUE3项目中集成EasyUI for Vue组件库,包括环境准备、基础安装、配置与集成、TypeScript类型问题解决以及组件实战等内容。EasyUI以其轻量级和开箱即用的特性,特别适合快速开发后台管理系统,提升开发效率。

weixin_30628801的博客 529

华为OD新系统机试真题 - API请求日志去重分析

华为OD新系统机试真题【API请求日志去重分析】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD4月15号机试真题【API请求日志去重分析】

qq_45776114的博客 914

《机器学习实战》8.3 线性回归之缩减系数来'理解'数据

《机器学习实战》8.3 线性回归之缩减系数来’理解’数据 搜索微信公众号:‘AI-ming3526’或者’计算机视觉这件小事’ 获取更多人工智能、机器学习干货 csdn:https://blog.youkuaiyun.com/baidu_31657889/ github:https://github.com/aimi-cn/AILearners 本文出现的所有代码,均可在github上下载,不妨来个Sta...

小明的博客 1294

【STM32系统及仿真】基于STM32+蓝牙设计的智能窗帘系统__资料编号8

本项目设计并实现了一种基于STM32单片机的智能窗帘系统,集成了光敏传感器、温湿度传感器、蓝牙模块和OLED显示屏,实现了窗帘的自动调节、环境监测和远程控制功能。系统采用STM32F103C8T6作为主控制器,通过光敏传感器检测环境光强,温湿度传感器监测室内环境,蓝牙模块实现与手机APP的通信,用户可以通过APP远程控制窗帘的开合状态。系统在检测到环境光照强度或温度超出设定范围时,可自动调节窗帘的开合,以达到节能和提高舒适度的目的。

嵌入式阿齐Archie 2万+

【机器学习】线性回归LinearRegression原理以及系数推导

线性方程 y = w1x1 + w2x2 + … … + wnxn + b 令 W = (w1, w2 … … wn), X = (x1, x2, … … xn) 则 y = W * X ^ T + b 称 W 为回归系数, X 为特征向量, b 为截距 线性方程的推导 现有 m 个已知样本, 每个样本有 n 个特征记为 X1, X2, … … , Xn 每个X中都有 n 个 x 对应的标签记为:...

Yakultvivid的博客 2584

实现Win10环境下的MATLAB与虚拟机Ubuntu中的ROS的通讯的方法

   本文主要介绍如何实现Win10环境下的MATLAB与虚拟机Ubuntu中的ROS的通讯,虚拟机我采用的是VMware16.1.1中安装了Ubuntu20.04,并安装ROS Noetic 版本    一、虚拟机Ubuntu中配置    1、在ubuntu终端输入以下命令查看本机地址 ifconfig    如下图所示我目前的IP是192.168.3.128    2、将本机IP写入到.bashrc文件    打开home文件夹,按Ctrl+h显示隐藏的文件,选择.bashrc并打开(

慕羽★的博客 7516

业态即战场:零售平台的生意模型与系统设计解构

在这篇文章中,我们从“控货、自营、联营”三种典型零售业态出发,拆解了亚马逊、阿里、京东和本地闪购平台在商品模型设计上的差异与博弈。看似简单的卖货方式背后,其实是平台在“控货权”“商品归属权”上的深层策略博弈:谁掌控商品,谁就掌控数据、流量与利润分配权。本文尝试用一套通俗但不失专业的方式,帮助产品经理和技术伙伴读懂零售平台商品模型的底层逻辑与系统设计演化路径。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 13万+

机器学习实战(七)02-线性回归提高篇之乐高玩具套件二手价预测

https://blog.youkuaiyun.com/c406495762/article/details/82967529

yangshaojun1992的博客 885

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

机器学习实战教程(十二):线性回归提高篇

本篇文章讲解线性回归的缩减方法,岭回归以及逐步线性回归,同时熟悉sklearn的岭回归使用方法,对乐高玩具套件的二手价格做出预测。

weixin_64338372的博客 753

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

机器学习实战教程(十二):线性回归提高篇之乐高玩具套件二手价预测

原文链接:cuijiahua.com/blog/2017/1… 一、前言 本篇文章讲解线性回归的缩减方法,岭回归以及逐步线性回归,同时熟悉sklearn的岭回归使用方法,对乐高玩具套件的二手价格做出预测。 二、岭回归 如果数据的特征比样本点还多应该怎么办?很显然,此时我们不能再使用上文的方法进行计算了,因为矩阵X不是满秩矩阵,非满秩矩阵在求逆时会出现问题。为了解决这个问题,统计学家引入岭回归(r...

weixin_34345560的博客 455

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Python3《机器学习实战》学习笔记(十二):线性回归提高篇之乐高玩具套件二手价预测

转自个人网站:http://cuijiahua.com/blog/2017/12/ml_12_regression_2.html 一、前言 本篇文章讲解线性回归的缩减方法,岭回归以及逐步线性回归,同时熟悉sklearn的岭回归使用方法,对乐高玩具套件的二手价格做出预测。 二、岭回归 如果数据的特征比样本点还多应该怎么办?很显然,此时我们不能再使用上文的方法进行计算了,因为矩阵X不是满秩矩阵...

Jack-Cui 1万+

机器学习之线性回归理解

什么是线性回归? 线性回归是在线性模型的基础上一种线性方法。 线性方程为Y = wX^T+b 线性回归又名最小二乘法,是回归问题最简单也是最经典算法,线性回归可以通过求解均方误差构建损失函数,来寻找参数w和b,使得均方误差也就是损失函数最小,从而求得回归参数w和截距b。 线性回归算法没有参数,这是一个优点但也因此可能无法控制模型的复杂程度,从而导致训练时间过长。 1.线性方程 一个标签y和一个特征...

皮皮猪的博客 1488

机器学习基本概念、线性回归模型——机器学习入门

task1 1. 机器学习基本概念 监督学习: 监督学习的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测(注意,这里的输入、输出是指某个系统的输入与输出,与学习的输入与输出不同)。【来源于《统计学习方法》】。 监督学习的特点就是数据具有标签或者函数值,而模型就是学习其输入向量到标签或者函数值的映射关系。监督学习的代表任务是分类和回归。 无监督学习: ...

sinat_41401464的博客 680

《机器学习实战》——线性回归提高篇之乐高玩具套件二手价预测

一、前言本篇文章讲解线性回归的缩减方法,岭回归以及逐步线性回归,同时熟悉sklearn的岭回归使用方法,对乐高玩具套件的二手价格做出预测。二、岭回归如果数据的特征比样本点还多应该怎么办?很显然,此时我们不能再使用上文的方法进行计算了,因为矩阵X不是满秩矩阵,非满秩矩阵在求逆时会出现问题。为了解决这个问题,统计学家引入岭回归(ridge regression)的概念。1、什么是岭回归?岭回归即我们所...

IT人生 1156

python3二手书_Python3《机器学习实战》学习笔记(十二):线性回归提高篇之乐高玩具套件二手价预测...

转载声明:一、前言本篇文章讲解线性回归的缩减方法,岭回归以及逐步线性回归,同时熟悉sklearn的岭回归使用方法,对乐高玩具套件的二手价格做出预测。二、岭回归如果数据的特征比样本点还多应该怎么办?很显然,此时我们不能再使用上文的方法进行计算了,因为矩阵X不是满秩矩阵,非满秩矩阵在求逆时会出现问题。为了解决这个问题,统计学家引入岭回归(ridge regression)的概念。1、什么是岭回归?岭回...

weixin_39687786的博客 305

python机器学习算法实训 - (一) 手写线性回归

python机器学习算法实训 - (一) 线性回归 线性回归 此系列权作本学期机器学习课堂笔记 以后会持续更新各类算法(希望)ppt内容来自老师 每个算法的代码都同时自己编写实现和用sklearn实现了一次 欢迎批评斧正^ ^(需要numpy pandas基础) 原理 线性回归(linear regression)是一种简单的模型,但受到广泛应用,比如预测商品价格,成本评估等,都可以用一元线性模型...

KobeBryant2488的博客 1170

机器学习基础概念和线性回归-Task1

title: 机器学习基本概率–线性回归 date: 2019-03-28 19:48:22 tags: [Machine Learning, 基础, 算法] 文章目录title: 机器学习基本概率--线性回归 date: 2019-03-28 19:48:22 tags: [Machine Learning, 基础, 算法]机器学习基本概念& 线性回归机器学习系统的种类主要的分类是否动...

qq_34318529的博客 712
上一篇: 机器学习之局部加权,岭回归
下一篇: 机器学习之SVM
ithinking110
博客等级 码龄14年 54粉丝 52原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值