Python 如何在Google';s宽深模型

Python 如何在Google';s宽深模型,python,tensorflow,machine-learning,neural-network,recommendation-engine,Python,Tensorflow,Machine Learning,Neural Network,Recommendation Engine,在阅读了关于推荐系统的广度和深度模型的论文之后,我对尝试类似的东西很感兴趣。然而,我正在努力概念化他们在论文中使用的跨产品转换是如何完成的。DNNLineArcCombinedClassifier教程演示了如何使用tensorflow.feature_columns.crossed_columns来执行该转换,但是该实现仅在两个要交叉的列之间的一对一关系中才有意义(即,在创建交叉列“workclass_x_education”时),对于数据集中的每个样本,只有一个工人阶级值和一个教育值)。在谷歌

在阅读了关于推荐系统的广度和深度模型的论文之后,我对尝试类似的东西很感兴趣。然而,我正在努力概念化他们在论文中使用的跨产品转换是如何完成的。DNNLineArcCombinedClassifier教程演示了如何使用tensorflow.feature_columns.crossed_columns来执行该转换,但是该实现仅在两个要交叉的列之间的一对一关系中才有意义(即,在创建交叉列“workclass_x_education”时),对于数据集中的每个样本,只有一个工人阶级值和一个教育值)。在谷歌的论文中,他们说:

宽组件包括用户安装的应用程序和印象应用程序的跨产品转换

此外:

每个例子对应一个印象。标签为app acquisition:如果安装了应用程序,则为1,否则为0

从这一点上,我收集到每个样本都是一个单一的印象,并且“印象应用程序”有一个功能,详细说明了这个印象正在营销的应用程序。在这种情况下,“已安装的应用程序”就不可能有一个单一的功能,因为用户在给人留下印象时可能已经安装了数百个应用程序。这令人困惑,因为论文中的数字确实暗示这是一个单一的特征:

我是否应该将“用户安装的应用程序”分类功能解释为不是单个功能,而是每个应用程序的数据集都有一个功能,并带有一个二进制标志,指示用户是否安装了该应用程序,并且要在tensorflow中复制此功能,我需要执行以下操作


app_list = ['app1', 'app2', 'app3', 'app4', ...]
installed_app_features = ['app1_installed', 'app2_installed', 'app3_installed', 'app4_installed', ...]

impressed_app = tf.feature_column.categorical_column_with_vocabulary_list(key='impressed_app', vocabulary_list=app_list)

installed_apps = []

crossed_features = []

for app in installed_app_features:
    feature = tf.feature_column.categorical_column_with_vocabulary_list(key='app', vocabulary_list=[0,1])
    installed_apps.append(feature)
    crossed_features.append(
        tf.feature_column.crossed_column(
            [impressed_app, feature],
            100
        )    
    )
…还是我完全错过了什么,需要用另一种方式来思考

非常感谢您提供的任何帮助