Python 如何利用RBM提高文本分类的可信度?

Python 如何利用RBM提高文本分类的可信度?,python,python-2.7,machine-learning,nlp,scikit-learn,Python,Python 2.7,Machine Learning,Nlp,Scikit Learn,我正在学习文本分类,我使用自己的语料库使用linnear回归进行分类,如下所示: from sklearn.linear_model.logistic import LogisticRegression classifier = LogisticRegression(penalty='l2', C=7) classifier.fit(training_matrix, y_train) prediction = classifier.predict(testing_matrix) 我想使用sci

我正在学习文本分类,我使用自己的语料库使用linnear回归进行分类,如下所示:

from sklearn.linear_model.logistic import LogisticRegression
classifier = LogisticRegression(penalty='l2', C=7)
classifier.fit(training_matrix, y_train)
prediction = classifier.predict(testing_matrix)
我想使用scikit learn提供的受限Boltzman机器增加分类报告,从我的阅读中可以看出,这可用于提高分类召回率、f1分数、准确性等。有人能帮我增加这是我迄今为止尝试的,提前感谢:

vectorizer = TfidfVectorizer(max_df=0.5,
                             max_features=None,
                             ngram_range=(1, 1),
                             norm='l2',
                             use_idf=True)


X_train = vectorizer.fit_transform(X_train_r)
X_test = vectorizer.transform(X_test_r)


from sklearn.pipeline import Pipeline
from sklearn.neural_network import BernoulliRBM
logistic = LogisticRegression()
rbm= BernoulliRBM(random_state=0, verbose=True)
classifier = Pipeline(steps=[('rbm', rbm), ('logistic', logistic)])
classifier.fit(X_train, y_train)

首先,你必须理解这里的概念。RBM可以看作是一种强大的聚类算法,聚类算法是无监督的,即不需要标签。
也许,在您的问题中使用RBM的最佳方法是,首先训练RBM(只需要不带标签的数据),然后使用RBM权重初始化神经网络。要在输出中获得逻辑回归,必须使用logistic reg添加输出层。将代价函数应用于该神经网络,并对该神经网络进行训练。此设置可能会提高性能

有几件事可能是错的

1。您没有正确校准RBM

请看scikit学习网站上的示例:

特别是,这些行:

rbm.learning_rate = 0.06
rbm.n_iter = 20
# More components tend to give better prediction performance, but larger
# fitting time
rbm.n_components = 100
你不能把这些放在任何地方。在本例中,这些是通过使用网格搜索的交叉验证获得的。您也应该这样做,并尝试为您自己的问题获得(接近)最佳参数

此外,您可能还想尝试使用交叉验证来确定其他参数,例如ngram范围(如果您能够提供内存和执行时间,使用更高级别的ngram通常也会有所帮助。对于某些问题,字符级别的ngram比字级别的好)和逻辑回归参数

2。你只是运气不好

没有任何证据表明在中间步骤中使用RBM肯定会改善任何绩效衡量。它可以,但这不是一个规则,它很可能对你的问题毫无作用或几乎没有作用。你必须为此做好准备

这是值得尝试的,因为它不需要很长时间就能实现,但要准备好去别处看看


另外,请看和。这些可能会提高性能。

所以您建议我尝试使用SGDClassizer和PAC?。您认为什么参数最适合此加tfidf?。我尝试了两个分类器,所有的指标都下降了。谢谢你的帮助@约翰多-和什么比下去?我不知道什么参数最有效,这取决于问题。与scikit learn实现的其他估计器相比,您必须使用交叉验证或网格搜索来调整它们,直到您得到满意的结果。我想到另一件事。。。特征向量是否需要进行二值化?。谢谢你的邀请feedback@johndoe-我会说不,你不应该对它进行二值化。但我可能错了,你真的必须测试并使用交叉验证来选择最有效的方法。但如果是beronoulli发行版,数据需要进行二值化吗?。。我尝试对tfidf矢量器进行二值化,但仍然“有效”。为什么不把它二值化呢?。谢谢你的帮助