最近我发现了Keras和TensorFlow,我正在尝试进入机器学习领域。我手动从用户数据库中分类了训练和测试数据,如下所示:
9个特征和一个标签,特征是我系统中的事件,例如“用户添加了头像”或“用户为服务支付了X”,标签是正面或负面的投资回报率(1或0)
我使用以下代码对用户进行分类:
import numpy as npfrom keras.layers import Densefrom keras.models import Sequentialtrain_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 modelmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])# Fit the modelmodel.fit(X_train, Y_train, epochs=12000, batch_size=10)# evaluate the modelscores = model.evaluate(X_test, Y_test)print("\n\n\nResults: %s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
我得到了89%的准确率。这对于将用户标记为有价值的客户非常有效。
问题:如何提取对正面投资回报率有贡献的特征,以便在用户体验中提升它们的关注度?
或者:寻找最佳受众组合段的途径是什么?
回答:
正如人们所说,没有简单的答案,我的回答也不打算是唯一的答案,但我认为你可以尝试以下方法。
观察方法:
- 预测所有客户的结果
- 筛选出优秀客户并绘制他们的特征
- 筛选出不佳客户并绘制他们的特征
- 你能看到明显的模式吗?例如:大多数失败案例没有特征x。
创建具有组合特征的假客户:
-
首先,创建仅具备单一特征的假客户,从1到9。(客户1仅有特征1,客户2仅有特征2,依此类推)
-
预测这些客户的结果
- 检查是否有任何特征产生了好的结果(这可能还不是最终结果,但请记下)
以上,你可以看到每个特征单独的结果,但这不太可能,对吗?
- 现在你可以创建所有两特征的组合。有36种组合(9 x 8 / 2)。(F1/F2;F1/F3;F1/F4….)
- 预测并查看优秀客户(记下最佳组合)
继续进行,三特征组合(84种组合)
四特征组合(126种组合)
比较上述各步骤的结果:
-
拿所有具有4个特征的失败客户。与具有1个特征的成功客户进行比较:成功特征是否在失败客户中存在?如果不存在,你很可能找到了一个独立的成功特征。
-
在所有测试的所有失败候选中,是否有任何特征缺失?这也是另一个独立的成功特征。
与第一个类似,你可以比较4特征失败与2特征成功,看是否有任何特征对成功。
依此类推。
考虑上述结果,筛选真实客户:
- 从真实客户中,选出所有你认为是成功的单一特征的客户。确认他们实际上是成功的
- 对那些你认为是成功的特征对的真实客户做同样的事。确认他们是否成功。
你可以用同样的方法假设某些特征可能导致失败,而不是导致成功。或者,不看现有特征,而是看缺失的特征,等等。