多值分类属性的框架

机器算法验证 机器学习 分类 分类数据
2022-04-11 10:26:10

在我工作的场景中,每个实体都可以用N个不同的属性来表示,我将它们称为p1p2、 ...、pn对于它们中的每一个,一个实体可以为单个属性具有其特定的值范围。实体的属性不能有任何关联的值。

正式地说,给定实体e并调用pk与e关联的特定属性,它可以具有关联的nk个值(nk >= 0)。

这是一个简短的例子:

<entity 1>
director: Tarantino
distributor: Miramax
producer: Bender
starring: Fox, Hannah, Dreyfus, Thurman

<entity 2>
director: Tarantino
distributor: Miramax
producer: Bender
starring: Travolta, Jackson, Thurman

我无法理解如何表示这些实体以供机器学习算法使用。我见过其他一些将多值分类属性转换为多个二元属性的方法。我认为在这种情况下,准确分析每个属性及其所有值至关重要。

创建此方法后,我将能够表示数据集中的所有实体。假设在这种情况下,有用户表达了对某些实体的偏好(只有二元偏好,例如,Tom 喜欢实体 1等等)。使用机器学习算法,我想为每个用户生成一个模型,以便能够了解该用户是否喜欢新实体(新电影)(这可以用 a 中的值表示范围在 0-1 之间)。

在这一点上,我将在这里报告两个不同的问题:

  1. 什么是表示数据集实体的正确方法?
  2. 什么是能够使用我拥有的实体生成模型的适当机器学习算法?
1个回答

处理具有一组值的变量的最标准方法是使用虚拟变量,即为每种可能性创建一个列,并分别分配01取决于属性是否存在或不存在。

例如,请参阅如何在 Pandas 中执行此操作(如果您使用的是 Python)和Generate a dummy-variable in R

消息是您可以将0视为1分类(例如决策树或随机森林)或数值(用于各种回归、k-最近邻、主成分分析、k-均值等)。有时您需要将所有变量转换为数值,即使每个条目只有一个属性。

不好是,如果有很多选项,要么你需要将自己限制在最常见的范围内,要么通过主成分分析进行一些降维。

丑陋事情是,即使您使用纯分类变量,您通常也会使用 text/id 呈现单值变量,而使用虚拟变量呈现多值变量。