CNN词嵌入和xgboost结合
在使用小批文本数据进行深度学习时,由于数据量的限制,最终的网络往往过拟合,在验证集上达不到目标结果。
传统机器学习算法,例如xgboost,对于小数据量不容易达到过拟合,但是需要对文本进行特征提取。
下面的想法是将深度学习的词嵌入层结果和xgboost结合从而改善模型在验证集上的表现,防止过拟合出现。
先构建一个简单的CNN模型
def constructModel(embedding_dim):
model = Sequential()
model.add(layers.Embedding(max_words, embedding_dim, input_length=maxlen))
model.add(layers.Conv1D(32, 5, activation='relu'))
model.add(layers.MaxPooling1D(3))
model.add(layers.Conv1D(32, 5, activation='relu'))
model.add(layers.GlobalMaxPooling1D())
model.add(Dense(1, activation='sigmoid'))
return model
通过keras的优化器进行学习
def runModel(model, x_train, y_train, x_test, y_test):
model.compile(optimizer='rmsprop',\
loss='binary_crossentropy',\
metrics=["accuracy", metrics.Precis