【问题标题】:Get audiences insights using Keras and TensorFlow使用 Keras 和 TensorFlow 获取受众洞察
【发布时间】:2017-06-05 08:03:26
【问题描述】:

最近我发现了KerasTensorFlow,我正在尝试进入 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


【解决方案1】:

正如人们所说,没有简单的答案,我的答案也不是答案,但我认为你可以尝试这样的事情。

看看方法:

  • 为所有客户预测结果
  • 筛选好客户并绘制他们的特征
  • 过滤不良客户端并绘制其特征
  • 您能看到明显的模式吗?例如:大多数失败都没有特征 x。

创建具有组合功能的虚假客户端:

  • 首先,创建只有一个特征的假客户,从 1 到 9。(客户端 1 只有特征 1,客户端 2 只有特征 2,依此类推)

  • 预测这些客户端的结果

  • 检查是否有任何功能提供了不错的结果(这可能还不是实际结果,但请注意)

上面,你可以单独看到每个特征的结果,但这不太可能,是吗?

  • 现在您可以创建两个功能的所有组合。这些特征有 36 种组合 (9 x 8 / 2)。 (F1/F2 ; F1/F3 ; F1/F4 ....)
  • 预测并查看好的客户(记录最佳组合)

继续前进,3 种功能的组合(84 种组合)
4个特征的组合(126种组合)

比较上述每个步骤的结果

  • 采用具有 4 个功能的所有故障客户端。与具有 1 个特征的成功客户端进行比较:失败的客户端中是否存在一个成功特征?如果没有,您很可能已经找到了一个独立的成功特征。

  • 所有测试的所有失败候选中都缺少任何功能吗?这是另一个独立的成功特征。

与第一个类似,您可以将 4 个功能失败与 2 个功能成功进行比较,看看是否有任何一对功能成功。

等等。

获取真实客户并根据上述结果对其进行过滤:

  • 从真正的客户那里,挑选所有具有您认为成功的单一功能的客户。确认他们真的成功了
  • 对拥有您认为成功的功能对的真实客户执行相同操作。确认它们是否存在。

假设某些功能可能会导致失败而不是导致成功,您也可以采用相同的方法。或者不要查看当前的功能,而是查看缺失的功能等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    相关资源
    最近更新 更多