- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我运行具有 TF-IDF 和非 TF-IDF 特征的随机森林算法。
总共特征数量约为 130k(在对 TF-IDF 特征进行特征选择之后),训练集的观察数量约为 120k。
其中大约 500 个是非 TF-IDF 功能。
问题是随机森林在与 相同的测试集上的准确性等。
- 只有非 TF-IDF 特征为 87%
- TF-IDF 和非 TF-IDF 特征为 76%
准确性的显着恶化在我的脑海中引发了一些问题。
我与模型训练的相关代码如下:
drop_columns = ['labels', 'complete_text_1', 'complete_text_2']
# Split to predictors and targets
X_train = df.drop(columns=drop_columns).values
y_train = df['labels'].values
# Instantiate, train and transform with tf-idf models
vectorizer_1 = TfidfVectorizer(analyzer="word", ngram_range=(1,2), vocabulary=tf_idf_feature_names_selected)
X_train_tf_idf_1 = vectorizer_1.fit_transform(df['complete_text_1'])
vectorizer_2 = TfidfVectorizer(analyzer="word", ngram_range=(1,2), vocabulary=tf_idf_feature_names_selected)
X_train_tf_idf_2 = vectorizer_2.fit_transform(df['complete_text_2'])
# Covert the general features to sparse array
X_train = np.array(X_train, dtype=float)
X_train = csr_matrix(X_train)
# Concatenate the general features and tf-idf features array
X_train_all = hstack([X_train, X_train_tf_idf_1, X_train_tf_idf_2])
# Instantiate and train the model
rf_classifier = RandomForestClassifier(n_estimators=150, random_state=0, class_weight='balanced', n_jobs=os.cpu_count()-1)
rf_classifier.fit(X_train_all, y_train)
max_features
等)最佳答案
您认为 130K 的特征对于随机森林来说太多了,这听起来是对的。您没有提到您的数据集中有多少个示例,这对于选择可能的后续步骤至关重要。以下是我脑海中的一些想法。
如果数据点的数量足够大,您可能想为 TF-IDF 特征训练一些转换 - 例如您可能想要将这些 TF-IDF 特征的小维嵌入训练到 64 维空间中,然后例如最重要的是一个小的神经网络(甚至可能是线性模型)。有了嵌入之后,您可以将它们用作转换,为每个示例生成 64 个附加特征,以替换 随机森林训练的 TF-IDF 特征。或者只是用这种架构的 NN 替换整个随机森林,例如TF-IDF 都通过全连接层组合成几个神经元,然后与其他特征连接(与嵌入非常相似,但作为 NN 的一部分)。
如果您没有足够的数据来训练大型神经网络,也许您可以尝试训练 GBDT 集成而不是随机森林。与随机森林相比,它可能应该在挑选好的特征方面做得更好,随机森林肯定会受到许多嘈杂的无用特征的很大影响。您也可以先训练一些粗略的版本,然后根据它进行特征选择(同样,我希望它与随机森林相比应该做得更合理)。
关于python - TF-IDF 和非 TF-IDF 功能的准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62268459/
我正在阅读此 article它说 Note that IDF is dependent on the query term (T) and the database as a whole. In pa
据我了解,IDF 用于计算有多少文档包含该术语(有点像想法)。您可以计算训练集中的 IDF(以及 TF),因为您事先拥有所有文档。但是,如果我事先没有测试集,并且以顺序方式获取测试文档(例如从网络爬虫
我运行具有 TF-IDF 和非 TF-IDF 特征的随机森林算法。 总共特征数量约为 130k(在对 TF-IDF 特征进行特征选择之后),训练集的观察数量约为 120k。 其中大约 500 个是非
在本书《TensorFlow Machine Learning Cookbook》的第七章中,作者在预处理数据时使用了scikit-learn的fit_transform函数来获取tfidf特征用于训
这是一个关于 ngram 线性回归的问题,使用 Tf-IDF(术语频率 - 逆文档频率)。为此,我使用 numpy 稀疏矩阵和 sklearn 进行线性回归。 使用一元语法时,我有 53 个案例和 6
我有一个大小为 208 的列表(208 个句子数组),它看起来像: all_words = [["this is a sentence ... "] , [" another one hello bo
我有一个包含几千行文本的数据集,我的目标是计算 tfidf 分数,然后计算文档之间的余弦相似度,这是我在 Python 中使用 gensim 按照教程所做的: dictionary = corpora
统计十篇新闻TF-IDF 统计TF-IDF词频,每篇文章的 top10 的高频词存储为 json 文件 TF-IDF TF-IDF(term frequency–inverse documen
我的数据库中有一个表,其中包含自由文本字段列。 我想知道每个单词在所有行中出现的频率,或者甚至计算所有单词的 TF-IDF,其中我的文档是该字段每行的值。 是否可以使用 Sql 查询来计算此值?如果没
我正在使用 ES 使用模糊搜索技术搜索大量人名。 TF适用于打分,IDF对我来说真的不需要。这真的是在冲淡分数。我仍然希望将 TF 和 Field Norm 应用于分数。 如何为我的查询禁用/抑制 I
我正在尝试使用Textacy计算整个标准语料库中单个单词的TF-IDF分数,但是对于我收到的结果有点不清楚。 我期待一个单一的浮点数,它代表了语料库中单词的出现频率。那么,为什么我会收到包含7个结果的
我想计算存储在 HBase 中的文档的 TF(词频)和 IDF(逆文档频率)。 我还想把计算出来的TF保存在一个HBase表中,也想把计算出来的IDF保存在另一个HBase表中。 你能指导我完成吗?
我现在在做文本分类。 TF-IDF 有没有比使用词频向量更糟糕的情况?怎么解释呢?谢谢 最佳答案 Both metrics ...discriminate along two dimensions –
我正在对文本文档进行聚类。我正在使用 tf-idf 和余弦相似度。然而,即使我正在使用这些措施,有些事情我还是不太明白。 tf-idf 权重会影响两个文档之间的相似度计算吗? 假设我有这两个文件: 1
我试图更好地了解 lucene 如何对我的搜索进行评分,以便我可以对我的搜索配置或文档内容进行必要的调整。 以下是分数明细的一部分。 产品: 0.34472802 = queryWeight,
我如何计算 tf-idf查询?我了解如何为具有以下定义的一组文档计算 tf-idf: tf = occurances in document/ total words in document idf
我使用 duinotech XC-3800 在 ESP32 芯片上使用 ESP IDF 测试运行裸机代码,并在图像大小方面获得以下结果。 ESP32 的分析二进制大小 文件夹结构 温度/ 主要的/ C
我有一个基于职位描述关键字的简历筛选候选人的用例。由于每次将新的候选人资料添加到内容列表时我都无法负担分数的变化(我认为IDF会发生变化),因此我想省略TF_IDF。 索引文件是 {
在嵌套字段上运行匹配查询时,是基于所有根文档中的所有嵌套文档还是仅基于单个根文档下的嵌套文档来计算每个嵌套文档的相关性得分?基本上,在计算TF / IDF时,用于IDF的集合的范围是什么? 这是一个嵌
我想使用tf-idf计算词频。我起草了一个方程式,您应该在左侧获取tf-idf值。这样对吗? DOCUMENT的TF-IDF: tf-idf(WORD) = occurrences(WORD,DOCU
我是一名优秀的程序员,十分优秀!