我正在使用一个非常小的数据集(180个带标签的文档)和相当多的标签(20个)来进行多标签文档分类任务。
我发现-忽略标签的相关性并将该问题转化为20个二元决策问题-将tf-idf功能输入到逻辑回归中可以很好地工作。
由于我具有领域知识,因此我想为某些功能添加手动称量以提高预测准确性。例如,假设我训练了一个模型来识别“性别”类别,那么我正在考虑以下问题:
'''extract features using tfidf vecorization:'''
vectorizer = TfidfVectorizer(ngram_range = (1,2),min_df = 0.01, max_df = 0.95)
vect = vectorizer.fit(X_train)
X_train = vect.transform(X_train)
X_test = vect.transform(X_test)
'''add additional feature weight'''
weight = 10
position = vect.vocabulary_['woman']
X_train[:, position] *= weight
X_test[:, position] *= weight
position = vect.vocabulary_['gender']
X_train[:, position] *= weight
X_test[:, position] *= weight
然后将相同的权重应用于我要预测的矢量化看不见的数据。
这确实使我在测试集上具有更好的准确性,并且还可以对看不见的数据进行更好的预测,但是,对于“手动”更改数据感到非常不舒服。
我没有找到有关此类手动功能调整的任何信息。这是可以辩解的吗?还是一般来说是个坏主意?