数据&特征

在做机器学习的时候,首先面对的问题不是模型,而是数据和特征,在实际操作的过程中,我们发现,在数据和特征上花费的时间要远大于在模型上花费的时间,所以,这一节我们来总结一下数据和特征需要的事情

数据上面临的问题以下几个:数据采集、数据格式化存储、数据清洗、数据采样

数据采集

数据采集我们首先要考虑几个问题,我们有哪些数据,其中哪些数据对最后的结果预测有帮助,线上实时计算的时候我们能够获取到哪些数据,这个是我们做数据的时候需要考虑的问题,比如对于广告来说,我们有很多数据,展现日志、点击日志、计费日志、滑屏日志、转化日志、用户画像等等数据,那么对于做ctr预估来说,我们需要选择那些数据,展现点击日志、用户画像是我们最需要的

数据的格式化和存储

数据采集完毕了之后,接下来就是需要确定如何存储,存储的格式是什么样的,基于互联网的数据量,一般会存储在hdfs上或者在hdfs之上建立hive表。存储的格式还是按照我们后续的需要来存储,这个可以比较灵活

数据清洗

这里面一般常说的一句话就是garbage in,garbage out。数据清洗的去掉脏数据、异常点,处理缺省值比较多的特征,第一步可以用简单的规则来去掉脏数据,例如在做ctr预估的时候,我们就需要去掉作弊数据,例如一秒内的点击达到100次,很明显是异常数据,这些数据就要去掉。再就是缺省值的处理,这个地方先放着,后面进行补充

数据采样

对数据进行采样的场景有两个:1是样本数据量太大,没有必要用这么多的数据进行训练,量大了消耗计算资源,所以需要对样本进行下采样,需要注意的是保持分布一致。2是对于分类问题,正负样本不均衡的情况下,需要做下处理,主要包括上采样、下采样、修改loss function。注意,对于回归问题我们需要正负样本均衡么,不需要,例如如果训练ctrmodel,强制的进行正负样本均衡,会使得预估值偏高。

特征上面临的问题有以下两个:特征处理、特征选择

特征处理

特征处理对不同类型的特征进行处理,以便更好的进行模型训练。下面针对不同类型的特征介绍下处理的方法

数值型,例如房价、年龄、收入等。对数值型的特征常用的处理方法有:归一化、统计值、离散化、hash分桶。首先说一下归一化,每个数值型的特征的值域范围可能是不一样的,例如收入跟身高,他们的值域是不一样的,有人说为什么要归一化呢,收入跟身高虽然值域不一样,他们训练的时候特征的系数不就可以表征了,其实这里的原因是

你可能感兴趣的:(机器学习)