V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
crayonyi
V2EX  ›  互联网

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

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

    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
    最近发现好多跟机器学习相关的帖子,搜了下原来真的有个节点叫机器学习,不过似乎帖子热度不高。。。
    ooxxcc
        41
    ooxxcc  
       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   ·   实用小工具   ·   1032 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 19:50 · PVG 03:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.