个人总结:数据、特征预处理(含word2vec)

缺失值处理

连续值

一般采用取平均值或者中位数来进行填充。

离散值

最频繁出现的类别(或者众数)来填充。

 

异常值清洗

异常数据可能给模型带来很大的偏差。

聚类清洗

例如,通过KMeans将训练样本分成若干簇,如果某一个簇里的样本数很少,而且簇质心和其他所有的簇都很远,那么这个簇里面的样本极有可能是异常特征样本。可将其从训练集过滤掉。同样道理还可以使用BIRCH和DBSCAN密度聚类算法。

异常点检测算法

使用iForest或者one-class-SVM来进行过滤所有的异常点。

 

特殊的特征处理

日期

对于20180519这样的值没办法直接使用。

一般有几种比较有代表性的方法:

  1. 时间差值法:使用UTC计算到某一天的时间差,从而将其转化为连续值。
  2. 根据时间的年月日,星期,小时数,将一个时间特征转化为若干个离散特征。
  3. 权重法:根据时间的新旧设置一个权重值。

地理位置

“成都市锦江区XX街道XX号”,可以转化为离散值和连续值。若是离散值的话,可以转化为多个离散特征,如城市名,区县,街道等。但是如果需要判别用户分布区域,则一般处理成连续值比较好,这时可以转化为经度和维度的连续特征。

 

特征的标准化和归一化

为什么需要标准化/归一化?

因为特征的数值范围不同的话,会影响梯度下降的速率。如果将目标函数的等值图画出来,数值范围大的特征,那个方向会需要更多次的迭代才能找到最优解。如果将每个特征的范围转化成一致的,那么等值图的图形会是一个圆形,梯度下降在各个方向的速率是一样的,可以更快地找到最优解。

不管是标准化还是归一化,它们的本质都是线性变换,是一个的形式,都是压缩后再进行平移。这样的性质决定了对数据进行改变后不会造成“失效”。从公式也可以看出,只是数据的均值和方差发生了变化,数据具体服从某种分布并没有得到改变。

min-max归一化

\frac{x - min}{max - min}

缩放仅仅和最大值,最小值的差别有关。在没有归一化之前,每个特征有自己的量纲,假设有两个特征,面积和房间数。因变量为房价。

在没有归一化之前,面积可以为0~1000,房间数为0~10,损失函数的等高线与参数的收敛关系可能是这样的

可以看到未归一化时图像的等高线类似于椭圆形状。归一化后

图像的等高线类似于圆形形状。明显可以看到最优解的寻优过程会变得平缓,更容易正确收敛到最优解。

z-score标准化

缩放和每个点都有关系,具体方法是求出均值和标准差,用(x-mean)/std来代替原特征。这样就变换到了均值为0,方差为1的分布(这里很容易误以为标准化后就符合正态分布,而是原始随机变量服从什么分布,标准化后就服从什么分布,只是均值和方差变了)。sklearn中使用StandardScaler来做z-score标准化。

è¿éåå¾çæè¿°

可以看出,标准化后能够加速损失函数收敛速度。能够更快得出最优参数ω和b。z-score最适用的数据分布是近似高斯分布,其他分布的效果可能效果会变差,比如长尾分布,分布的改变可能会影响数据原有的表现情况。

标准化(z-s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值