推荐系统(特征处理)

摘要

“数据与特征决定了一个模型的上限,而模型算法的目的则为逼近这个上限”
对于特征一般的处理流程是|:特征提取->特征清洗–>特征处理–>特征监控

特征工程的一些处理方法:

数值特征处理:

方法一:无量纲处理:

无量纲化使得不同规格的数据转换成为到同一规格。常见的无量纲化处理包括标准化与区间缩放法;一般而言,标准化的前提是特征服从正态分布,经过标准化后,将其转换为标准正态分布。区间缩放法利用了边界值的信息,将特征的取值区间缩放到某一个特定的范围,例如:[0,1]区间。
标准化变换之后,各个维度的特征的均值是0,方差为1,也叫作Z-Score规范化,计算公式如下: X ’ = ( x – x ( e ) ) / s X’ = (x – x(e)) /s X=(xx(e))/

//标准化
import numpy as np
from sklearn import preprocessing

x = np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1.,-1.]])
x_scaled = preprocessing.scale(x)
print(x_scaled)

区间缩放法又被称之为最大-最小标准化,最大-最小标准化是对原始数据进行线性变换,变换到[0,1 ],计算公式为: X ′ = ( x − M i n ) / ( M a x − M i n ) X' = (x - Min) / (Max - Min) X=(xMin)/(MaxMin)

//区间缩放
import numpy as np
from sklearn import preprocessing
x = np.array([[1.,-1.,2.,],[2.,0.,0.],[0.,1.,-1.]])
x_max_min_scaled = preprocessing.MinMaxScaler().fit_transfrom(x)
print(x_max_min_scaled)

方法二:非线性变换

很多情况下,对数据进行非线性的变换也是一个很好的特征处理方法,常用的非线性变换有基于多项式,基于指数函数和基于对数函数的非线性变换。
一般而言,一般对数变换后的特征分布更加平稳。对数变换能过很好的解决随着自变量的增加,因变量的方差增大的问题。另外一方面,对非线性的数据通过对数变换,转换成为线性数据,便于利用线性模型进行相关的操作。

离散化

无监督的离散化
  分箱:
    等宽分箱:就是根据箱子的个数得出固定的宽度。
    等频分箱:就是使得每一个箱子中的数据个数是一样的
    在等频或者等宽分箱完成后,可以用箱子中的平均值或者说是中位数代替。其中,等宽分箱法对于异常点比较敏感,而等频分箱法有时候会将具有相同标签特征的属性分到不同的箱子里面。
  基于聚类的离散化:类似于KNN算法,就是分成不同的簇
有监督的离散化:
  基于熵的离散化:类似于决策树的思想。是一种有监督的,自顶向下的分裂技术。
  基于卡方的离散化:是一种有监督的,自底向上的技术。(合并的方法)

离散特征处理

方法一:One-hot编码

方法二:特征哈希

特征哈希的目标是把原始的高维特征向量压缩成为较低维的特征向量,且尽量不损失原始特征的表达能力,是一种快速且比较节省空间的特征向量化方法。

方法三:时间特征处理

你可能感兴趣的:(推荐系统,数据处理)