根据变量的度量性质,统计学将变量分为四种: 定类型变量(nominal scale),定序型变量(ordinal scale),定距型变量(interval scale)和定比型变量(ratio scale).更详细解释参看维基百科.
在机器学习中,经常存在定类型变量(nominal scale或qualitative variable). 比如,一个人可能有 ["男", "女"],["同性恋", "异性恋", "双性恋"]等定类型的特征.这些特征能够被有效地编码成整数,比如["男", "异性恋"]可以被表示为[0, 1],["女", "双性恋"]表示为[1, 2].
这个整数特征表示并不能直接作为特征在机器学习中使用,因为这样的连续输入,模型会认为类别之间是定距或者定比的(有截距时通常定距,无截距时通常定比).
假设一个定类型数据有K种类别,将其转换为能够被机器学习模型使用的编码有
使用不同定类型变量编码时,类别作为特征时的没有正则化的线性回归
编码方式 | 截距 | i类系数 | i类编码,共K类 | 编码维度 |
---|---|---|---|---|
dummy coding | 参照类均值 | i类的均值 - 参照类均值 | 若不是参照类,i-dim为1,其他为0;否则全为 0 | K-1 |
effect coding | 总体均值 | i类均值 - 总体均值 | 若不是参照类,i-dim为1,其他为0;否则全部为-1 | K-1 |
one-hot encoding | c | i类均值-c | i-dim为1,其他为0 | K |
其中,总体均值(grand mean)指的是所有类均值的均值, c为任意常数
P.S. 在一些教材中,类别的均值叫做level,标准差叫做scale.
N.B.: 在线性回归中,如果不设定截距为空,则one-hot编码会引起某些参数的singularity,因为one-hot编码下,K维向量的和恒为1,引发perfect multicollinearity.
one-hot encoding, multi-hot的实现可以参看 sklearn.preprocessing中OneHotEncoder,LabelBinarizer, MultiLabelBinarizer和LabelEncoder
dummy coding的实现可以参看pandas.get_dummies.
effect coding的实现接口没找到,可以通过dummy coding来转化(全零向量转化为全-1向量).
In [ ]: