作者ciphero (奶油焗蛋饺...:))
看板R_Language
标题[问题] 分层抽样是否适用於正负样本差距过大时?
时间Thu Jul 9 01:22:27 2015
[问题类型]:
意见调查(我对R 有个很棒的想法,想问问大家的意见)
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
这里我想问的问题,比较偏重在处理资料时使用的抽样方式是否适合?
问题如下:
假设我有一份资料集,样子如下:
项次 col_1 col_2 col_3 ...... col_50 result
-------------------------------------------------
1 ... ... ... ... yes
2 ... ... ... ... yes
3 ... ... ... ... no
...... ... ... ... ... ...
500000 ... ... ... ... yes
如果:
1.这份资料集总共有 500000 笔资料。
2.资料的因变数是「result」,其值只有 yes 跟 no 两种。
3.资料中没有任何 missing value。
4.假设 yes 跟 no 的资料数量差异很大,例如达到 99:1 的程度,
也就是 yes 有 495000 笔,no 只有 5000 笔好了。
5.目的是想要找出「col_1 ~ col_50 这 50 个栏位对於 result 的影响程度」
原本我是将这 500000 笔资料原封不动的利用 R 的分类树演算法(rpart)来处理
例如指令为:
formula = result ~ col_1 + col_2 + ... + col_50
x = rpart(formula, data, method="class") # data: 含 500000 笔资料
summary(x) #获得变数重要程度的资讯
但後来发现结果跑不出来,应该是 yes 与 no 的资料数量相差过於悬殊的关系 @@~
[你的答案]:
所以後来我想到用「分层抽样」的方法,针对不同的 result,用不同比例来随机抽样:
种类 笔数 抽样比例 抽样笔数
--------------------------------
yes 495000 5% 24750
no 5000 100% 5000
--------------------------------
总计 500000 29750
在这个方法里面,我只用了 29750 笔资料 (yes:24750笔、no:5000笔)
虽然後来结果有很顺利的跑完
但是对於采用这种方法,我不晓得会有什麽样的缺点
(例如是否会因为样本数减少,导致结论偏离正确的结果)
不知道大家对於这样的抽样方式,觉得是否合理呢?
感谢大家给予意见!
[关键字]:
分层抽样;rpart
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.161.165.166
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1436376149.A.8AB.html
※ 编辑: ciphero (1.161.165.166), 07/09/2015 01:23:32
1F:推 Edster: 这是错误的抽样方法,样本并不能代表母体的分配 07/09 02:35
2F:推 Edster: 我不懂什麽叫跑不出来。这几个字有很多想像,但通常跟样 07/09 02:58
3F:→ Edster: 本无关,除非结果不符预期。这时你该抽样的对象应该是变 07/09 02:59
4F:→ Edster: 数栏,而非样本。 07/09 02:59
5F:→ celestialgod: 我测试了一下随机资料 rpart确实给出错误 07/09 13:35
6F:→ celestialgod: 不过没有给错误讯息 就完全没有切割NODE 07/09 13:35
7F:→ celestialgod: summary给出error: 1 07/09 13:36
8F:→ celestialgod: tree这个套件也不行 07/09 13:40
9F:→ celestialgod: 我找到了 加control = rpart.control(cp = -1) 07/09 14:15
10F:→ celestialgod: 可以强迫分 07/09 14:15