Kaggle 上一个用户分类问题

来源:互联网 发布:西安软件服务业产值 编辑:程序博客网 时间:2024/06/05 20:27

Kaggle 地址

参考模型

其实这个项目的关键点在与存在大量的离散的特征,对于离散的维度的处理方法一般就是把每个离散维度的每个特征水平都像SQL行列装换那样转成一个维度,这个维度下的值只有0或1。但这样势必会导致维度暴增。这个项目就是典型,用merge函数把用户表和活动表链接后,存在大量的离散维度。这时候就要用到一种处理维度太多的方法,就是所谓“Hash Trick” 。

假设你的离散维度是用户的学历,每个特征水平拆成单个维度后,有了如下几个维度:

研究生以上,大学本科,大专,高中,初中,小学

有一个hash函数,hash函数的size是5:

hash(研究生以上)=2hash(大学本科)=3hash(大专)=4hash(高中)=2hash(初中)=0hash(小学)=0

因为hash函数的size是5,所以所有的结果都不可能大于等于5(0-4)

那么降维以后原本“研究生以上,大学本科,大专,高中,初中,小学”这6个特征就变成了5个特征,每个特征上的值是这个hash的结果值出现的次数:

[2,0,2,1,1]

0出现了两次,1出现了0次,2出现了两次以此类推。

参考模型里出现了这样一个formula:

f <- ~ . - people_id - activity_id - date.x - date.y - 1

这里解释下,对于hashed.model.matrix这个函数,因为是用来降维的,不关心因变量所有tide符号左边没有值,减号表示剔除一些维度,最后“-1”是因为hashed.model.matrix会在第一列产生一些不明用途的数据,参考这篇链接:点击打开链接



param <- list(objective = "binary:logistic",              eval_metric = "auc",              booster = "gblinear",              eta = 0.03)

上面的Param就是最后boost用到的参数,可以看到著名的逻辑回归,eta表示boost调整权重时的尺度,

booster参数可以选gblinear或gbtree,有待介绍


0 0