github 地址: https://github.com/bowenpay/poormining
我们公司正在做一个贫困户的征信模型 v0.1 ,以发展农村金融。
为了争取开源世界的力量,开放了 2 个县的数据,共 33.5 万条 贫困户记录,每条记录有 33 个字段。时间跨度为 2014 年~2016 年, 3 年共 3 张表。这 2 个县,一个县用于建模,另一个县用于验证。
其中,需要建模预测下一年是否能脱贫以及下一年的人均年收入。
目前用随机森林模型预测是否脱贫,准确率高达 98% ;
用线性回归模型预测下一年人均年收入,在误差为 10%的情况下,准确率为 60%;
使用 Lasso 回归模型 和 岭回归模型 预测效果也为 60%左右。
欢迎大家来修改代码,使用更多的模型来预测,或者调整模型参数,以提高预测准确度。
1
crayonyi OP 不知道为什么刚发布的时候,在首页看不到,回复一条试试
|
2
miyuki 2016-12-07 22:45:19 +08:00
正在入门基于 R 的机器学习,感谢 lz
|
3
marenight 2016-12-07 22:48:04 +08:00
数据格式是 sql 么?楼主能不能给个其他比较友好的格式,比如 csv 啥的。
|
5
Xs0ul 2016-12-07 22:55:48 +08:00 via Android
感觉准确率相当的高啊,有做 feature importance 看看那些因素影响比较大吗?
|
6
crayonyi OP @Xs0ul 只是统计了一下各个因子,单独作用下的效果,写在这个文档里了:[https://shimo.im/doc/IeBd3kPBK0MC1aQY]( https://shimo.im/doc/IeBd3kPBK0MC1aQY)
我第一次知道有 feature importance , 去查一下 |
7
marenight 2016-12-07 23:27:52 +08:00
@crayonyi [email protected] 万分感谢
|
8
crayonyi OP @Xs0ul 跑了一下, feature importance 排名如下:
Feature ranking: 1. feature person_year_total_income (0.712042) 2. feature year_total_income (0.107312) 3. feature member_count (0.041349) 4. feature subsidy_total (0.026403) 5. feature reason (0.020928) 6. feature arable_land (0.017534) 7. feature living_space (0.016653) 8. feature wood_land (0.010882) 9. feature help_plan (0.009243) 10. feature washing_machine (0.006374) 11. feature fridge (0.005236) 12. feature is_danger_house (0.005180) 13. feature tv (0.005083) 14. feature is_debt (0.005042) 15. feature bank_number (0.003775) 16. feature xin_nong_he_total (0.002452) 17. feature call_number (0.002253) 18. feature debt_total (0.001464) 19. feature xin_yang_lao_total (0.000796) 20. feature bank_name (0.000000) 21. feature standard (0.000000) 22. feature is_back_poor (0.000000) 判断脱贫主要就是看 person_year_total_income (人均年收入), 大于 2800 元的就超过国家贫困线了, 因此我去掉这 2 个因子 person_year_total_income 、 year_total_income ,跑完后,预测成功率是: 81.34%, feature importance 排名如下: Feature ranking: 1. feature subsidy_total (0.198893) 2. feature arable_land (0.176897) 3. feature living_space (0.146558) 4. feature reason (0.129572) 5. feature member_count (0.113734) 6. feature wood_land (0.082290) 7. feature help_plan (0.024511) 8. feature washing_machine (0.020852) 9. feature tv (0.020510) 10. feature is_danger_house (0.019875) 11. feature is_debt (0.014723) 12. feature fridge (0.014228) 13. feature bank_number (0.012896) 14. feature xin_nong_he_total (0.010757) 15. feature call_number (0.007313) 16. feature debt_total (0.003950) 17. feature xin_yang_lao_total (0.002437) 18. feature bank_name (0.000005) 19. feature standard (0.000000) 20. feature is_back_poor (0.000000) 而我统计了下测试数据分布: 贫困 41289 已脱贫 7089 , 如果我全猜已脱贫的概率是 85.3%。 这是不是说明, 随机森林模型 不如 瞎猜? |
9
crayonyi OP 修正上面那条,应该是 “我全猜贫困的概率是 85.3%”
|
10
minami 2016-12-08 00:02:50 +08:00
既然森林分类准确率这么高,考虑下用森林来做回归吧
|
11
lightening 2016-12-08 00:06:05 +08:00
"add 去除秘密字段的数据库" 你知道 git 历史上每个版本的数据库都能下载的,对吧?
|
12
crayonyi OP @minami 可以试试。 不过随机森林分类是用来预测是否脱贫,后面的回归模型是用来预测下一年人均年收入的。 所以没有可比性。
|
13
crayonyi OP @lightening 我知道。这个 commit 之前,是没有数据库文件的。 我第 1 次添加的就是“去除秘密字段的数据库”。
|
14
misaka19000 2016-12-08 00:16:38 +08:00 via Android
楼主大大,请问下机器学习要怎么入门啊😖😖
|
15
AutoRip 2016-12-08 00:22:18 +08:00
Mark down
|
16
skydiver 2016-12-08 00:28:58 +08:00 via Android
是脱敏的数据就好…看到标题吓了一跳
|
17
crayonyi OP @misaka19000 我也刚入门,调用的 sklearn 库,找做这一块的同学问着做的。
|
18
minami 2016-12-08 00:50:04 +08:00
@crayonyi 为什么没有可比性呢?你的实验已经证明了所选取的特征很适合使用决策树类方法,因为各维度的 feature importance 相差的很极端,也就是说不能认为每个特征维度的重要性是相同的。决策树因为分裂准则的关系可以避免这个问题,而线性方法会表现的非常糟糕。另一个选择倒是可以考虑 Kernel SVM ,但是需要更多的手工参数调整
|
19
Xs0ul 2016-12-08 02:22:45 +08:00 1
@crayonyi 以我所学的, 98%的准确率基本上在正常的数据上是不太可能做得到。。所以我之前建议跑一下 feature importance ,看看最重要的的 feature 是不是能够从直观上解释为什么重要。结果你也看到了。。因为你们用了不该用的 feature 。
原来数据里贫困和脱贫比例相差太大,可以考虑 resampling 看看。 |
20
xupefei 2016-12-08 05:54:40 +08:00 1
@misaka19000 弊校正好有个入门级别的课程: https://www.cs.helsinki.fi/en/courses/582631/2016/s/k/1
网上课件,练习题,答案全都有。实践用的是 R 。 |
22
misaka19000 2016-12-08 08:58:37 +08:00
@xupefei 3ks
|
23
bxb100 2016-12-08 09:26:58 +08:00 via Android
请问用的跑数据机器性能如何,我根本跑不起来
|
24
nevin47 2016-12-08 10:04:03 +08:00 via Android
搭车求一份 csv ,多谢楼主
nevin47#foxmail.com 另外 LZ 的数据很明显的出现非均衡了,所以很有必要平衡以后再做训练 我的大论文正好是非均衡研究的,容我最近把论文提交了给这个项目 pull 一个我的 resample 方法,我在我们的小贷数据上测试效果还是不错的 |
26
udumbara 2016-12-08 10:16:58 +08:00
1 、目标变量很奇怪,如果是征信模型,用于对这些人发放贷款,目标变量应该是最后是否违约;
2 、如果以贫困状况为目标变量,收入这个变量和目标变量几乎含义一样; 3 、其实在信用模型里最大的痛点还不是算法的优劣,就以你的这个模型为例,里面的收入和负债;这个两个变量就是这个行业的痛点,真实的收入和隐性的负债,不管是银行还是非银行机构都在拼命解决这种信息不对称的问题,当 X 变量不准时,模型在样本外的预测能力就是个大问题 |
30
crayonyi OP @udumbara 该项目不能为一个完整的征信模型提供数据,但是可以解决冷启动的问题。
因为这部分数据银行没有,他们几乎不存款;互联网公司也没有,因为他们也几乎不上网。 如果想给他们贷款,必须有个第 1 步。 所以我们用 下一年是否脱贫 以及 下一年人均年收入 作为目标变量。 目前商业的贷款,利息大概是 6%左右;但贫困户几乎贷不到商业贷款。 中国扶贫基金会下面有个中和农信,可以给贫困户贷款,但是利息为 12%,高于商业贷款,目的是为了杜绝投机倒把。 现在一年大概贷出去 20-30 个亿,每年利润 3000 万左右。违约率非常低,才百分之零点几, 因为养了 3600 多人,专门下去跑。 这样算下来,平均 1 个员工 1 万块年收入都不到。 当然,这里是有公益性质的。 所以,我们希望能通过技术的手段,把利息和成本降下来。 先走通第 1 步,放出贷款,然后不断用你说的违约率数据,来丰富模型。 |
31
udumbara 2016-12-08 12:32:18 +08:00 via Android
@crayonyi 也算是好事一件,建议是,在信用风险模型才用的算法里,业界目前还是以逻辑回归为主,随机森林算是个黑箱算法,逻辑回归在模型的业务解释上是很好操作的
|
32
udumbara 2016-12-08 12:33:29 +08:00 via Android
@crayonyi 也算是好事一件,建议是,在信用风险模型用的算法里,业界目前还是以逻辑回归为主,随机森林算是个黑箱算法,逻辑回归在模型的业务解释上是很好操作的
|
34
reticentfat 2016-12-08 14:13:34 +08:00
求一份 csv ,多谢楼主 ;wy07011002#gmail.com
|
36
jingliang 2016-12-08 16:47:40 +08:00
mark 一下,对这份数据感兴趣--=
|
37
fatestigma 2016-12-08 16:55:03 +08:00
同求一份 csv , fate_stigma+v2ex#hotmail.com 。感觉有点兴趣,最近学 Julia ,想看看能不能练习一下。
|
38
imsoso 2016-12-08 16:57:26 +08:00
未经允许泄露他人隐私, 5 条以上,已经构成犯罪
|
39
BUPTGuo 2016-12-08 17:16:11 +08:00
@crayonyi 数据不平衡,做重采样再跑下看看?
以非机器学习的角度,脱贫多数不是短时间完成的,收入变化趋势应该对结果有影响。(短时间实现脱贫的,一般都是有突发情况) |
40
BUPTGuo 2016-12-08 17:17:52 +08:00
最近发现好多跟机器学习相关的帖子,搜了下原来真的有个节点叫机器学习,不过似乎帖子热度不高。。。
|
41
ooxxcc 2016-12-08 17:23:10 +08:00
|
42
blublu 2016-12-08 18:02:48 +08:00 via iPhone
[email protected] 来晚了...最近正打算研究机器学习方面的知识.求楼主分享一波数据.谢谢
|
43
woyao 2016-12-08 19:05:47 +08:00
|
44
upmost 2016-12-08 21:00:47 +08:00 via Android
这种信息不能公开在网上吧!
|