【发布时间】:2017-06-05 08:03:26
【问题描述】:
最近我发现了Keras 和TensorFlow,我正在尝试进入 ML。我已经从我的用户数据库中手动分类训练和测试数据,如下所示:
9 个特征和一个标签,这些特征是我系统中的事件,例如“用户添加了个人资料图片”或“用户为某项服务付费 X”,标签是正或负 R.O.I(1 或 0)
我使用以下代码对用户进行分类:
import numpy as np
from keras.layers import Dense
from keras.models import Sequential
train_data = np.loadtxt("train.csv", delimiter=",", skiprows=1)
test_data = np.loadtxt("test.csv", delimiter=",", skiprows=1)
X_train = train_data[:, 0:9]
Y_train = train_data[:, 9]
X_test = test_data[:, 0:9]
Y_test = test_data[:, 9]
model = Sequential()
model.add(Dense(8, input_dim=9, activation='relu'))
model.add(Dense(6, activation='relu'))
model.add(Dense(3, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X_train, Y_train, epochs=12000, batch_size=10)
# evaluate the model
scores = model.evaluate(X_test, Y_test)
print("\n\n\nResults: %s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
并且获得了 89% 的准确率。为了将用户标记为有价值的客户,这非常有效。
问:我如何提取有助于积极投资回报率的特征,以便提高他们在用户体验中的关注度?
或:找到最佳组合的受众群体的方法是什么?
【问题讨论】:
-
您的模型很深(因此它提取了复杂且可能很难解释的特征),您可以使用 1 层网络并查看权重,或者可以使用随机森林或决策树来找到最突出的特征。除此之外,我认为您只能尝试许多不同的测试输入,并尝试查看输入和输出之间的任何明显相关性。
-
感谢您的回复,我明白您的意思了...如何使用决策树来查找这些特征?
-
您可以使用 sklearn 使用统计度量或树来查找重要特征。 Check this post 了解更多信息,或者您使用 etree 分类检查此 sample code。总的来说,我使用随机森林获得了最好的结果,但一如既往地取决于应用程序。我建议您建立一个具有给定重要特征的模型并比较测试准确度结果。
-
谢谢,我试试看
-
没有简单的答案,但是关于这个主题的文献相当多。 Here 是一些包含一些方法的论文,但您可能会找到更多。尽管如此,您最多只能获得功能方面的见解,而不是功能之间的交互。如前所述,如果适合您的问题,还有更多的“白盒”方法,例如树或贝叶斯网络。
标签: python machine-learning tensorflow neural-network keras