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&ETH 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降维相关推荐

  1. 数据结构与算法(C++)– 贪婪算法(Greedy algorithm)

    贪婪算法(Greedy algorithm) 1.基础 定义:贪婪算法分阶段地工作,在每一阶段,选择在当前最好的决策,不考虑将来的后果.所以一般只能得到局部最优而不是全局最优. 贪婪算法: Dijks ...

  2. 动态规划(Dynamic Programming)与贪心算法(Greedy Algorithm)

    文章目录 动态规划算法(Dynamic Programming) 动态规划问题的属性 应用实例:最长公共子序列问题(Longest Common Subsequence, LCS) 贪心算法(Gree ...

  3. 贪心(Greedy Algorithm)

    贪心(Greedy Algorithm) 贪心 44.通配符匹配 45.跳跃游戏 II 55.跳跃游戏 122.买卖股票的最佳时机II 134.加油站 135.分发糖果 179.最大数 277.搜寻名 ...

  4. 贪婪算法-Greedy algorithm

    贪婪算法(greedy algorithm) WIKI A greedy algorithm is an algorithmic paradigm that follows the problem s ...

  5. 贪心算法(Greedy Algorithm)最小生成树 克鲁斯卡尔算法(Kruskal#39;s algorithm)

    克鲁斯卡尔算法(Kruskal's algorithm)它既是古典最低的一个简单的了解生成树算法. 这充分反映了这一点贪心算法的精髓.该方法可以通常的图被表示.图选择这里借用Wikipedia在.非常 ...

  6. Arithmetic_Thinking -- greedy algorithm

    贪心算法--就是一种寻找局部最优解的情况,然后整合成整体最优解的情况 简单的例子:买菜的找钱,现在有1元,5角,1角的硬币,要找给别人2元7角,现在是怎么才能以最少的硬币量找给别人,肯定是先来两个1元 ...

  7. 贪心算法(Greedy Algorithm)之霍夫曼编码

    文章目录 1. 贪心算法 2. 应用 2.1 找零钱 2.2 区间覆盖 2.3 霍夫曼编码 霍夫曼编码完整代码 1. 贪心算法 我们希望在一定的限制条件下,获得一个最优解 每次都在当前的标准下做出当下 ...

  8. 贪婪算法(greedy Algorithm)

    贪婪算法的应用: 相关算法练习题: LeetCode股票买卖的最佳时机 LeetCode判断子序列 LeetCode 分发饼干 LeetCode跳跃游戏 LeetCode加油站 一.简单调度问题: 给 ...

  9. 实验12 Greedy Algorithm练习题 答案与解析

    1-1 只有当局部最优跟全局最优解一致的时候,贪心法才能给出正确的解.(1分) T 1-2 Let S be the set of activities in Activity Selection P ...

  10. 【控制】贪心算法(GA,Greedy Algorithm)及 Matlab 实现

    文章目录 算法思路 应用实例 仿真 Ref. 算法思路 贪心算法一般按如下步骤进行: 建立数学模型来描述问题. 把求解的问题分成若干个子问题. 对每个子问题求解,得到子问题的局部最优解. 把子问题的解 ...

最新文章

  1. 不用for 也能实现按照某索引排好某序列
  2. ubuntu16.04 安装以及要做的事情
  3. C++类模板特化全总结
  4. 编写代码的若干个基本规则(以Java为例)
  5. 该项目不在桌面中删除不了_win7系统桌面上的文件删不掉怎么办
  6. SpringMVC源码阅读(一)
  7. 基于CUDA的粒子系统的实现
  8. java 画金刚石_帮忙改错!java 画金刚石
  9. 单独组件_iOS组件化/模块化的方案总结
  10. vue cli element 项目结构
  11. 微软云计算介绍与实践(实践之一)
  12. C++中如何读取一个数的位数_初中数学:近似数和平均数知识点总结及练习
  13. Flink状态管理和容错机制介绍
  14. 程序员的生活照,最后一个绝了!有同感吗?
  15. linux内核C -- 第07课:地址对齐那些事儿
  16. Linux + ChromiumOS + ....操作系统资源(持续更新...)
  17. 图扑软件2D与2.5D案例合集|智慧园区、数据中心、SMT 生产线...
  18. 人机交互-8-交互式系统设计
  19. linux drwxr-xr-x 是什么意思
  20. java怎么查看源代码

热门文章

  1. ac68无线网卡 linux驱动下载,华硕ac68驱动|华硕USB-AC68无线网卡驱动下载 V2.1.2.1 官方版 - 比克尔下载...
  2. 氮化镓 服务器电源管理系统报价,氮化镓(GaN)技术推动电源管理不断革新
  3. The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals
  4. 网站漏洞安全渗透测试公司组建方案
  5. python 等差素数数列
  6. 小路工作室GHOST XP 2007典藏版(完美XP)
  7. Global Illumination_Lens Flare(镜头光晕)
  8. 北京消费者买15类节能商品可获补贴 单件最高800元
  9. 通过U盘安装windows简易教程
  10. TorchScript的TracedModule和ScriptModule的区别