数据转换-计数 Learning
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
本文介绍支持基于计数的特征化的机器学习 Studio (经典) 中的模块。
带计数的 Learning 是一种基于值计数创建一组精简数据集功能的有效方法。 您可以使用此类别中的模块来生成一组计数和功能。 稍后,您可以更新计数和功能以利用新数据,或者合并两组计数数据。
关于基于计数的特征化
基于计数的特征化的基本思路是,通过计算计数,可以快速轻松地大致了解哪些列包含最重要的信息。 该模块计算某个值的出现次数,然后将该信息作为输入到模型的功能提供。
Imagine 验证信用卡交易。 此事务来自的是一条重要的信息。 事务源最常见的一种编码是邮政编码。 但是,这里可能有多达 40000 个邮递区号、邮政编码和地理代码要应对。 你的模型是否拥有足够的容量来了解 40000 多个参数? 如果为其分配容量,你是否有足够的定型数据来防止其过度拟合?
如果你有很好的数据,其中包含大量示例,则这种精细的本地粒度会非常强大。 不过,如果你只有一个来自小型区域的虚假事务示例,这是否意味着该位置的所有事务都已损坏,或者你没有足够的数据?
一种解决方法是了解计数。 您可以查看每个邮政编码的诈骗量和诈骗量,而不是引入40000更多的功能。 通过使用这些计数作为功能,可以获取有关每个值的证据强度的信息。 此外,通过对统计信息的相关统计信息进行编码,学习器可以使用统计信息来确定何时更改其方法,而是使用其他功能来获取该信息。
基于计数的学习很有吸引力,原因很多。 使用基于计数的学习时,可以使用较少的功能,这需要较少的参数。 更少的参数可实现更快速的学习、更快的预测、较小的预测值和不太可能的 overfit。
如何创建基于计数的特征
基本示例可帮助演示如何创建和应用基于计数的特征。 假设你有如下表,其中包含标签和输入。 每个事例 (或行或示例) 在列中都有一组值。 在此示例中,值为 A 和 B。
标签列 | 输入值 |
---|---|
0 | A |
0 | A |
1 | A |
0 | B |
1 | B |
1 | B |
1 | B |
创建基于计数的功能时,需要执行以下步骤:
- 对于一组特定的值,请查找该数据集中具有相同值的所有其他情况。 在这种情况下,有三个实例: A 和四个实例。
- 将每个值的类成员身份作为一项功能进行计数。 在这种情况下,您将获得一个小矩阵:有两种情况,其中 A = 0;A = 1;一种情况下,B = 0;第三种情况下,B = 1。
- 根据此矩阵,可以获得各种基于计数的特征。 这包括计算对数的比率和每个目标类的计数。 下一节中的表显示数据。
基于计数的特征的示例表
Label | 0_0_Class000_Count | 0_0_Class001_Count | 0_0_Class000_LogOdds | 0_0_IsBackoff |
---|---|---|---|---|
0 | 2 | 1 | 0.510826 | 0 |
0 | 2 | 1 | 0.510826 | 0 |
1 | 2 | 1 | 0.510826 | 0 |
0 | 1 | 3 | -0.8473 | 0 |
1 | 1 | 3 | -0.8473 | 0 |
1 | 1 | 3 | -0.8473 | 0 |
1 | 1 | 3 | -0.8473 | 0 |
示例
在使用机器学习生成点击链接型预测模型,Microsoft 机器学习团队提供了有关如何在机器学习中使用计数的详细演练。 本文将基于计数的建模的效力与其他方法进行了比较。
技术说明
本部分包含实现详情、使用技巧和常见问题解答。
如何计算日志丢失值
日志丢失值不是普通日志。 在这种情况下,将使用先前的分布来平滑对数的计算。
假设你有一个用于二元分类的数据集。 在此数据集中,类 0 p_0
以前的频率为,类 1 p_1 = 1 – p_0
的前期频率为。 对于特定的定型示例功能,类0的计数为 x_0
,类 1 x_1
的计数为。
在这些假设下,对数机会计算为 LogOdds = Log(x0 + c * p0) – Log (x1 + c\p1)
,其中 c
是之前的系数,可由用户设置。 Log 函数使用自然基。
换句话说,对于每个类 i
:
Log_odds[i] = Log( (count[i] + prior_coefficient * prior_frequency[i]) / (sum_of_counts - count[i]) + prior_coefficient \* (1 - prior_frequency[i]))
如果前一个系数为正值,则日志可能会与不同 Log(count[i] / (sum_of_counts – count[i]))
。
为什么不为某些项计算日志几率
默认情况下,计数小于10的所有项将收集到一个名为 "垃圾 bin" 的存储桶中。您可以使用 "修改计数表参数" 模块中的 "垃圾回收阈值" 选项来更改此值。
模块列表
具有计数类别的 Learning 包括以下模块:
- 生成计数转换:从数据集创建计数表和基于计数的功能,然后将表和功能保存为转换。
- 导出计数表:从计数转换中导出计数表。 此模块支持通过使用 "生成计数表" 创建基于计数的功能的试验, (弃用) 并 (弃用的) 的计数特征化器。
- 导入计数表:导入现有的计数表。 此模块支持通过使用 "生成计数表" 创建基于计数的功能的试验, (弃用) 并 (弃用的) 的计数特征化器。 该模块支持将 count 表转换为计数转换。
- 合并计数转换:合并两组基于计数的特征。
- 修改计数表参数:修改派生自现有计数表的基于计数的特征。