A-06 最小角回归法
更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html
最小角回归法
最小角回归相当于前向选择法和前向梯度法的一个折中算法,简化了前项梯度法因\(\epsilon\)的迭代过程,并在一定程度的保证了前向梯度法的精准度。
通常用最小角回归法解决线性模型的回归系数。对于一个有\(m\)个样本,每个样本有\(n\)个特征的训练集而言,假设可以拟合一个线性模型\(Y=\omega^TX\),其中\(Y\)是\(m*1\)的向量,\(X\)是\(m*n\)的矩阵,\(\omega\)是\(n*1\)的向量。即可通过最小角回归法求得最小化该模型的参数\(\omega\)。
首先把矩阵\(X\)看成\(n\)个\(m*1\)的向量\(X_i \quad(i=1,2,\cdots,n)\),之后选择与向量\(Y\)余弦相似度最大,即与\(Y\)最为接近的一个变量\(X_i\),使用类似于前向选择法中的残差计算方法得到新的目标\(Y_{err}\),此时不同于前向梯度法的一小步一小步走,而是走到出现一个\(X_j\quad(j=1,2,i-1,i+1,\cdots,n)\)的时候,此时\(X_i\)和\(Y_{err}\)的余弦相似度等于\(X_j\)和\(Y_{err}\)的余弦相似度,这个时候残差\(Y_{err}\)沿着\(X_i\)和\(X_j\)的角平分线方向走,知道出现第三个特征\(X_k\)和\(Y_{err}\)的相关度等于\(X_i\)和\(Y_{err}\)的余弦相似度等于\(X_j\)和\(Y_{err}\)的余弦相似度的时候,使用这三者的共同角平分线,作为残差\(Y_{err}\)的路径方向,直到所有变量取完了,停止算法,即可得到\(\omega\)。
一、举例
# 举例图例
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
%matplotlib inline
font = FontProperties(fname='/Library/Fonts/Heiti.ttc')
# X1*w1
plt.annotate(xytext=(2, 5), xy=(8, 5), s='', color='r',
arrowprops=dict(arrowstyle="->", color='r'))
plt.text(6, 4.5, s='$X_1*\omega_1$', color='g')
# X1
plt.annotate(xytext=(2, 5), xy=(4, 5), s='', color='r',
arrowprops=dict(arrowstyle="->", color='k'))
plt.text(2.5, 4.5, s='$X_1$', color='g')
# X2
plt.annotate(xytext=(2, 5), xy=(3, 7), s='', color='r',
arrowprops=dict(arrowstyle="->", color='k'))
plt.text(2, 6, s='$X_2$', color='g')
# Y
plt.annotate(xytext=(2, 5), xy=(12, 8), s='', color='r',
arrowprops=dict(arrowstyle="->", color='k'))
plt.text(5, 7.5, s='$Y$', color='g')
# X1
plt.annotate(xytext=(8, 5), xy=(10, 5), s='', color='r',
arrowprops=dict(arrowstyle="->", color='r'))
plt.text(8.5, 4.5, s='$X_1$', color='g')
# X2
plt.annotate(xytext=(8, 5), xy=(9, 7), s='', color='r',
arrowprops=dict(arrowstyle="->", color='r'))
plt.text(8, 6, s='$X_2$', color='g')
# w2(X1+X2)
plt.annotate(xytext=(8, 5), xy=(12, 8), s='', color='r',
arrowprops=dict(arrowstyle="->", color='gray'))
plt.text(10.5, 6.3, s='$(X_1+X_2)\omega_2$', color='g')
plt.xlim(0, 13)
plt.ylim(2, 13)
plt.title('最小角回归法举例', fontproperties=font, fontsize=20)
plt.show()

上图假设\(X\)为\(2\)维,首先可以看出,离\(Y\)最接近的是\(X_1\),首先在\(X_1\)上走一段距离,知道残差和\(X_1\)的相关度等于残差和\(X_2\)的相关度,即残差在\(X_1\)和\(X_2\)的角平分线上,由于\(X\)为\(2\)维,此时沿着角平分线走,直到残差足够小时停止,如果此时\(X\)不是\(2\)维,则继续选择第3个、第4个特征走下去。
二、最小角回归法优缺点
2.1 优点
- 特别适合特征维度高于样本数的情况
2.2 缺点
- 迭代方向是根据目标的残差定的,所以算法对训练集中的噪声特别敏感
三、小结
前向选择法由于涉及到投影,只能给出一个近似解;前向梯度法则需要自己手动调试一个很好的\(\epsilon\)参数;最小角回归法结合了两者的优点,但是至于算法具体好坏害的取决于训练集,即算法的稳定性无法保证。
对算法具体计算有兴趣的同学,可以参考Bradley Efron的论文《Least Angle Regression》,https://pan.baidu.com/s/10if9FGdkwEZ4_BolzCGszA ,如果你下载看了,恭喜你入坑。
A-06 最小角回归法的更多相关文章
- Lasso回归算法: 坐标轴下降法与最小角回归法小结
前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归.但是对 ...
- 机器学习方法:回归(三):最小角回归Least Angle Regression(LARS),forward stagewise selection
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 希望与志同道合的朋友一起交流,我刚刚设立了了一个技术交流QQ群:433250724,欢迎对算法.技术.应用感 ...
- 最小角回归 LARS算法包的用法以及模型参数的选择(R语言 )
Lasso回归模型,是常用线性回归的模型,当模型维度较高时,Lasso算法通过求解稀疏解对模型进行变量选择.Lars算法则提供了一种快速求解该模型的方法.Lars算法的基本原理有许多其他文章可以参考, ...
- LARS 最小角回归算法简介
最近开始看Elements of Statistical Learning, 今天的内容是线性模型(第三章..这本书东西非常多,不知道何年何月才能读完了),主要是在看变量选择.感觉变量选择这一块领域非 ...
- 从最小角回归(LARS)中学到的一个小知识(很短)
[转载请注明出处]http://www.cnblogs.com/mashiqi (居然有朋友说内容不接地气,那么我就再加一段嘛,请喜欢读笑话的同学直接看第二段)假设这里有一组向量$\left\{ x_ ...
- 【HDU3374】 String Problem (最小最大表示法+KMP)
String Problem Description Give you a string with length N, you can generate N strings by left shift ...
- 对数几率回归法(梯度下降法,随机梯度下降与牛顿法)与线性判别法(LDA)
本文主要使用了对数几率回归法与线性判别法(LDA)对数据集(西瓜3.0)进行分类.其中在对数几率回归法中,求解最优权重W时,分别使用梯度下降法,随机梯度下降与牛顿法. 代码如下: #!/usr/bin ...
- kuangbin专题十六 KMP&&扩展KMP HDU3347 String Problem(最小最大表示法+kmp)
Give you a string with length N, you can generate N strings by left shifts. For example let consider ...
- HDU3374 String Problem —— 最小最大表示法 + 循环节
题目链接:https://vjudge.net/problem/HDU-3374 String Problem Time Limit: 2000/1000 MS (Java/Others) Me ...
随机推荐
- 【Redis】主从复制
一.概述 1.redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从 ...
- 【Redis】发布订阅
一.概述 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 channel1 ...
- 【Redis】基础学习概览【汇总】
一.概述 1.1 简介 1.2 Redis单线程好处 1.3 单线程弊端 1.4 Redis应用场景 二.安装.开启以及关闭 三.Redis基本数据类型 四.SpringBoot整合Redis 五.R ...
- Docker详解(二)
目录 1.Docker常用命令 1.1 镜像命令 1.2 容器命令 1.2.1 常用的容器命令 1.2.2 重要的容器命令 序言:上一章我们初步介绍了一下Docker的概念,那么这次我们着手于Dock ...
- cmd命令查看已连接的WiFi密码
实验环境:Windows 10.命令提示符(管理员权限) 一.CMD命令查看WiFi密码 使用方法: ①.运行CMD(命令提示符) (确保无线网卡启用状态)②.输入命令查看WiFi配置文件: # ...
- 谈谈你对HTML语义化的理解。
1.什么是HTML语义化? 基本上都是围绕着几个主要的标签,像标题(h1-h6),列表(li),强调(strong em)等. 根据内容的语义化(内容结构化),选择合适的标签(代码语义化),便于开发者 ...
- 时钟AnalogClock和DigitalClock
<AnalogClock android:layout_width="fill_parent" android:layout_height="fill_parent ...
- CTF常用软件/工具
慢慢更新 整合版: http://www.jz5u.com/Soft/Progra/tool/163275.html/ 各种在线工具以及工具整合 http://www.ctftools.com/ 逆向 ...
- python2.7过渡到python3.6时遇到的差异总结
1.Python3中print为一个函数,必须用括号括起来而Python2中print为class print('hello') 2.python3将raw_input和input进行了整合,只有in ...
- 基于操作系统原理的Red Hat Linux的基本操作
一.实验目的 1.了解Linux操作系统的启动与登录方法. 2.掌握Red Hat Linux图形用户界面下的基本操作. 3.学会Red Hat Linux基本设置. 二.实验内容 1. 登录 2. ...