数据转换-计数 Learning

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

本文介绍支持基于计数的特征化的机器学习 Studio (经典) 中的模块。

注意

适用于:仅限机器学习 Studio (经典)

可在 Azure 机器学习设计器中获取类似的拖放模块。

带计数的 Learning 是一种基于值计数创建一组精简数据集功能的有效方法。 您可以使用此类别中的模块来生成一组计数和功能。 稍后,您可以更新计数和功能以利用新数据,或者合并两组计数数据。

关于基于计数的特征化

基于计数的特征化的基本思路是,通过计算计数,可以快速轻松地大致了解哪些列包含最重要的信息。 该模块计算某个值的出现次数,然后将该信息作为输入到模型的功能提供。

Imagine 验证信用卡交易。 此事务来自的是一条重要的信息。 事务源最常见的一种编码是邮政编码。 但是,这里可能有多达 40000 个邮递区号、邮政编码和地理代码要应对。 你的模型是否拥有足够的容量来了解 40000 多个参数? 如果为其分配容量,你是否有足够的定型数据来防止其过度拟合?

如果你有很好的数据,其中包含大量示例,则这种精细的本地粒度会非常强大。 不过,如果你只有一个来自小型区域的虚假事务示例,这是否意味着该位置的所有事务都已损坏,或者你没有足够的数据?

一种解决方法是了解计数。 您可以查看每个邮政编码的诈骗量和诈骗量,而不是引入40000更多的功能。 通过使用这些计数作为功能,可以获取有关每个值的证据强度的信息。 此外,通过对统计信息的相关统计信息进行编码,学习器可以使用统计信息来确定何时更改其方法,而是使用其他功能来获取该信息。

基于计数的学习很有吸引力,原因很多。 使用基于计数的学习时,可以使用较少的功能,这需要较少的参数。 更少的参数可实现更快速的学习、更快的预测、较小的预测值和不太可能的 overfit。

如何创建基于计数的特征

基本示例可帮助演示如何创建和应用基于计数的特征。 假设你有如下表,其中包含标签和输入。 每个事例 (或行或示例) 在列中都有一组值。 在此示例中,值为 A 和 B。

标签列 输入值
0 A
0 A
1 A
0 B
1 B
1 B
1 B

创建基于计数的功能时,需要执行以下步骤:

  1. 对于一组特定的值,请查找该数据集中具有相同值的所有其他情况。 在这种情况下,有三个实例: A 和四个实例。
  2. 将每个值的类成员身份作为一项功能进行计数。 在这种情况下,您将获得一个小矩阵:有两种情况,其中 A = 0;A = 1;一种情况下,B = 0;第三种情况下,B = 1。
  3. 根据此矩阵,可以获得各种基于计数的特征。 这包括计算对数的比率和每个目标类的计数。 下一节中的表显示数据。

基于计数的特征的示例表

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 表转换为计数转换。
  • 合并计数转换:合并两组基于计数的特征。
  • 修改计数表参数:修改派生自现有计数表的基于计数的特征。

另请参阅