Machine learning 使用K-means作为特征对文本数据进行聚类的聚类ID用于监督学习模型是不是一个坏主意?

Machine learning 使用K-means作为特征对文本数据进行聚类的聚类ID用于监督学习模型是不是一个坏主意?,machine-learning,nlp,cluster-analysis,supervised-learning,feature-engineering,Machine Learning,Nlp,Cluster Analysis,Supervised Learning,Feature Engineering,我正在建立一个模型来预测流经管道的产品的交付周期 我有很多不同的特性,一个是一个字符串,其中包含一些关于产品用途的单词(通常是缩写、它将成为其中一部分的应用程序的名称等等)。我以前在做特征工程时根本没有使用过这个领域 我在想,最好对这些数据进行某种类型的聚类,然后将集群ID用作我的模型的一个功能,可能提前期与该字段中存在的信息类型相关 这是我的思路) 1) 清理和标记文本 2) TF-IDF 3) 群集 但仔细考虑之后,这是个坏主意吗?因为聚类是基于旧数据的,如果在新数据中引入新词,那么聚类算法

我正在建立一个模型来预测流经管道的产品的交付周期

我有很多不同的特性,一个是一个字符串,其中包含一些关于产品用途的单词(通常是缩写、它将成为其中一部分的应用程序的名称等等)。我以前在做特征工程时根本没有使用过这个领域

我在想,最好对这些数据进行某种类型的聚类,然后将集群ID用作我的模型的一个功能,可能提前期与该字段中存在的信息类型相关

这是我的思路)

1) 清理和标记文本

2) TF-IDF

3) 群集

但仔细考虑之后,这是个坏主意吗?因为聚类是基于旧数据的,如果在新数据中引入新词,那么聚类算法将不会捕捉到这一点,现在可能应该对数据进行不同的聚类。这是否意味着每当我想要预测新的数据点时,我必须重新训练整个模型(k-means模型,然后是监督模型)?这方面有什么最佳实践吗


有没有更好的方法可以找到文本数据的聚类作为监督模型中的特征使用?

我理解使用无监督聚类算法的迫切性,首先自己看看找到了哪些聚类。当然,如果这种方法有助于完成任务,您可以尝试

但是,由于您已经标记了数据,因此可以传递产品描述,而无需中间聚类。然后,您的受监督算法将自行了解该功能是否以及如何帮助您完成任务(当然,需要进行预处理,例如删除停止字、清理、标记化和特征提取)

根据您的文本描述,我还可以想象一些简单的序列嵌入可以用作特征提取。嵌入是一个例如300维的向量,它以
hp office printer
canon ink jet
应彼此靠近的方式描述单词,但
nice leatherbag
应与短语相距较远。例如,他们已经接受了英语培训。要为
hp office printer
序列获取单个嵌入,可以获取三个向量的平均向量(有更多方法可以获取整个序列的嵌入,例如doc2vec)


但最终你需要运行测试来选择你的特性和方法

我理解首先使用无监督聚类算法来亲自查看发现了哪些聚类的冲动。当然,如果这种方法有助于完成任务,您可以尝试

但是,由于您已经标记了数据,因此可以传递产品描述,而无需中间聚类。然后,您的受监督算法将自行了解该功能是否以及如何帮助您完成任务(当然,需要进行预处理,例如删除停止字、清理、标记化和特征提取)

根据您的文本描述,我还可以想象一些简单的序列嵌入可以用作特征提取。嵌入是一个例如300维的向量,它以
hp office printer
canon ink jet
应彼此靠近的方式描述单词,但
nice leatherbag
应与短语相距较远。例如,他们已经接受了英语培训。要为
hp office printer
序列获取单个嵌入,可以获取三个向量的平均向量(有更多方法可以获取整个序列的嵌入,例如doc2vec)


但最终你需要运行测试来选择你的特性和方法

你能提供更多关于这个文本功能的信息吗?它到底包含什么?您确定不能在训练集中设置此功能的所有可能值吗?文本功能是一个自由文本字段。所以它可以包含任何真正的东西。但是,通常需要更大、更高级的应用程序/产品名称。产品范围从全尺寸应用程序到微型服务,再到3pp软件,因此可以使用许多不同的词。我不能把所有的单词都用作功能。你能提供更多关于这个文本功能的信息吗?它到底包含什么?您确定不能在训练集中设置此功能的所有可能值吗?文本功能是一个自由文本字段。所以它可以包含任何真正的东西。但是,通常需要更大、更高级的应用程序/产品名称。产品范围从全尺寸应用程序到微型服务,再到3pp软件,因此可以使用许多不同的词。我不能用所有的单词作为特征。嗨,谢谢你的回答。问题是,我的文本字段非常特定于产品和组织。英语单词不多,但缩写词更多,内部产品代码更多。所以我不认为预先训练的模型在这里会有多大帮助。我当然可以在我的语料库上训练我自己的Doc2Vec模型,并进行一些平均,但我不确定我是否有足够大的语料库来做这件事。嗨,谢谢你的好答案。问题是,我的文本字段非常特定于产品和组织。英语单词不多,但缩写词更多,内部产品代码更多。所以我不认为预先训练的模型在这里会有多大帮助。当然,我可以在我的语料库上训练我自己的Doc2Vec模型,并进行一些平均,但我不确定我是否有足够大的语料库来进行这项工作。