我应该使用什么样的分类?

数据挖掘 r 分类 聚类
2022-01-19 16:34:40

我对机器学习(和统计)非常陌生,并且正在努力学习一些基础知识(我使用 R 作为我的主要环境)。

我有一个包含单词及其所有形式的词典(以不同的性别,人 - 用于斯拉夫语)。因此,每个带有词形的词都是一个训练样本。我的训练属性是每个单词形式的最后一个字符,最后两个字符,最后三个字符。因此,每个训练样本都包含大约 100 个分类属性。我有 10000 个样本。一个属性有1700级左右,一个1200左右,5个500左右,其他的不到100级。

我已经使用 DBSCAN(和高尔距离)将相似词聚类到同一个聚类中。这一步非常成功。我从 40-100 个簇中得到(取决于是名词、动词还是形容词)。

现在到了我不知道如何继续的部分。如果我得到一个新的(未知的)单词,我想预测它属于哪个集群。有时对于这个新词我只知道它的基本形式,有时我也知道它的一部分词形,有时我知道它的所有词形。

所以这应该是某种多类的分类。问题:我应该使用哪种算法?我尝试使用multinom(在 R 中),但出现权重过多的错误。增加后MaxNWts出现错误:

weights:  641676 (633954 variable)
Error: cannot allocate vector of size 396 Kb

我应该在哪里继续?清理数据?使用不同的算法?

此外,大约 15 个属性只有 1 个级别或 NA。这对聚类(和分类)有何影响?删除这些属性是否安全?

提前谢谢了!

1个回答

按原样使用您的输入数据(许多分类属性),您应该从随机森林开始。您的特征级别可能在任何意义上都不是有序的,这可以解释为什么 multinom(线性模型)不起作用。决策树(随机森林的组成部分)不会遇到非序数分类特征的问题。

如果您的特征是相关的(我猜它们是高度相关的),您也可以先尝试降低输入数据集的维度。一个很好的方法是将您的分类特征视为“单词”并将每个输入样本(所有形式的单词)映射到稀疏向量(训练 TF-IDF 模型)。然后,使用 LSI 或 LDA(密集向量)降低稀疏向量的维数。使用这些密集向量作为输入数据来训练分类器(同样,随机森林是一个很好的起点)。