免费开放 33.5 万条 贫困户记录,用来做 机器学习 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
crayonyi
V2EX    互联网

免费开放 33.5 万条 贫困户记录,用来做 机器学习

  •  1
     
  •   crayonyi 2016-12-07 22:04:31 +08:00 6964 次点击
    这是一个创建于 3306 天前的主题,其中的信息可能已经有所发展或是发生改变。

    github 地址: https://github.com/bowenpay/poormining

    我们公司正在做一个贫困户的征信模型 v0.1 ,以发展农村金融。

    为了争取开源世界的力量,开放了 2 个县的数据,共 33.5 万条 贫困户记录,每条记录有 33 个字段。时间跨度为 2014 年~2016 年, 3 年共 3 张表。这 2 个县,一个县用于建模,另一个县用于验证。

    其中,需要建模预测下一年是否能脱贫以及下一年的人均年收入。

    目前用随机森林模型预测是否脱贫,准确率高达 98% ;

    用线性回归模型预测下一年人均年收入,在误差为 10%的情况下,准确率为 60%;

    使用 Lasso 回归模型 和 岭回归模型 预测效果也为 60%左右。

    预测下一年人均年收入

    欢迎大家来修改代码,使用更多的模型来预测,或者调整模型参数,以提高预测准确度。

    第 1 条附言    2016-12-08 17:27:05 +08:00
    由于隐私问题,没有考虑清楚,决定暂时先关闭项目。
    45 条回复    2016-12-20 10:42:56 +08:00
    crayonyi
        1
    crayonyi  
    OP
       2016-12-07 22:12:22 +08:00
    不知道为什么刚发布的时候,在首页看不到,回复一条试试
    miyuki
        2
    miyuki  
       2016-12-07 22:45:19 +08:00
    正在入门基于 R 的机器学习,感谢 lz
    marenight
        3
    marenight  
       2016-12-07 22:48:04 +08:00
    数据格式是 sql 么?楼主能不能给个其他比较友好的格式,比如 csv 啥的。
    crayonyi
        4
    crayonyi  
    OP
       2016-12-07 22:54:12 +08:00
    @marenight 对的,是 sql 。想要 csv ,可以留邮箱,我发给你
    Xs0ul
        5
    Xs0ul  
       2016-12-07 22:55:48 +08:00 via Android
    感觉准确率相当的高啊,有做 feature importance 看看那些因素影响比较大吗?
    crayonyi
        6
    crayonyi  
    OP
       2016-12-07 23:06:13 +08:00
    @Xs0ul 只是统计了一下各个因子,单独作用下的效果,写在这个文档里了:[https://shimo.im/doc/IeBd3kPBK0MC1aQY]( https:/shimo.im/doc/IeBd3kPBK0MC1aQY)

    我第一次知道有 feature importance , 去查一下
    marenight
        7
    marenight  
       2016-12-07 23:27:52 +08:00
    crayonyi
        8
    crayonyi  
    OP
       2016-12-07 23:27:58 +08:00
    @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%。

    这是不是说明, 随机森林模型 不如 瞎猜?
    crayonyi
        9
    crayonyi  
    OP
       2016-12-07 23:45:47 +08:00
    修正上面那条,应该是 “我全猜贫困的概率是 85.3%”
    minami
        10
    minami  
       2016-12-08 00:02:50 +08:00
    既然森林分类准确率这么高,考虑下用森林来做回归吧
    lightening
        11
    lightening  
       2016-12-08 00:06:05 +08:00
    "add 去除秘密字段的数据库" 你知道 git 历史上每个版本的数据库都能下载的,对吧?
    crayonyi
        12
    crayonyi  
    OP
       2016-12-08 00:12:59 +08:00
    @minami 可以试试。 不过随机森林分类是用来预测是否脱贫,后面的回归模型是用来预测下一年人均年收入的。 所以没有可比性。
    crayonyi
        13
    crayonyi  
    OP
       2016-12-08 00:14:26 +08:00
    @lightening 我知道。这个 commit 之前,是没有数据库文件的。 我第 1 次添加的就是“去除秘密字段的数据库”。
    misaka19000
        14
    misaka19000  
       2016-12-08 00:16:38 +08:00 via Android
    楼主大大,请问下机器学习要怎么入门啊
    AutoRip
        15
    AutoRip  
       2016-12-08 00:22:18 +08:00
    Mark down
    skydiver
        16
    skydiver  
       2016-12-08 00:28:58 +08:00 via Android
    是脱敏的数据就好…看到标题吓了一跳
    crayonyi
        17
    crayonyi  
    OP
       2016-12-08 00:31:59 +08:00
    @misaka19000 我也刚入门,调用的 sklearn 库,找做这一块的同学问着做的。
    minami
        18
    minami  
       2016-12-08 00:50:04 +08:00
    @crayonyi 为什么没有可比性呢?你的实验已经证明了所选取的特征很适合使用决策树类方法,因为各维度的 feature importance 相差的很极端,也就是说不能认为每个特征维度的重要性是相同的。决策树因为分裂准则的关系可以避免这个问题,而线性方法会表现的非常糟糕。另一个选择倒是可以考虑 Kernel SVM ,但是需要更多的手工参数调整
    Xs0ul
        19
    Xs0ul  
       2016-12-08 02:22:45 +08:00   1
    @crayonyi 以我所学的, 98%的准确率基本上在正常的数据上是不太可能做得到。。所以我之前建议跑一下 feature importance ,看看最重要的的 feature 是不是能够从直观上解释为什么重要。结果你也看到了。。因为你们用了不该用的 feature 。

    原来数据里贫困和脱贫比例相差太大,可以考虑 resampling 看看。
    xupefei
        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 。
    kraymond
        21
    kraymond  
       2016-12-08 08:03:34 +08:00 via Android
    楼主能不能也给我发一份 csv 文件? kraymond#yeah.net 谢谢
    misaka19000
        22
    misaka19000  
       2016-12-08 08:58:37 +08:00
    @xupefei 3ks
    bxb100
        23
    bxb100  
       2016-12-08 09:26:58 +08:00 via Android
    请问用的跑数据机器性能如何,我根本跑不起来
    nevin47
        24
    nevin47  
       2016-12-08 10:04:03 +08:00 via Android
    搭车求一份 csv ,多谢楼主

    nevin47#foxmail.com

    另外 LZ 的数据很明显的出现非均衡了,所以很有必要平衡以后再做训练

    我的大论文正好是非均衡研究的,容我最近把论文提交了给这个项目 pull 一个我的 resample 方法,我在我们的小贷数据上测试效果还是不错的
    crayonyi
        25
    crayonyi  
    OP
       2016-12-08 10:16:43 +08:00
    @minami 我用你的方法试试。 如果你能做 pull request ,那就更好。
    udumbara
        26
    udumbara  
       2016-12-08 10:16:58 +08:00
    1 、目标变量很奇怪,如果是征信模型,用于对这些人发放贷款,目标变量应该是最后是否违约;
    2 、如果以贫困状况为目标变量,收入这个变量和目标变量几乎含义一样;
    3 、其实在信用模型里最大的痛点还不是算法的优劣,就以你的这个模型为例,里面的收入和负债;这个两个变量就是这个行业的痛点,真实的收入和隐性的负债,不管是银行还是非银行机构都在拼命解决这种信息不对称的问题,当 X 变量不准时,模型在样本外的预测能力就是个大问题
    crayonyi
        27
    crayonyi  
    OP
       2016-12-08 10:25:01 +08:00
    @kraymond @nevin47 csv 数据已发
    crayonyi
        28
    crayonyi  
    OP
       2016-12-08 10:26:24 +08:00
    @bxb100 我用的是 mac pro ,大概 20 秒左右出结果。
    bxb100
        29
    bxb100  
       2016-12-08 10:34:12 +08:00 via Android
    @crayonyi 谢谢
    crayonyi
        30
    crayonyi  
    OP
       2016-12-08 10:38:32 +08:00
    @udumbara 该项目不能为一个完整的征信模型提供数据,但是可以解决冷启动的问题。

    因为这部分数据银行没有,他们几乎不存款;互联网公司也没有,因为他们也几乎不上网。 如果想给他们贷款,必须有个第 1 步。 所以我们用 下一年是否脱贫 以及 下一年人均年收入 作为目标变量。

    目前商业的贷款,利息大概是 6%左右;但贫困户几乎贷不到商业贷款。

    中国扶贫基金会下面有个中和农信,可以给贫困户贷款,但是利息为 12%,高于商业贷款,目的是为了杜绝投机倒把。
    现在一年大概贷出去 20-30 个亿,每年利润 3000 万左右。违约率非常低,才百分之零点几, 因为养了 3600 多人,专门下去跑。 这样算下来,平均 1 个员工 1 万块年收入都不到。 当然,这里是有公益性质的。

    所以,我们希望能通过技术的手段,把利息和成本降下来。 先走通第 1 步,放出贷款,然后不断用你说的违约率数据,来丰富模型。
    udumbara
        31
    udumbara  
       2016-12-08 12:32:18 +08:00 via Android
    @crayonyi 也算是好事一件,建议是,在信用风险模型才用的算法里,业界目前还是以逻辑回归为主,随机森林算是个黑箱算法,逻辑回归在模型的业务解释上是很好操作的
    udumbara
        32
    udumbara  
       2016-12-08 12:33:29 +08:00 via Android
    @crayonyi 也算是好事一件,建议是,在信用风险模型用的算法里,业界目前还是以逻辑回归为主,随机森林算是个黑箱算法,逻辑回归在模型的业务解释上是很好操作的
    honeycomb
        33
    honeycomb  
       2016-12-08 13:11:36 +08:00 via Android
    @crayonyi 脱敏数据很棒
    reticentfat
        34
    reticentfat  
       2016-12-08 14:13:34 +08:00
    求一份 csv ,多谢楼主 ;wy07011002#gmail.com
    andysheng
        35
    andysheng  
       2016-12-08 15:10:58 +08:00
    同求一份 csv , andysheng#live.com
    jingliang
        36
    jingliang  
       2016-12-08 16:47:40 +08:00
    mark 一下,对这份数据感兴趣--=
    fatestigma
        37
    fatestigma  
       2016-12-08 16:55:03 +08:00
    同求一份 csv , fate_stigma+v2ex#hotmail.com 。感觉有点兴趣,最近学 Julia ,想看看能不能练习一下。
    imsoso
        38
    imsoso  
       2016-12-08 16:57:26 +08:00
    未经允许泄露他人隐私, 5 条以上,已经构成犯罪
    BUPTGuo
        39
    BUPTGuo  
       2016-12-08 17:16:11 +08:00
    @crayonyi 数据不平衡,做重采样再跑下看看?
    以非机器学习的角度,脱贫多数不是短时间完成的,收入变化趋势应该对结果有影响。(短时间实现脱贫的,一般都是有突发情况)
    BUPTGuo
        40
    BUPTGuo  
       2016-12-08 17:17:52 +08:00
    最近发现好多跟机器学习相关的帖子,搜了下原来真的有个节点叫机器学习,不过似乎帖子热度不高。。。
    47jm9ozp
        41
    47jm9ozp  
       2016-12-08 17:23:10 +08:00
    @crayonyi 不能只看准确度 accuracy ,还要考虑 recall

    参考一下这里 https://www.coursera.org/learn/machine-learning/home/
    blublu
        42
    blublu  
       2016-12-08 18:02:48 +08:00 via iPhone
    [email protected] 来晚了...最近正打算研究机器学习方面的知识.求楼主分享一波数据.谢谢
    woyao
        43
    woyao  
       2016-12-08 19:05:47 +08:00
    upmost
        44
    upmost  
       2016-12-08 21:00:47 +08:00 via Android
    这种信息不能公开在网上吧!
    mikumkf
        45
    mikumkf  
       2016-12-20 10:42:56 +08:00
    我们是江西师范大学的一个研究团队,最近在和政府机构合作试图在这方面做一些工作,希望能拿到这些贫困户记录来训练样本,能联系下嘛 mikumkf#gmail.com
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2803 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 06:19 PVG 14:19 LAX 22:19 JFK 01:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86