特征类别:连续型特征和离散型特征。
数据处理时会用到以下的知识:
- 连续性特征使用归一化,
特征A的取值范围是[-1000,1000],特征B的取值范围是[-1,1]。
如果使用logistic回归,w1x1+w2x2,因为x1的取值太大了,所以x2基本起不了作用。
所以,必须进行特征的归一化,每个特征都单独进行归一化。
- 离散型使用独热编码(哑变量)。
OneHotEncoder独热编码
什么是独热编码
独热码,称做 one-hot code(多么直观的英文啊), 好像也叫做(哑变量 dummy variable)。
直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。
举例如下:假如有三种颜色特征:红、黄、蓝。 在利用机器学习的算法时一般需要进行向量化或者数字化。那么你可能想令 红=1,黄=2,蓝=3.
那么这样其实实现了标签编码,即给不同类别以标签。然而这意味着机器可能会学习到“红<黄<蓝”,但这并不是我们的让机器学习的本意,只是想让机器区分它们,并无大小比较之意。所以这时标签编码是不够的,需要进一步转换。因为有三种颜色状态,所以就有3个比特。
为什么要使用独热编码
独热编码是因为大部分算法是基于向量空间中的度量来进行计算的,为了使非偏序关系的变量取值不具有偏序性,并且到圆点是等距的。使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。将离散型特征使用one-hot编码,会让特征之间的距离计算更加合理。
离散特征进行one-hot编码后,编码后的特征,其实每一维度的特征都可以看做是连续的特征。就可以跟对连续型特征的归一化方法一样,对每一维特征进行归一化。比如归一化到[-1,1]或归一化到均值为0,方差为1。
注意⚠️:
为什么特征向量要映射到欧式空间?
将离散特征通过one-hot编码映射到欧式空间,是因为,在回归、分类、聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算。
独热编码优缺点
优点:独热编码解决了分类器不好