提交 2ee41e8e 编写于 作者: L leiuu

One-Hot Encoding 统一为独热编码

上级 80b1e5a1
......@@ -14,7 +14,7 @@
## One-hot 编码
将类别特征进行表示一个最好的办法就是使用一组比特位来表达。每一位代表一个可能的类别。 如果该变量不能一次成为多个类别,那么该组中只有一位可以是1。 这被称为热编码,它在Scikit Learn中实现[sklearn.preprocessing.OneHotEncoder](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html)。 每个位都是一个特征。 因此是一个绝对的具有k个可能类别的变量被编码为长度为k的特征向量。
将类别特征进行表示一个最好的办法就是使用一组比特位来表达。每一位代表一个可能的类别。 如果该变量不能一次成为多个类别,那么该组中只有一位可以是1。 这被称为热编码,它在Scikit Learn中实现[sklearn.preprocessing.OneHotEncoder](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html)。 每个位都是一个特征。 因此是一个绝对的具有k个可能类别的变量被编码为长度为k的特征向量。
表5-1 对3个城市的类别进行独热编码
......@@ -24,7 +24,7 @@
|New York|0|1|0|
|Seattle|0|0|1|
热编码非常易于理解。 但它使用的是比严格必要的更多的一点。 如果我们看到k-1位是零,那么最后一位必须是1,因为变量必须具有k个值中的一个。 在数学上,可以写下这个约束条件为“所有位的和必须等于1”。
热编码非常易于理解。 但它使用的是比严格必要的更多的一点。 如果我们看到k-1位是零,那么最后一位必须是1,因为变量必须具有k个值中的一个。 在数学上,可以写下这个约束条件为“所有位的和必须等于1”。
等式 5-1. 独热编码```e1,e2,e3```限制条件。
......@@ -34,7 +34,7 @@
## dummy编码
单热编码的问题是它允许k个自由度,其中变量本身只需要k-1。 虚拟编码通过仅使用表示中的k-1个特征来消除额外的自由度。 公共汽车下面有一个特征,由全零矢量表示。 这被称为参考类别。 虚拟编码和单热编码都是在Pandas中以[pandas.get_dummies](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html)的形式实现的。
独热编码的问题是它允许k个自由度,其中变量本身只需要k-1。 虚拟编码通过仅使用表示中的k-1个特征来消除额外的自由度。 公共汽车下面有一个特征,由全零矢量表示。 这被称为参考类别。 虚拟编码和独热编码都是在Pandas中以[pandas.get_dummies](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html)的形式实现的。
表5-2 对3个城市的类别进行dummy编码
......@@ -154,7 +154,7 @@ array([ 500., -1000.])
|Seattle|-1|-1|
Effect编码与虚拟编码非常相似,但是在线性回归中更容易被拟合。例子5-2表达了运行机理。截距项表示目标的全球平均值变量,单个系数表示各个类别的平均值与全球平均值有多少差异。 (这被称为类别或级别的主要效果,因此名称为“效果编码”。)热编码实际上具有相同的截距和系数,但在这种情况下,每个城市都有线性系数。 在效果编码中,没有单一特征代表参考类别。 因此,参考类别的影响需要分别计算为所有其他类别的系数的负和。(查看[what is effect coding?](https://stats.idre.ucla.edu))
Effect编码与虚拟编码非常相似,但是在线性回归中更容易被拟合。例子5-2表达了运行机理。截距项表示目标的全球平均值变量,单个系数表示各个类别的平均值与全球平均值有多少差异。 (这被称为类别或级别的主要效果,因此名称为“效果编码”。)热编码实际上具有相同的截距和系数,但在这种情况下,每个城市都有线性系数。 在效果编码中,没有单一特征代表参考类别。 因此,参考类别的影响需要分别计算为所有其他类别的系数的负和。(查看[what is effect coding?](https://stats.idre.ucla.edu))
例子5-2 Effect编码的线性回归
......@@ -182,9 +182,9 @@ array([ 666.66666667, -833.33333333])
类别变量的优点和缺点
单热,虚拟和效果编码非常相似。 他们每个人都有优点和缺点。 单热编码是多余的,它允许多个有效模型一样的问题。 非唯一性有时候对解释有问题。该优点是每个特征都明显对应于一个类别。 此外,失踪数据可以编码为全零矢量,输出应该是整体目标变量的平均值。
独热,虚拟和效果编码非常相似。 他们每个人都有优点和缺点。 独热编码是多余的,它允许多个有效模型一样的问题。 非唯一性有时候对解释有问题。该优点是每个特征都明显对应于一个类别。 此外,失踪数据可以编码为全零矢量,输出应该是整体目标变量的平均值。
虚拟编码和效果编码不是多余的。 他们产生独特和可解释的模型。 虚拟编码的缺点是它不能轻易处理缺少数据,因为全零矢量已经映射到参考类别。它还编码每个类别相对于参考类别的影响,其中看起来很奇怪。 效果编码通过使用不同的代码来避免此问题参考类别。 但是,所有-1的矢量都是一个密集的矢量,对于存储和计算来说都很昂贵。 因此,Pandas和Scikit Learn等流行的ML软件包选择了虚拟编码或热编码,而不是效应编码。当类别数量变得非常多时,所有三种编码技术都会失效大。 需要不同的策略来处理非常大的分类变量。
虚拟编码和效果编码不是多余的。 他们产生独特和可解释的模型。 虚拟编码的缺点是它不能轻易处理缺少数据,因为全零矢量已经映射到参考类别。它还编码每个类别相对于参考类别的影响,其中看起来很奇怪。 效果编码通过使用不同的代码来避免此问题参考类别。 但是,所有-1的矢量都是一个密集的矢量,对于存储和计算来说都很昂贵。 因此,Pandas和Scikit Learn等流行的ML软件包选择了虚拟编码或热编码,而不是效应编码。当类别数量变得非常多时,所有三种编码技术都会失效大。 需要不同的策略来处理非常大的分类变量。
## 处理大量的类别特征
......@@ -193,7 +193,7 @@ array([ 666.66666667, -833.33333333])
对于这种类别特征处理的方案有:
1. 对编码不做任何事情。 使用便宜的训练简单模型。 在许多机器上将热编码引入线性模型(逻辑回归或线性支持向量机)。
1. 对编码不做任何事情。 使用便宜的训练简单模型。 在许多机器上将热编码引入线性模型(逻辑回归或线性支持向量机)。
2. 压缩编码,有两种方式
a. 对特征进行哈希--在线性回归中特别常见
......@@ -324,7 +324,7 @@ bin-counting的想法非常简单:而不是使用分类变量作为特征,
Bin-counting假定历史数据可用于计算统计。 表5-6包含分类变量每个可能值的汇总历史计数。 根据用户点击任何广告的次数以及未点击的次数,我们可以计算用户“Alice”点击任何广告的概率。 同样,我们可以计算任何查询 - 广告 - 域组合的点击概率。 在训练时,每当我们看到“爱丽丝”时,都使用她的点击概率作为模型的输入特征。 QueryHash-AdDomain对也是如此,例如“0x437a45e1,qux.net”。
假设有10,000个用户。 热编码会生成一个稀疏矢量长度为10,000,在列中对应于值的单个1当前数据点。 Bin-counting将所有10,000个二进制列编码为一个功能的真实值介于0和1之间。
假设有10,000个用户。 热编码会生成一个稀疏矢量长度为10,000,在列中对应于值的单个1当前数据点。 Bin-counting将所有10,000个二进制列编码为一个功能的真实值介于0和1之间。
除了历史点击概率外,我们还可以包含其他功能:原始计数本身(点击次数和非点击次数),对数比率或任何其他概率的衍生物。 我们的例子是预测广告点击率,通过率。 但该技术很容易应用于一般的二元分类。 它也可以使用通常的技术容易地扩展到多级分类将二元分类器扩展到多个类,即通过一对多优势比或其他多类标签编码。
......@@ -355,7 +355,7 @@ Bin-counting假定历史数据可用于计算统计。 表5-6包含分类变量
![](/images/chapter5/5-6.jpg)
图5-3 分类变量的热编码与二进制计数统计的说明。
图5-3 分类变量的热编码与二进制计数统计的说明。
在实施方面,垃圾箱计数需要在每个类别之间存储地图及其相关计数。 (其余的统计数据可以从中得到原始计数)。因此它需要O(k)空间,其中k是唯一值的数量的分类变量。
......@@ -509,7 +509,7 @@ c357dbff 33
* 对于在线学习有困难
* 会有数据泄露
正如我们所看到的,没有任何方法是完美的。 选择使用哪一个取决于所需的型号。 线性模型比较便宜,因此可以进行训练处理非压缩表示,例如热编码。 基于树的模型,另一方面,需要反复搜索右侧分割的所有特征,并且是因此限于小型表示,如箱计数。 功能哈希处于在这两个极端之间,但是由此产生的精确度有不同的报道。
正如我们所看到的,没有任何方法是完美的。 选择使用哪一个取决于所需的型号。 线性模型比较便宜,因此可以进行训练处理非压缩表示,例如热编码。 基于树的模型,另一方面,需要反复搜索右侧分割的所有特征,并且是因此限于小型表示,如箱计数。 功能哈希处于在这两个极端之间,但是由此产生的精确度有不同的报道。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册