5番目の時計

DINモデルの概要

DINのフルネームはDeepInterest Networkです。これは、ユーザーの多様な関心を表現できない以前のディープラーニングモデルに基づいて2018年にAlibabaによって提案されたモデルです。これは、[指定された候補広告]と[ユーザーの履歴動作]ユーザーの関心のある表現ベクトルを計算します。具体的には、ローカルアクティベーションユニットは、ソフト検索履歴動作の関連部分を通じて関連するユーザーの関心に焦点を合わせるために導入され、加重和は、候補広告に関連するユーザーの関心の表現を取得するために使用されます。候補広告との関連性が高い行動は、アクティベーションの重みが高くなり、ユーザーの関心を支配します。表現ベクトルは広告ごとに異なり、モデルの表現力が大幅に向上します。したがって、このモデルはニュース推奨のタスクにも適しています。ここでは、現在の候補記事とユーザーの過去のクリック記事との相関関係に基づいて、記事に対するユーザーの関心を計算します。モデルの構造は次のとおりです
ここに画像の説明を挿入
。defDIN(dnn_feature_columns、history_feature_list、dnn_use_bn = False、dnn_hidden_​​units =(200、80)、dnn_activation = 'relu'、att_hidden_​​size =(80、40)、att_activation =“ dice_normalization、att_weight 0、l2_reg_embedding = 1e-6、dnn_dropout = 0、seed = 1024、task = 'binary'):

dnn_feature_columns: 特征列, 包含数据所有特征的列表
history_feature_list: 用户历史行为列, 反应用户历史行为的特征的列表
dnn_use_bn: 是否使用BatchNormalization
dnn_hidden_units: 全连接层网络的层数和每一层神经元的个数, 一个列表或者元组
dnn_activation_relu: 全连接网络的激活单元类型
att_hidden_size: 注意力层的全连接网络的层数和每一层神经元的个数
att_activation: 注意力层的激活单元类型
att_weight_normalization: 是否归一化注意力得分
l2_reg_dnn: 全连接网络的正则化系数
l2_reg_embedding: embedding向量的正则化稀疏
dnn_dropout: 全连接网络的神经元的失活概率
task: 任务, 可以是分类, 也可是是回归

特定の用途では、機能列と履歴動作列を渡す必要がありますが、渡す前に、機能列を前処理する必要があります。詳細は次のとおりです。

まず、データセットを処理してデータを取得する必要があります。ユーザーの過去の行動に基づいてユーザーが現在の記事をクリックするかどうかを予測するため、データ特徴の列を数値特徴、離散特徴、過去の行動特徴に分割する必要があります。 。パーツ、パーツごとに、DINモデルの処理は異なります。
離散フィーチャの場合、データセットにはuser_idなどのカテゴリフィーチャが含まれます。このカテゴリフィーチャの場合、最初に埋め込みを実行して、それぞれの低次元を取得する必要があります。特徴の密な表現。埋め込みが必要なため、各列のカテゴリ特徴の値の辞書を作成し、埋め込み次元を指定する必要があります。したがって、deepctrのDINモデルを使用してデータを準備する場合は、SparseFeatを渡す必要があります。関数は、これらのカテゴリ機能を示します。この関数の入力パラメータは、列名、列の一意の値(辞書作成用)、および埋め込みディメンションです。
記事ID、記事カテゴリなどのユーザーの履歴行動機能列の場合、最初に埋め込みを実行する必要がありますが、上記との違いは、この機能の場合、各機能の埋め込みを取得していることです。現在のユーザーの埋め込みベクトルを取得するには、Attention_layerを介してユーザーの過去の行動と現在の候補記事との相関関係を計算する必要があります。このベクトルは、現在の候補記事とユーザーが過去の記事との類似性に基づくことができます。は過去にクリックしたことがあります。程度はユーザーの関心を反映し、ユーザーのさまざまな履歴クリックに応じて変化し、ユーザーの関心の変化するプロセスを動的にシミュレートします。この種の機能は、ユーザーごとの履歴動作シーケンスです。ユーザーごとに、履歴動作シーケンスの長さが異なります。一部のユーザーはより多くの履歴記事をクリックし、一部のユーザーはより少ない履歴記事をクリックする可能性があるため、引き続き行う必要があります。この長さは統一されています。DINモデルのデータを準備するときは、最初にSparseFeat関数を使用してこれらのカテゴリ機能を指定し、次にVarLenSparseFeat関数を使用してシーケンスを入力して、各ユーザーの履歴シーケンスを同じ長さにする必要があります。したがって、この関数は、シーケンスの最大長を示すmaxlenがパラメーターに含まれます。
連続特徴列の場合、DenseFeat関数を使用して列名と次元を指定するだけで済みます。
特徴列を処理した後、対応するデータを列に対応させて最終データを取得します。
特定のコードの感触をつかみましょう。ロジックは次のとおりです。まず、データ準備関数を作成する必要があります。ここでは、上記の特定の手順に従ってデータを準備し、データと機能の列を取得してから、ビルドしてDINモデルをトレーニングし、最後にモデルに基づいてテストを実行します。

おすすめ

転載: blog.csdn.net/qq_46458164/article/details/110778927