天池挖掘幸福感新人赛——个人赛后总结

一、参赛背景

一条通信专业的闲鱼突然对AI产生了浓厚的兴趣,天天看着各种新闻报导AI相关的东西,只是知道它的相关应用,但具体是怎么回事一直困扰着我,求知欲迫使自己开始了这段艰难的学习历程。一开始是在朋友推荐下先看了吴恩达老师关于机器学习的视频,后来又在朋友推荐下学习了李航老师的《统计学习方法》、周志华老师的《机器学习》,然后就是实现所需的计算机语言,也就是python了,因为自己也算了“科班出身”,对C比较熟悉,用的非常多,一些编程思想还是有的,再加上python比较简单,所以学起来也是比较快,再然后便是学习了《利用python进行数据挖掘》这本书。学了这么多,是骡子是马,当然要拉出来练练,和数学题一样,看得懂和做得出是两回事,于是在朋友推荐下参加了这个比赛,也是感谢天池提供了一个这么好的平台让我练手。

二、赛题说明

赛题使用公开数据的问卷调查结果,选取其中多组变量,包括个体变量(性别、年龄、地域、职业、健康、婚姻与政治面貌等等)、家庭变量(父母、配偶、子女、家庭资本等等)、社会态度(公平、信用、公共服务等等),来预测其对幸福感的评价。赛事训练集提供了8000条训练数据,139个特征、测试集是有2968条数据,数据量偏小。得分计算公式为:

                                              score = \frac{1}{n} \sum_{1}^n(y_{i}- y^*)^2

其中n代表测试集样本数,y_{i} 代表第i个样本的预测值,y^*代表真实值。

比赛地址:【新人赛】快来一起挖掘幸福感!-天池大赛-阿里云天池

三、数据预处理

首先是对label的整体观测:如图,60.3%满意度为4,然后是17.7%为5,3占比是14.5%,2为6.2%,其余为1。关于happiness的解释是:1 = 非常不幸福; 2 = 比较不幸福; 3 = 说不上幸福不幸福; 4 = 比较幸福; 5 = 非常幸福。通过对饼状图和柱形图的观察,发现label“happiness”值为4和5的样本占比高达80%以上,这是很明显的数据不均衡,这可能导致我们训练出来的模型对3、4、5的预测相对于对1、2的预测会更加准确,甚至很大概率对1和2的预测发生很大偏差。


happiness分布

然后是对异常值、缺失值的处理:对于label值“happiness”存在8个异常值-8,占比较小,自己也是选择果断丢弃了这八个样本。“survey_time”与“出生日期”这两项的数据,因为数据类型的原因不好处理,所以选择用调查时间减去出生日期得到年龄“age”这一列作为新的特征,同时舍弃其他两个特征。关于家庭年总收入与个人年总收入这两列,数据跨度较大,选择使用简单sigmoid函数将其映射至(0,1)区间使数据更加平滑,模型更好处理。另外其他的一些分数类数据比如:public_service等,则是选择将其离散化,划分为六个等级。0至5,这里切分点的选择是关键,我这里是参照describe打印的数据进行的切分点选择,不是很理想,建议参考卡方,信息增益,基尼指数或者WOE(要求目标变量是两元变量)等。另外发现有三列数据类型为object,而且是大量缺失,缺失比例高达90%以上,然后描述的问题差不多,只是文字不同,所以我这里选择的是对缺失值填0,其他填1:

data_train["property_other"] = data_train["property_other"].map(lambda x: 0 if pd.isnull(x) else 1)

再如其他缺失值,通过.describe观测其数据基本符合正态分布,这里采用最简单常用的均值填充。

四、数据初步分析

(1)相关性分析: 

使用了皮尔逊相关系数(取值是(-1,1)),分析了各个特征与label的相关系数,其中排名前五的特征分别为:depression(0.32),family_status(0.30),equity(0.28),class(0.25),health(0.24),这说明这些特征在之后的建模中会拥有更高的权重,也说明实际生活中,一个人幸不幸福,与之相关的前五项因素分别是:沮丧成度、家庭经济状况、社会公平性、本人所处等级和目前身体状况。这也符合当今社会的社会现实,有一项不是很理想,都会严重影响一个人的幸福感!最后选择了相关性大于0.01的作为建模所需特征。

(2)depression分布

depression的解释是:在过去的四周中您感到心情抑郁或沮丧的频繁程度,1 = 总是; 2 = 经常; 3 = 有时; 4 = 很少; 5 = 从不;在相关系数里排名最高达0.32,最大值为5,最小值为-8,有18个,均值为3.81。1/4与3/4中位数分别为3和5,中位数为4,符合正态分布。与happiness的关系分布如图:

幸福感与沮丧程度关系图


可以发现18个异常值-8的幸福指数均为3,所以我做的是提取所有幸福指数为3的样本然后用这些样本的depression的平均值填充这18个异常值。

五、算法选择

关于算法的选取自己其实是模糊的,不是很清楚对于这种问题什么算法最好,只是知道xgboost是kaggle比赛大杀器,再基于前辈们的经验,一开始使用的是xgboost作为第一个算法模型,用了sklearn里的cv作为验证集调参,发现训练误差还可以,但是上传.csv文件后发现排名140多,测试误差让人不是很满意,于是陆续用了lightgbm和cat boost结果也不是很让人满意,最后选择了使用stacking模型融合,将三种强大的算法融合在一起。效果还是很明显的,排名瞬间上身100多。

六、初步成绩

通过数据预处理、数据分析,选择了三种强大算法的stacking融合,最后成绩是0.4687(四舍五入为0.469),排在第31名。这个结果也只能是差强人意,自己也有信心如果继续往下做下去应该是可以进前十(第十名成绩0.466,只差0.003),但因为新人赛,自己也走了一个完整的流程,还需要很多时间去完善各个方面的知识并朝着神经网络进发,也是打算这个比赛到此为止了。


最终成绩排名

虽然现在mse的值与整体排名相对靠前,但是模型对幸福度1、2的预测还是相对不准的,在实际业务中,对于1、2的区分相比3、4、5弱了很多,这里只是计算均方差不高,但实际对每个程度的幸福感的区分不是特别理想的。而且,个人感觉这个0.469的误差大部分是来自对1、2的预测,原因上面也提到了,这两项的训练数据太少,生成的模型对这两项的预测能力相对是低的。关于如何提高整体排名,个人觉得还是要回到数据中去,因为数据和特征才是决定机器学习上限的地方,算法与模型只能逼近这个上限,通过对数据的观察,某些特征是存在联系的,去找出这些联系,提取出特征,成绩应该还能再往上提一提。

七、模型分析

关于自己的这个模型,感觉是存在over-fitting现象的,训练误差要比测试误差大一些,虽然差的不多。关于对数据的处理也做得不是很理想,可惜数据量不够,不然可以将训练数据采样出一部分作为验证集,让自己的模型在验证集上表现好一些,这样不至于每天只有两次机会(每天中午12点和晚上八点更新排名)测试自己模型的表现,关于处理over-fitting也可以:早停止,数据集扩增,正则化,交叉验证等方法防止。最后讲讲对stacking模型融合的分析,这里stacking是将三种强大的分类器(xgboost、lightgbm、catboost)作为弱分类器,将他们得出的结果作为第一阶段的预测,然后作为下一阶段的特征,比起相互独立的预测模型能够有更强的非线性表述能力,降低泛化误差。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容