Orthogonal greedy algorithm降维
Orthogonal greedy algorithm
- boosting
- BOOSTING FOR HIGH-DIMENSIONAL LINEAR MODELS
- Orthogonal greedy algorithm
- OGA的R语言代码
- OGA
- Lasso
- Twohit
- References
OGA是一种对回归模型进行降维的方法,它的思想易于理解,简单来说就是选择最大化削减残差的变量,L2 boosting is thus nothing else than repeated least squarestting of residuals (Friedman 2001)。但是,他的优点是高效快捷,与正则化方法相比,它的速度要快很多,并且对异方差和变量自相关性问题有比较好的表现。
boosting
OGA的诞生从《Boosting With the L2 Loss》Peter Bühlmann & Bin Yu这篇开始,思想来自于L2 boosting
boosting是一种常用的统计学习方法,其思想就是学习多个简单的学习器,将这些学习器进行线性组合,从而提高总体的性能,而L2 boosting是cost function为least square的情况
以下是引用论文中对boosting方法的描述
如果gradient boosting采用的是平方损失函数(L2 boosting),损失函数求梯度计算出来的刚好是残差y−Fm(.)y-F_m(.)y−Fm(.)
因此L2 boosting结构就简单许多,而且没有step size
接下来论文就对L2 boosting在光滑样条拟合与回归中的性质进行证明
BOOSTING FOR HIGH-DIMENSIONAL LINEAR MODELS
然后就是《BOOSTING FOR HIGH-DIMENSIONAL LINEAR MODELS》
By Peter Buhlmann ,ETH Z¨urich这篇论文
在提出OGA之前先是提出PGA(Pure greedy algorithm),分别将残差与单个变量进行回归,拟合之前累积模型的残差
Orthogonal greedy algorithm
摘自《A STEPWISE REGRESSION METHOD AND CONSISTENT MODEL SELECTION FOR HIGH-DIMENSIONAL SPARSE LINEAR MODELS》
Ching-Kang Ing & Tze Leung Lai
OGA则是在PGA的基础上对变量进行正交化,从而产生很好的计算特点
用HDIC作为选择变量的数量的标准
OGA的R语言代码
OGA
r中的ohit包可以调用OGA
`library(Ohit)
n = 400 #400组数据
p = 4000 #4000个变量
q = 10 #相关变量个数为10个
beta_1q = c(3, 3.75, 4.5, 5.25, 6, 6.75, 7.5, 8.25, 9, 9.75) #设置10个相关系数
b = sqrt(3/(4 * q))
x_relevant = matrix(rnorm(n * q), n, q) #生成400*10的相关变量
d = matrix(rnorm(n * (p - q), 0, 0.5), n, p - q) #生成3990*10的相关变量x_relevant_sum = apply(x_relevant, 1, sum)#沿行向量相加
x_irrelevant = apply(d, 2, function(a) a + b * x_relevant_sum)#行上的每一个元素加
X = cbind(x_relevant, x_irrelevant)
epsilon = rnorm(n)
y = as.vector((x_relevant %*% beta_1q) + epsilon)
#实际调用语句
OGA(X, y)
#1到10为实际相关变量`
模拟数据由下面模型构造
总共有p=4000个变量,但数据量为400个,属于n<p的情况,正常的回归无法进行
因变量y实际上只与前十个变量有关,加相互独立的扰动项,并且后面的无关自变量与前十个自变量具有相关性
运行结果
可以看到真正的自变量为1到10,而OGA的结果包含了这十个自变量
Lasso
以上为lasso运行后的结果,可以看到其效果没有OGA那么好
Twohit
详见《Variable Selection for High-Dimensional Regression Models with Time Series and Heteroscedastic Errors》
这篇文章证明Twohit在解决高维变量回归变量选择(时间序列)中异方差问题的性质
由于我不懂时序模型,就不多做解释
模型假设为:
Twohit算法为:
References
摘自:《Boosting With the L2 Loss》Peter Bühlmann & Bin Yu
《BOOSTING FOR HIGH-DIMENSIONAL LINEAR MODELS》 Peter BuhlmannÐ Z¨urich
《A STEPWISE REGRESSION METHOD AND CONSISTENT MODEL SELECTION FOR HIGH-DIMENSIONAL SPARSE LINEAR MODELS》
Ching-Kang Ing and Tze Leung Lai
《Variable Selection for High-Dimensional Regression Models with Time Series and Heteroscedastic Errors》
Orthogonal greedy algorithm降维相关推荐
- 数据结构与算法(C++)– 贪婪算法(Greedy algorithm)
贪婪算法(Greedy algorithm) 1.基础 定义:贪婪算法分阶段地工作,在每一阶段,选择在当前最好的决策,不考虑将来的后果.所以一般只能得到局部最优而不是全局最优. 贪婪算法: Dijks ...
- 动态规划(Dynamic Programming)与贪心算法(Greedy Algorithm)
文章目录 动态规划算法(Dynamic Programming) 动态规划问题的属性 应用实例:最长公共子序列问题(Longest Common Subsequence, LCS) 贪心算法(Gree ...
- 贪心(Greedy Algorithm)
贪心(Greedy Algorithm) 贪心 44.通配符匹配 45.跳跃游戏 II 55.跳跃游戏 122.买卖股票的最佳时机II 134.加油站 135.分发糖果 179.最大数 277.搜寻名 ...
- 贪婪算法-Greedy algorithm
贪婪算法(greedy algorithm) WIKI A greedy algorithm is an algorithmic paradigm that follows the problem s ...
- 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal#39;s algorithm)
克鲁斯卡尔算法(Kruskal's algorithm)它既是古典最低的一个简单的了解生成树算法. 这充分反映了这一点贪心算法的精髓.该方法可以通常的图被表示.图选择这里借用Wikipedia在.非常 ...
- Arithmetic_Thinking -- greedy algorithm
贪心算法--就是一种寻找局部最优解的情况,然后整合成整体最优解的情况 简单的例子:买菜的找钱,现在有1元,5角,1角的硬币,要找给别人2元7角,现在是怎么才能以最少的硬币量找给别人,肯定是先来两个1元 ...
- 贪心算法(Greedy Algorithm)之霍夫曼编码
文章目录 1. 贪心算法 2. 应用 2.1 找零钱 2.2 区间覆盖 2.3 霍夫曼编码 霍夫曼编码完整代码 1. 贪心算法 我们希望在一定的限制条件下,获得一个最优解 每次都在当前的标准下做出当下 ...
- 贪婪算法(greedy Algorithm)
贪婪算法的应用: 相关算法练习题: LeetCode股票买卖的最佳时机 LeetCode判断子序列 LeetCode 分发饼干 LeetCode跳跃游戏 LeetCode加油站 一.简单调度问题: 给 ...
- 实验12 Greedy Algorithm练习题 答案与解析
1-1 只有当局部最优跟全局最优解一致的时候,贪心法才能给出正确的解.(1分) T 1-2 Let S be the set of activities in Activity Selection P ...
- 【控制】贪心算法(GA,Greedy Algorithm)及 Matlab 实现
文章目录 算法思路 应用实例 仿真 Ref. 算法思路 贪心算法一般按如下步骤进行: 建立数学模型来描述问题. 把求解的问题分成若干个子问题. 对每个子问题求解,得到子问题的局部最优解. 把子问题的解 ...
最新文章
- 不用for 也能实现按照某索引排好某序列
- ubuntu16.04 安装以及要做的事情
- C++类模板特化全总结
- 编写代码的若干个基本规则(以Java为例)
- 该项目不在桌面中删除不了_win7系统桌面上的文件删不掉怎么办
- SpringMVC源码阅读(一)
- 基于CUDA的粒子系统的实现
- java 画金刚石_帮忙改错!java 画金刚石
- 单独组件_iOS组件化/模块化的方案总结
- vue cli element 项目结构
- 微软云计算介绍与实践(实践之一)
- C++中如何读取一个数的位数_初中数学:近似数和平均数知识点总结及练习
- Flink状态管理和容错机制介绍
- 程序员的生活照,最后一个绝了!有同感吗?
- linux内核C -- 第07课:地址对齐那些事儿
- Linux + ChromiumOS + ....操作系统资源(持续更新...)
- 图扑软件2D与2.5D案例合集|智慧园区、数据中心、SMT 生产线...
- 人机交互-8-交互式系统设计
- linux drwxr-xr-x 是什么意思
- java怎么查看源代码
热门文章
- ac68无线网卡 linux驱动下载,华硕ac68驱动|华硕USB-AC68无线网卡驱动下载 V2.1.2.1 官方版 - 比克尔下载...
- 氮化镓 服务器电源管理系统报价,氮化镓(GaN)技术推动电源管理不断革新
- The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals
- 网站漏洞安全渗透测试公司组建方案
- python 等差素数数列
- 小路工作室GHOST XP 2007典藏版(完美XP)
- Global Illumination_Lens Flare(镜头光晕)
- 北京消费者买15类节能商品可获补贴 单件最高800元
- 通过U盘安装windows简易教程
- TorchScript的TracedModule和ScriptModule的区别