Redian新闻
>
单变量xgboost模型好的吓人,求解
avatar
单变量xgboost模型好的吓人,求解# Programming - 葵花宝典
f*y
1
ZT邀请哥哥过来玩,出邀请信,查了查版上的一般跟按父母的材料类似,所以打算把我
们的收入存款等等都提供。我总觉得给爸妈办签证的时候不忌讳,可是给兄弟姐妹,总
觉得有点忌讳,因为我们的收入存款是从来不跟他们说的。再说,这回他们是自己承担
费用,是不是我们就可以不提供自己的经济状况。
avatar
m*r
2
最近闭门造车,不接电话,不回电邮,不上网, 死几百咧,造了个模型,先用线性逻
辑回归,试来试去,性能不理想,AUC大概63% . 这也没什么奇怪的,并不是给你一堆
数,就能造个模型出来。 反正试来试去,就这一个变量可用,, 假定为A, AUC = 63%
然后我就用xgboost, 我的妈,AUC一下上升到95%, 96%,97%, 98%, 因为编程太弱
,我的土方法是:一个变量一个变量试, 都是manual work, 每次只跑一个变量,记录
重要结果,保存在excel里。 最终结果是:仅用A变量,AUC = 95%, 在此基础上加上一
点别的变量, AUC 很快飞涨到97%, 98%
我知道这种基于树的模型容易过度拟合, 就特意找了好几年前的老数据(真实数据)测
试。 测试的AUC性能一点都不下降, 和原来的差距小于1%. 所以不能说是过度拟合。
现在问题来了,我想来想去不明白为什么这个变量用在xgb有这么高的AUC? 不明白xgb
施了什么法术?向业务部门也很难解释,做个简单的tabulation, 能依稀看出一些
trend (这到能说明 线性回归下此变量达到AUC = 63 %)。 可在xgboost下该变量表现
如此完美, 连我自己都不信啊。
有大神碰到过此类问题的, 能不能给讲讲?
avatar
m*1
3
今天妹妹拿到签证, 据说根本没看存款等.是她自己资助自己.
我也只给了她我护照, 签证, 工作卡等证件.没任何财务的信息.

【在 f****y 的大作中提到】
: ZT邀请哥哥过来玩,出邀请信,查了查版上的一般跟按父母的材料类似,所以打算把我
: 们的收入存款等等都提供。我总觉得给爸妈办签证的时候不忌讳,可是给兄弟姐妹,总
: 觉得有点忌讳,因为我们的收入存款是从来不跟他们说的。再说,这回他们是自己承担
: 费用,是不是我们就可以不提供自己的经济状况。

avatar
w*g
4
单变量一条线上, 如果+分布成几撮, 中间穿插着很多-,逻辑回归这种单threshold
的模型就会完蛋。如果这个假设成立,用k-NN预测应该也会显著好于线性模型。

xgb

【在 m******r 的大作中提到】
: 最近闭门造车,不接电话,不回电邮,不上网, 死几百咧,造了个模型,先用线性逻
: 辑回归,试来试去,性能不理想,AUC大概63% . 这也没什么奇怪的,并不是给你一堆
: 数,就能造个模型出来。 反正试来试去,就这一个变量可用,, 假定为A, AUC = 63%
: 然后我就用xgboost, 我的妈,AUC一下上升到95%, 96%,97%, 98%, 因为编程太弱
: ,我的土方法是:一个变量一个变量试, 都是manual work, 每次只跑一个变量,记录
: 重要结果,保存在excel里。 最终结果是:仅用A变量,AUC = 95%, 在此基础上加上一
: 点别的变量, AUC 很快飞涨到97%, 98%
: 我知道这种基于树的模型容易过度拟合, 就特意找了好几年前的老数据(真实数据)测
: 试。 测试的AUC性能一点都不下降, 和原来的差距小于1%. 所以不能说是过度拟合。
: 现在问题来了,我想来想去不明白为什么这个变量用在xgb有这么高的AUC? 不明白xgb

avatar
w*t
5
他们自己承担费用,你当然没任何理由去提供任何收入证明。

【在 f****y 的大作中提到】
: ZT邀请哥哥过来玩,出邀请信,查了查版上的一般跟按父母的材料类似,所以打算把我
: 们的收入存款等等都提供。我总觉得给爸妈办签证的时候不忌讳,可是给兄弟姐妹,总
: 觉得有点忌讳,因为我们的收入存款是从来不跟他们说的。再说,这回他们是自己承担
: 费用,是不是我们就可以不提供自己的经济状况。

avatar
L*8
6
我看很多医学文章 还在用线性模型 搞多变量拟合 然后算个p值 讨论一下每个变量的
贡献 很多人喜欢简单模型 容易“理解” 有 insight
这种想法在ML面前 就是渣

xgb

【在 m******r 的大作中提到】
: 最近闭门造车,不接电话,不回电邮,不上网, 死几百咧,造了个模型,先用线性逻
: 辑回归,试来试去,性能不理想,AUC大概63% . 这也没什么奇怪的,并不是给你一堆
: 数,就能造个模型出来。 反正试来试去,就这一个变量可用,, 假定为A, AUC = 63%
: 然后我就用xgboost, 我的妈,AUC一下上升到95%, 96%,97%, 98%, 因为编程太弱
: ,我的土方法是:一个变量一个变量试, 都是manual work, 每次只跑一个变量,记录
: 重要结果,保存在excel里。 最终结果是:仅用A变量,AUC = 95%, 在此基础上加上一
: 点别的变量, AUC 很快飞涨到97%, 98%
: 我知道这种基于树的模型容易过度拟合, 就特意找了好几年前的老数据(真实数据)测
: 试。 测试的AUC性能一点都不下降, 和原来的差距小于1%. 所以不能说是过度拟合。
: 现在问题来了,我想来想去不明白为什么这个变量用在xgb有这么高的AUC? 不明白xgb

avatar
m*r
7
有道理。 你的讲解让我想起不久前看过一段视频。 是采访著名cart发明人breimann还
是frimann讲他当年怎么发明决策树算法的故事。 他当年是stanford搞物理的, 原本
用k_nearest_neighborhood 方法解决高能粒子classification的问题, 后来有天早上
在床上想啊想啊( 我也爱赖在床上想一些自己的土算法, 很有效)忽然就从knn联想到
了决策树算法。 后来创办了CART软件,不久前被minitab收购。
现在我知道应该怎么向客户展示了: 应该类似和散点图(scatterplot)差不多的图,重
点展示一些cluster。
还有一个疑问。 xgb输出是score, 0~1, 我然后根据分数排序, 看看每个十分位(
decile),购买率是多少, 结果竟然是100%, 99% 90%, 80%, 30%, 12%, 10%, 0%,
0%, 0% (就是做lift curve 类似方法)
我再仔细研究score, 发现这些分数跳跃性很大, 有很多分数相同(up to 10th
decimal place).
怎么看怎么别扭。 我的理解是: 这里面毕竟只有一个变量,树的深度是4,共有100颗
树,所以ties是很难避免的。 还请斧正。
总之, 我对我以上十个购买率的这组数, 深表怀疑。 too good to be true. 我用
更老的数据验证,确实得到极为类似的结果。
除了吴东大神,其他的大神也请点拨一下。

threshold

【在 w***g 的大作中提到】
: 单变量一条线上, 如果+分布成几撮, 中间穿插着很多-,逻辑回归这种单threshold
: 的模型就会完蛋。如果这个假设成立,用k-NN预测应该也会显著好于线性模型。
:
: xgb

avatar
g*t
8
各种adaptive线性回归技术试过了吗?
除了auc别的统计指标怎么样?
avatar
g*t
9
这种情况,
可以用adaptive技术预测加号的聚集速度。
还可以预先训练出来一张表,按条件切换权重什么的。


: 单变量一条线上, 如果 分布成几撮, 中间穿插着很多-,逻辑回归这种单
threshold

: 的模型就会完蛋。如果这个假设成立,用k-NN预测应该也会显著好于线性模型。

: xgb



【在 w***g 的大作中提到】
: 单变量一条线上, 如果+分布成几撮, 中间穿插着很多-,逻辑回归这种单threshold
: 的模型就会完蛋。如果这个假设成立,用k-NN预测应该也会显著好于线性模型。
:
: xgb

avatar
g*t
10
这年头能卖简单模型的人水平一般都很高。


: 我看很多医学文章 还在用线性模型 搞多变量拟合 然后算个p值 讨论一
下每个
变量的

: 贡献 很多人喜欢简单模型 容易“理解” 有 insight

: 这种想法在ML面前 就是渣

: xgb



【在 L****8 的大作中提到】
: 我看很多医学文章 还在用线性模型 搞多变量拟合 然后算个p值 讨论一下每个变量的
: 贡献 很多人喜欢简单模型 容易“理解” 有 insight
: 这种想法在ML面前 就是渣
:
: xgb

avatar
m*r
11
不想摊子铺的太大。 adaptive regression 我在别的项目试验过, sas 9.4 恰好有这
个功能 (忘了proc name, 请自行google, 大概叫transreg ? ).
除了AUC, 就看4几条curve, true positive/false positive, grains chart, lift
curve, precision/recall. 曲线美的像是从photoshop里加工过。
我一看AUC就知道这几条曲线差不了。 因为我做类似项目很长时间了,看看AUC心里就
有数了,一般85%以上性能会很好。 75%以上是大多数结果,65%以上勉强可用 最好不
用。 低于65%, 比较差劲 别跟人说这是你做的, 丢人。
问题现在是指标太好。 要是别人给我看这种结果,我会怀疑这人是不是在忽悠我。

【在 g****t 的大作中提到】
: 各种adaptive线性回归技术试过了吗?
: 除了auc别的统计指标怎么样?

avatar
g*t
12
老数据新数据混合测一下?
我怀疑除了overfitting之外。
是不是可能这本身就是个不复杂的问题,你的线性回归方法部分
漏了什么。所以只有63% auc
线性方法结果好的,别的什么办法出来的结果往往都不错。


: 不想摊子铺的太大。 adaptive regression 我在别的项目试验过, sas
9.4 恰
好有这

: 个功能 (忘了proc name, 请自行google, 大概叫transreg ? ).

: 除了AUC, 就看4几条curve, true positive/false positive, grains
chart,
lift

: curve, precision/recall. 曲线美的像是从photoshop里加工过。

: 我一看AUC就知道这几条曲线差不了。 因为我做类似项目很长时间了,看
看AUC
心里就

: 有数了,一般85%以上性能会很好。 75%以上是大多数结果,65%以上勉强
可用
最好不

: 用。 低于65%, 比较差劲 别跟人说这是你做的, 丢人。

: 问题现在是指标太好。 要是别人给我看这种结果,我会怀疑这人是不是
在忽悠
我。



【在 m******r 的大作中提到】
: 不想摊子铺的太大。 adaptive regression 我在别的项目试验过, sas 9.4 恰好有这
: 个功能 (忘了proc name, 请自行google, 大概叫transreg ? ).
: 除了AUC, 就看4几条curve, true positive/false positive, grains chart, lift
: curve, precision/recall. 曲线美的像是从photoshop里加工过。
: 我一看AUC就知道这几条曲线差不了。 因为我做类似项目很长时间了,看看AUC心里就
: 有数了,一般85%以上性能会很好。 75%以上是大多数结果,65%以上勉强可用 最好不
: 用。 低于65%, 比较差劲 别跟人说这是你做的, 丢人。
: 问题现在是指标太好。 要是别人给我看这种结果,我会怀疑这人是不是在忽悠我。

avatar
L*8
13
看一看是不是训练数据混到测试数据里了

【在 m******r 的大作中提到】
: 不想摊子铺的太大。 adaptive regression 我在别的项目试验过, sas 9.4 恰好有这
: 个功能 (忘了proc name, 请自行google, 大概叫transreg ? ).
: 除了AUC, 就看4几条curve, true positive/false positive, grains chart, lift
: curve, precision/recall. 曲线美的像是从photoshop里加工过。
: 我一看AUC就知道这几条曲线差不了。 因为我做类似项目很长时间了,看看AUC心里就
: 有数了,一般85%以上性能会很好。 75%以上是大多数结果,65%以上勉强可用 最好不
: 用。 低于65%, 比较差劲 别跟人说这是你做的, 丢人。
: 问题现在是指标太好。 要是别人给我看这种结果,我会怀疑这人是不是在忽悠我。

avatar
w*r
14
你这感觉就像我第一次玩AlexNet一样。如果你在小学时就能接受计算器算得比你快,
为什么现在不能接受计算机用有效的ML算法对大数据的归纳能力比你强?
回到你的问题,有可能是基于某domain knowledge的假设错了,以至于模型无法拟合数
据的distribution。
avatar
n*g
15
你的变量大概是target 的别名 比如用每分钟速度预测时速 当然很准
[在 magliner (magliner) 的大作中提到:]
:最近闭门造车,不接电话,不回电邮,不上网, 死几百咧,造了个模型,先用线性逻
:辑回归,试来试去,性能不理想,AUC大概63% . 这也没什么奇怪的,并不是给你一堆
:数,就能造个模型出来。 反正试来试去,就这一个变量可用,, 假定为A, AUC = 63%
:然后我就用xgboost, 我的妈,AUC一下上升到95%, 96%,97%, 98%, 因为编程太弱
:,我的土方法是:一个变量一个变量试, 都是manual work, 每次只跑一个变量,记
录重要结果,保存在excel里。 最终结果是:仅用A变量,AUC = 95%, 在此基础上加上
一点别的变量, AUC 很快飞涨到97%, 98%
:我知道这种基于树的模型容易过度拟合, 就特意找了好几年前的老数据(真实数据)
测试。 测试的AUC性能一点都不下降, 和原来的差距小于1%. 所以不能说是过度拟合。
:现在问题来了,我想来想去不明白为什么这个变量用在xgb有这么高的AUC? 不明白xgb
:施了什么法术?向业务部门也很难解释,做个简单的tabulation, 能依稀看出一些
:trend (这到能说明 线性回归下此变量达到AUC = 63 %)。 可在xgboost下该变量表现
:如此完美, 连我自己都不信啊。
:..........
avatar
g*t
16
还得考虑你分钟级别数据的variance啊。不是光速度就够了。


: 你的变量大概是target 的别名 比如用每分钟速度预测时速 当然很准

: [在 magliner (magliner) 的大作中提到:]

: :最近闭门造车,不接电话,不回电邮,不上网, 死几百咧,造了个模型,先用
线性逻

: :辑回归,试来试去,性能不理想,AUC大概63% . 这也没什么奇怪的,并不是给
你一堆

: :数,就能造个模型出来。 反正试来试去,就这一个变量可用,, 假定为A, AUC
= 63%

: :然后我就用xgboost, 我的妈,AUC一下上升到95%, 96%,97%, 98%, 因为编
程太弱

: :,我的土方法是:一个变量一个变量试, 都是manual work, 每次只跑一个变
量,记

: 录重要结果,保存在excel里。 最终结果是:仅用A变量,AUC = 95%, 在此基础
上加上

: 一点别的变量, AUC 很快飞涨到97%, 98%

: :我知道这种基于树的模型容易过度拟合, 就特意找了好几年前的老数据(真实
数据)



【在 n******g 的大作中提到】
: 你的变量大概是target 的别名 比如用每分钟速度预测时速 当然很准
: [在 magliner (magliner) 的大作中提到:]
: :最近闭门造车,不接电话,不回电邮,不上网, 死几百咧,造了个模型,先用线性逻
: :辑回归,试来试去,性能不理想,AUC大概63% . 这也没什么奇怪的,并不是给你一堆
: :数,就能造个模型出来。 反正试来试去,就这一个变量可用,, 假定为A, AUC = 63%
: :然后我就用xgboost, 我的妈,AUC一下上升到95%, 96%,97%, 98%, 因为编程太弱
: :,我的土方法是:一个变量一个变量试, 都是manual work, 每次只跑一个变量,记
: 录重要结果,保存在excel里。 最终结果是:仅用A变量,AUC = 95%, 在此基础上加上
: 一点别的变量, AUC 很快飞涨到97%, 98%
: :我知道这种基于树的模型容易过度拟合, 就特意找了好几年前的老数据(真实数据)

avatar
m*r
17
这种情况基本可以排除。 我做的是市场营销项目,不是物理项目。没有information
leak. 我用的变量是公认,有代表性,有实际意义的变量。 类似于以前liberty
mutual竞赛题, 购买商品 ~ 看了某商品 这种关系。

63%

【在 n******g 的大作中提到】
: 你的变量大概是target 的别名 比如用每分钟速度预测时速 当然很准
: [在 magliner (magliner) 的大作中提到:]
: :最近闭门造车,不接电话,不回电邮,不上网, 死几百咧,造了个模型,先用线性逻
: :辑回归,试来试去,性能不理想,AUC大概63% . 这也没什么奇怪的,并不是给你一堆
: :数,就能造个模型出来。 反正试来试去,就这一个变量可用,, 假定为A, AUC = 63%
: :然后我就用xgboost, 我的妈,AUC一下上升到95%, 96%,97%, 98%, 因为编程太弱
: :,我的土方法是:一个变量一个变量试, 都是manual work, 每次只跑一个变量,记
: 录重要结果,保存在excel里。 最终结果是:仅用A变量,AUC = 95%, 在此基础上加上
: 一点别的变量, AUC 很快飞涨到97%, 98%
: :我知道这种基于树的模型容易过度拟合, 就特意找了好几年前的老数据(真实数据)

avatar
n*r
18
Boosting的原理就是多个模型联合,在数据量不大的情况做到很好的精度很正常
o x o
x o x
o x o
举个二元分类的简单例子,上面这几个点,线性模型相当于划一条斜线,是不可能分开的
如果只用单个模型,需要复杂的高次函数才可以
但是,如果用多个线性模型联合,只要四个45度的斜线就可以做到100%的区分
你这种情况应该是overfit了。验证的方法很简单,把你的数据分成training/test set
,然后看model在test set的performance。
avatar
m*r
19
多谢。 你的讲解很透彻。

开的
set

【在 n******r 的大作中提到】
: Boosting的原理就是多个模型联合,在数据量不大的情况做到很好的精度很正常
: o x o
: x o x
: o x o
: 举个二元分类的简单例子,上面这几个点,线性模型相当于划一条斜线,是不可能分开的
: 如果只用单个模型,需要复杂的高次函数才可以
: 但是,如果用多个线性模型联合,只要四个45度的斜线就可以做到100%的区分
: 你这种情况应该是overfit了。验证的方法很简单,把你的数据分成training/test set
: ,然后看model在test set的performance。

avatar
m*r
20
上来给大家汇报一下工作。
一开始我也以为overfit了,哪里出了错。仔细检查了代码,整个过程没什么错误。 虽
然这是个比较大的项目,很多代码copy来copy去 但是我造这个模型用的是最近12月的
数据, 真正的测试数据是更早的数据:前24个月到前12个月。 也就是我造模型的数据
在我的硬盘里,测试的数据在数据库里躺着呢。
这简直就是物理隔离啊。
今天我把测试的12个月数据每个月单独拎出来测一遍。 这样每个月只有1K~2K人群
samplesize应该算很小了,结果目测还是很好的,反正就那10个数从100%递减到0%, 按
score_rank递减,我连AUC都懒得看,因为趋势是很明显的。
于是我就这样给老板交差了。
还有一个原因是这个xgb做的模型是其中一个部分,大部分还是用回归做的。 如果所有
模型都得到这么高的AUC, 我还真发毛了。
avatar
c*r
21
一个变量的模型还用啥xgboosting/ml, 你画个scatterplot smooth下不就广域完了,
stat101就可以搞定,感觉ML学多了就容易简单问题复杂化 ......

xgb

【在 m******r 的大作中提到】
: 最近闭门造车,不接电话,不回电邮,不上网, 死几百咧,造了个模型,先用线性逻
: 辑回归,试来试去,性能不理想,AUC大概63% . 这也没什么奇怪的,并不是给你一堆
: 数,就能造个模型出来。 反正试来试去,就这一个变量可用,, 假定为A, AUC = 63%
: 然后我就用xgboost, 我的妈,AUC一下上升到95%, 96%,97%, 98%, 因为编程太弱
: ,我的土方法是:一个变量一个变量试, 都是manual work, 每次只跑一个变量,记录
: 重要结果,保存在excel里。 最终结果是:仅用A变量,AUC = 95%, 在此基础上加上一
: 点别的变量, AUC 很快飞涨到97%, 98%
: 我知道这种基于树的模型容易过度拟合, 就特意找了好几年前的老数据(真实数据)测
: 试。 测试的AUC性能一点都不下降, 和原来的差距小于1%. 所以不能说是过度拟合。
: 现在问题来了,我想来想去不明白为什么这个变量用在xgb有这么高的AUC? 不明白xgb

avatar
p*o
22
:) 这是一个典型overfit的例子。

【在 c******r 的大作中提到】
: 一个变量的模型还用啥xgboosting/ml, 你画个scatterplot smooth下不就广域完了,
: stat101就可以搞定,感觉ML学多了就容易简单问题复杂化 ......
:
: xgb

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。