不均匀正负样本分布下的机器学习

来源:互联网 发布:单片机产生脉冲信号 编辑:程序博客网 时间:2024/04/29 19:33

不均匀正负样本分布下的机器学习

@机器学习那些事儿 发起的讨论, 2014-11-15

@好东西传送门 整理于 2014-12-09


39 条精选讨论(选自165条原始评论和转发)

机器学习那些事儿   2014-11-15 17:48
工业界机器学习典型问题: 正负样本分布极不均匀(通常<1:10000),有什么较好的方案构造训练集的正负样本分布?构造后如何解决训练数据与预测的分布不一致?请大牛帮忙解释下@老师木 @李沐M @星空下的巫师 @徐盈辉_仁基
北冥乘海生 转发于 2014-11-15 17:50
这个跟模型的形式和估计方法都有关,有些情况下正负例不均衡时估计有偏,可以校正一下。
小兔子大坏坏 评论于 2014-11-15 18:25
上采样、下采样、代价敏感,没什么好办法
特级飞行员舒克 转发于 2014-12-07 17:27  回复 @phunter_lau
回复@phunter_lau:mark,sampling
范涛_中科大 评论于 2014-12-07 17:40  回复 @特级飞行员舒克
这个之前调研过,主要分重采样和欠采样!这种不平衡是因为比率的不平衡给一些学习方法带来问题。但是在某些领域,比如反欺诈和安全,不仅是比率极不平衡,而且是正样本样本绝对数很小。需要扩散正样本方法!
特级飞行员舒克 转发于 2014-12-07 17:54
聚类然后从负样本中找和正样本比较紧邻的作为正样本怎么样?@phunter_lau @范涛_中科大 @winsty
范涛_中科大 转发于 2014-12-07 17:57
回复@特级飞行员舒克: Synthetic Minority Over-sampling Technique 我试过这个方法,解决部分问题,主要还是需要增加样本在特征空间的覆盖! 工程上光靠算法也解决不了问题,有的还是需要加入下经验知识来做。
睡眼惺忪的小叶先森 转发于 2014-12-07 18:03  回复 @范涛_中科大
我也说说。抛砖引玉:1,比例是一个关键的参数,据我们的经验,1:14是一个常见的“好”比例。[哈哈] 2,stratified sampling,也就是根据特征来采样,尽量使样本都覆盖特征空间。3,训练的时候,这个正负样本的“出场”顺序也很关键,不然可能还没遇到正(负)样 本模型就已经收敛了。
梁斌penny 转发于 2014-12-07 18:05  回复 @特级飞行员舒克
这就是一种伪标注方法,是可行的。当然最后还是需要验证一下效果,来证明这个方法对这类数据是solid的
孙明明_SmarterChina 转发于 2014-12-07 18:16  回复 @梁斌penny
这问题太笼统了。正负样本不平衡只是个表象,处理方法要根据本质原因来定。
齐浩亮 转发于 2014-12-07 18:37  回复 @梁斌penny
用排序思想构造所谓的序对,
宋云涛 转发于 2014-12-07 18:55
如果1:10算是均匀的话,可以将多数类分割成为1000份。然后将每一份跟少数类的样本组合进行训练得到分类器。而后将这1000个分类器用assemble的方法组合位一个分类器。记得读到的论文可行,但没有验证过
宋云涛 评论于 2014-12-07 18:57
采样的话要么损失信息要么影响数据分布,基本的序对的话也会引起信息的损失~
特级飞行员舒克 转发于 2014-12-07 19:55  回复 @Juggernaut_One
回复@Juggernaut_One:我认为有些场景下正负样本之间并没有严格明显的界线,是可以互相转换的。
特级飞行员舒克 转发于 2014-12-07 19:59  回复 @Juggernaut_One
回复@Juggernaut_One:在百度实习做广告点击率预估时,曾经想过在模型训练时不用0/1作为label,而是根据特征情况给一个float值(在[0,1]区间周围),或者更简单一些分别对目标值0/1做一些扰动,后来由于某些原因没做成。
wb王传鹏 转发于 2014-12-07 20:00
@刘尚堃 你说过有不少技巧[哈哈]
离家出走的托尔斯泰 转发于 2014-12-08 02:34
这在机器学习里面被称类别不平衡问题,可以参考Haibo, H. and E. A. Garcia (2009). "Learning from Imbalanced Data." Knowledge and Data Engineering, IEEE Transactions on" 的survey.已有很多方法提出
phunter_lau 转发于 2014-12-08 05:02  回复 @梁斌penny
或者试试看Transductive SVM (TSVM) 用当前训练的模型标注新的sample,差不多类似的想法但是我也是听同事说的
小吴COKE 转发于 2014-12-08 05:26  回复 @梁斌penny
聚类本身不是已经默认了相似度测定了么。。。。[汗]
cswhjiang 转发于 2014-12-08 05:33  回复 @phunter_lau
Transductive 是指要求 label 的数据在training 一个model的时候已经确定了,相对于inductive 而言。训练数据和测试数据分布不同是domain adaptation、sample bias、data shift。但是他原先的问题其实是imblance problem,google下能找到方法,比如 http://t.cn/Rzph0Wt
思奇吞象 评论于 2014-12-08 05:50
标准解决方法:设计objective function的时候给不同misclassification的情况不同的relative weights。也就是说给从小数量的样本被分成大数量的样本更大的penalty
anch3or 转发于 2014-12-08 07:53  回复 @梁斌penny
@phunter_lau:或者试试看Transductive SVM (TSVM) 用当前训练的模型标注新的sample,差不多类似的想法
孙明明_SmarterChina 转发于 2014-12-08 08:35  回复 @好东西传送门
训练数据与预测数据分布不一致,有专门研究的课题,sample selection bias,主要方法是各种reweighting
机器学习那些事儿 转发于 2014-12-08 09:06  回复 @特级飞行员舒克
这应该和半监督的间谍算法类似吧,不过这只能解决抽样问题,没法较好的确定正负样本之间的比例吧?
老师木 转发于 2014-12-08 10:12  回复 @梁斌penny
我以前搞过一个support cluster machine,类似的想法,很久以前的工作了,仅可以参考一下。
vinW 评论于 2014-12-08 10:17
按理是跟你的目标有关。如果你的目标是 预测的分布 跟训练的分布一致,那就加大对分布不一致的惩罚系数就是。
Jason_wbw 转发于 2014-12-08 10:19  回复 @特级飞行员舒克
我理解那么多的负样本的情况下,其实负样本已经并不是真正的`负样本`了,顺带扔个之前被推荐的paper http://t.cn/RzpInP3
王小科科科 转发于 2014-12-08 10:32
我的处理方式挺简单的,将负样本取样数量减少,然后在计算预测概率的时候,调整常数因子。
晴阴雨雪天各种读书 转发于 2014-12-08 11:11  回复 @岩间花树GT
早几年kdd有篇paper解决这个的,其实原理都差不多
微笑刺客4067 转发于 2014-12-08 12:09
关注。。伪标注有时间试一试!
夏睿 转发于 2014-12-08 12:50  回复 @孙明明_SmarterChina
Sample selection bias 可以解决一部分预测与训练数据分布不一致(还包括迁移学习、领域适应问题),不过好像没见过直接用它解决类别不平衡
昊奋 转发于 2014-12-08 13:08
抛砖引玉,这个倒是可以参考positive only learning等半监督学习中如早期的spy算法等来构造合适的负例来解决正负例不平衡的问题。在只有正例的学习问题中,负例千差万别,且数量也远超正例,符合楼主的问题描述
AixinSG 转发于 2014-12-08 13:48  回复 @昊奋
这个建议看起来比上采样下采样或者调权重更靠谱
小飞鱼_露 转发于 2014-12-08 17:12
这个看起来像 one-class recommendation 问题,不知是否可以考虑转化成 learning to rank 问题,如果不是为了拟合一个分布的话 (PS: 字数不够了...) @AixinSG @昊奋
NeoLScarlet 转发于 2014-12-08 17:14  回复 @算文解字
貌似生成不平衡那边的样本效果最好。
复旦李斌 转发于 2014-12-08 17:39  回复 @老师木
于是大家搜出来的都是我的那篇。。。[衰][衰]
离家出走的托尔斯泰 评论于 2014-12-08 18:04
个人觉得在类别不平衡条件下,Transductive SVM (TSVM)应该对于的active learning 来标注,可能结果更好。
昊奋 转发于 2014-12-08 20:04
learning to rank对于训练数据量的要求较高,同时要确定用于learning to rank的pair,还是需要找到负例,从而将正例和负例形成偏序配对。所以learning to rank是一种方法,但个人认为这会将简单问题复杂化,且本质还是需要去找负例。
开机就好ing 转发于 2014-12-08 21:06  回复 @昊奋
用单类分类算法如svdd也可以
杲a杲 评论于 2014-12-09 02:48
感觉都没扯到点子上啊,最经典的imbalanced的方法,cascade learning,详见viola的face detection paper.

 

0 0
原创粉丝点击