首页 > 解决方案 > 如何对每个样本的名义类别对象的无序列表进行编码以进行机器学习

问题描述

我的数据集中的每个样本(用户)都有一个项目列表(技能)。每个项目(技能)都是一个名义类别对象(技能 ID从 0 到 10000)。名义类别项目通常通过热编码或二进制编码进行机器学习编码。但是我有一个问题,每个样本(用户)不仅有一个项目(技能),而且还有这些项目的无序列表(技能列表)。

如何在没有大量列的情况下对这些技能列表进行编码?如果没有因式分解技术,有什么诀窍吗?

标签: machine-learningdata-science

解决方案


一种称为特征散列的技术允许将对象映射到列中。它由https://en.wikipedia.org/wiki/Feature_hashing描述:

 function hashing_vectorizer(features : array of string, N : integer):
 x := new vector[N]
 for f in features:
     h := hash(f)
     x[h mod N] += 1
 return x

推荐阅读