【强推】数据挖掘比赛通用框架

【强推】数据挖掘比赛通用框架 1.前言

Kaggle上有篇名为「Approaching(Almost)AnyMachineLearningProblem」的博客(点击底部阅读原文),作者是Kaggle比赛的专业户,博客是他参加Kaggle比赛的经验总结。在进入正题前随便扯几句:

本文并非原博客的翻译版,而是90%的原创,是在原博客基础上融合自己的经验,重写了大部分章节和代码。所以当你看到本文跟原博客差别很大时,请不要怀疑人生;-P

原博客题目直译过来是『解决(几乎)任一机器学习问题的方法』,但原博客内容更偏数据挖掘之『术』而非机器学习之『道』,因为讲解了很多实际操作的trick和代码,所以我给本文取名为『数据挖掘比赛通用框架』。为简化描述,后续用ML指代机器学习,DM指代数据挖掘

本文可以看做是一篇科普性质的文章,内容简单基础,关键在于结合实际实践这些想法,所谓practicemakesperfect.

本人连续多天利用数个晚上写成此文,请尊重原创,转载请注明。也希望本文能给各位带来收获,如有疏漏,望积极指正,先行谢过

2.背景

DM流程通常分两个阶段

Step1.数据清洗,数据格式调整Step2.特征构建,模型选择,效果评估

Step1.是整个流程中最耗时的,这点想必大家早有耳闻,DM界有句名言garbagein,garbageout,可见清洗数据非常重要。从我的经验看,这部分工作跟实际处理的业务问题关系很大,比较dirty,也没有统一流程,所以本文重点放在Step2.

3.前期准备3.1.数据变换

先把原始数据通过一定变换,变成通用的多列数据类型,作为ML模型的输入,也就是上面的Step1。用X代表样本及其特征集合,y代表样本标签集合,整个流程如下:

3.2.问题分类

根据标签y的不同,可以把DM问题分为以下几类:

二分类问题(这种问题在工业界最为常见,比如广告点击率预估、推荐系统购买行为预测),此时y只有一维,取值只有两个(比如0-1),每个样本有唯一的标签。比如预测广告是否会被用户点击;用户是否会购买某种商品多分类问题(比如微博用户情感分析、用户对理财产品偏好性分析),通常此时y有多维,每维代表一个类标签,取值只有两个(比如0-1),每个样本有唯一的标签;当然,y也可以只有一维,取值有多个,每个值代表一个类标签。比如通过微博分析出用户情感属于喜怒哀乐等哪类;将理财产品的用户群体分为偏好型/温和型/厌恶型多标签问题(比如音乐的标签划分),y有多维,跟多分类的区别在于,样本可以同时属于多个标签。作为一枚钢琴爱好者,这里以钢琴作品举例,假设标签集合为{独奏,协奏,浪漫主义,印象主义},最爱之一的德彪西「月光」无疑属于{独奏,印象主义},朗总成名作柴一则可归为{协奏,浪漫主义},云迪家喻户晓的肖邦夜曲是{独奏,浪漫主义},而中国特色的「保卫黄河」可归为{协奏}单回归问题(比如股价预测),y只有一维,取值为连续值。比如预测阿里明天的股价多回归问题(比如天气预测),y有多维,取值连续。比如预测明天的气温、空气湿度、降雨量3.3.评价指标

预测结果的好坏需要用一些指标来衡量,通常不同类型的DM问题有不同的评价指标。对于二分类问题,很多时候类别本身不均衡(比如正样本很多负样本极少),所以我们通常用AUC值——即ROC曲线下的面积——来评价二分类结果;在多分类或者多标签问题中,我们通常选取评价指标为交叉熵(cross-entropy)或者log损失(logloss);对于回归问题,则可以选用MSE(meansquareerror)

3.4.工具

我跟原博客作者一样,提倡使用python解决DM问题,因为python的第三方库非常齐全,以下是常见的、用于DM问题的python库:

pandas:仿照了R语言的数据结构、数据操作,一般用来做数据预处理,特征工程,其DataFrame数据格式用起来相当便利scikit-learn:家喻户晓的ML库,各种聚类、分类、回归模型等,也可以用来做预处理xgboost:陈天奇大神的杰作,改进了传统的GBDT模型,在底层用一些trick加速模型训练,非常值得一试,可以取代其他ML库里的GBDT系列模型(很早就听说过这个碉堡的库,但一直没有上手实践,实在汗颜…后面我会结合GBDT做特征工程,实践下效果,发布到







































南昌白癜风专科医院
北京哪个医院能治疗白癜风



转载请注明:http://www.92nongye.com/xxnr/204612623.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了