- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据集由数百万行和几个(10 个)特征组成。
一个特征是由 1000 个不同值组成的标签(假设每一行都是一个用户,该特征是用户的名字:
Firstname,Feature1,Feature2,....
Quentin,1,2
Marc,0,2
Gaby,1,0
Quentin,1,0
此功能的最佳表示(执行聚类)是什么:
我可以使用LabelEncoder
将数据转换为整数,但在这里没有意义,因为两个不同标签之间没有逻辑“顺序”
Firstname,F1,F2,....
0,1,2
1,0,2
2,1,0
0,1,0
我可以将特征拆分为 1000 个特征(每个标签一个),当标签匹配时为 1,否则为 0。然而,这会导致一个非常大的矩阵(如果我不能在分类器中使用稀疏矩阵,则太大)
Quentin,Marc,Gaby,F1,F2,....
1,0,0,1,2
0,1,0,0,2
0,0,1,1,0
1,0,0,1,0
我可以将 LabelEncoder
值表示为 N 列中的二进制值,与之前的想法相比,这会减少最终矩阵的维度,但我不确定结果:
LabelEncoder(Quentin) = 0 = 0,0
LabelEncoder(Marc) = 1 = 0,1
LabelEncoder(Gaby) = 2 = 1,0
A,B,F1,F2,....
0,0,1,2
0,1,0,2
1,0,1,0
0,0,1,0
...还有其他想法吗?
您对解决方案 3 有何看法?
<小时/>编辑一些额外的说明
我应该在我的第一篇文章中提到,但在真实的数据集中,该特征更像是分类树的最后一片叶子(Aa1
、Aa2
等) .在示例中 - 它不是二叉树)。
A B C
Aa Ab Ba Bb Ca Cb
Aa1 Aa2 Ab1 Ab2 Ab3 Ba1 Ba2 Bb1 Bb2 Ca1 Ca2 Cb1 Cb2
因此同一级别下的两个术语之间存在相似性(Aa1
Aa2
和 Aa3
非常相似,并且 Aa1
与 Ba1
和 Cb2
的不同之处一样多)。
最终目标是从较小的数据集中找到相似的实体:我们在较小的数据集上训练 OneClassSVM
,然后获取整个数据集的每个术语的距离
最佳答案
这个问题很大程度上是one-hot编码问题之一。我们如何以一种可以使用聚类算法的方式表示多个分类值,并且不搞砸算法需要执行的距离计算(您可以使用某种概率有限混合模型,但是我离题了)?就像 user3914041 的回答一样,确实没有明确的答案,但我会仔细研究您提出的每个解决方案并给出我的印象:
解决方案1
如果您将分类列转换为您提到的数字列,那么您将面临您提到的相当大的问题:您基本上失去了该列的含义。如果昆汀在 0、马克 1 和盖比 2 中,这到底意味着什么?那么,为什么还要将该列包含在聚类中呢?就像 user3914041 的答案一样,这是将分类值更改为数值的最简单方法,但它们没有用处,而且可能会对聚类结果产生不利影响。
解决方案2
在我看来,这将是您最好的选择,具体取决于您如何实现所有这些以及您的集群目标。因为我假设您计划使用 sklearn 和 k-Means 之类的东西,所以您应该能够很好地使用稀疏矩阵。但是,正如imaluengo 建议的那样,您应该考虑使用不同的距离度量。您可以考虑做的是将所有数字特征缩放到与分类特征相同的范围,然后使用余弦距离之类的东西。或者是距离度量的混合,就像我下面提到的那样。但总而言之,这可能是对聚类算法来说最有用的分类数据表示。
解决方案3
我同意 user3914041 的观点,因为这没有用,并且引入了一些与 #1 提到的相同的问题——当两个(可能)完全不同的名称共享一个列值时,你就失去了意义.
解决方案4
另一个解决方案是遵循答案 here 的建议。您可以考虑推出您自己的类似 k 均值算法的版本,该算法采用混合距离度量(用于单热编码分类数据的汉明距离,以及用于其余数据的欧几里德距离)。似乎有一些工作在开发 k 均值(例如混合分类和数值数据的算法),例如 here .
我想考虑是否需要对此分类数据进行聚类也很重要。你希望看到什么?
关于machine-learning - scikit learn - 如何对由多个独立值组成的单个特征进行建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31861834/
我是一名优秀的程序员,十分优秀!