Machine learning 机器学习中任意长类别数组数据的表示

Machine learning 机器学习中任意长类别数组数据的表示,machine-learning,data-mining,Machine Learning,Data Mining,假设我有要为机器学习任务“矢量化”的用户数据。它的格式如下: { subjects: [String (subject id)], education: [ school: String (school id), concentration: String (conc. id), degree: String (degree id) ], age: Integer, gender: String } 年龄和性别等数据分别表示为整数和二进制(女性为0,

假设我有要为机器学习任务“矢量化”的用户数据。它的格式如下:

{
  subjects: [String (subject id)],
  education: [
    school: String (school id),
    concentration: String (conc. id),
    degree: String (degree id)
  ],
  age: Integer,
  gender: String
}
年龄和性别等数据分别表示为整数和二进制(女性为0,男性为1)

如果用户只有一个主题,我可能会使用一个热编码来表示它。然而,考虑如下:

  • 受试者的数量可能会发生变化(即增加/删除受试者)。这意味着一个热编码中向量的长度将发生变化
  • 用户可以有任意数量的主题
教育记录也是如此。用户可以拥有任意数量的教育记录

所以我的问题是:如果用户可以拥有任意数量的分类数据,那么最好的方式是什么


谢谢大家!

首先,你应该事先知道所有可能的主题。 其次,为每个主题创建如下特征:

subj1 subj2 .... subj1000
0       1             0
在这里,用户没有SUBK1和SUBK1000,但有SUBK2

对于你将来可能会看到而事先不知道的主题,你可以忽略它们


正如@Anony Mousse所说,这就像文本处理中的单词袋模型。

这就是我所说的一个热编码。对于主题数组,我可以这样做吗(以一个有3个主题的用户为例):
0 1 0 1 0 1
我可以使用功能哈希吗?是的,您可以使用功能哈希,如中所述,请记住,对于所有用户,功能集应该相同,因此您需要列出所有主题,然后构建一个热编码。确定。对于添加新主题(主题由ID引用)的情况,您有什么建议?我认为一种热编码的方式是,在
N
维向量空间中将一个分类值表示为基向量。添加一个新主题相当于在
N+1
维度中表示主题,这意味着表示用户的向量的长度增加了1,所以我不需要重新训练数据集吗?