Pands在进行数据处理是往往会遇到标签型数据,比如省份【北京,上海,广州】,有些模型需要使用数字型进行计算,很自然的我们想将其转化为【0,1,2】的数字来表示,但是,这样会造成一个问题,数字是有大小的,而且是有顺序的,但是我们的数据没有大小的意义,数字映射并不符合原来特征的意义。
为了解决这个问题,引入了独热编码也就是One-hot,也就是说,北上广,三种可能性,对应的三个互斥的编码,001,010,100,对于每一条数据来说,只会有一位是1,我们称此时的数据是稀疏的。
这样不仅解决了分类器不好处理属性数据的问题,而且也起到了扩充特征的作用。
为什么这样就解决了分类器不好处理的问题呢?
因为大部分分类其实是基于计算向量距离或是向量夹角,经过One-hot编码后,每一个特征的值都是空间的一个点,计算起来很方便,并且这个点的每一维都可以看成是连续的特征,可以使用连续特征的归一化方法,所以基于此特征在一定程度上得到了扩张。
那么为什么需要标准化/归一化呢?
这两个名词都是从normalization翻译来的,我认为将归一化认为标准化的一个特定范例比较合适,特征的归一化(normalization)是以去量纲为目的,不改变两个特征的二维分布,例如Z-score标准化(减均值/标准差),改变了样本原始的分布,此处脑补那个长椭圆和正圆形,这使得模型的收敛速度加快,并且避免的大小不一的数据差距带来的精度损失。
或非线性转换取对数 log10(x)/ log10(max)。x大于等于1。
那么什么时候需要使用这两种方法呢?
一般在分类和聚类算法中,需要使用距离来度量相似性时,或是使用pca进行降维时,一般使用标准化。
而在不涉及到距离,协方差,数据不符合正太分布的时候,使用归一化比较好一点,因为归一化对协方差产生了倍数的影响,这时候再pca降维就不合适了。
基