【信息流推荐论文大赏】Predicting Clicks: Estimating the Click-Through Rate for New Ads

太长不看版

Predicting Clicks: Estimating the Click-Through Rate for New Ads

论文主要思想:提出了一种预测新广告CTR的办法。

论文使用方法:提出了新的特征,使用逻辑回归 (logistic regression) 模型训练,使用模型预测CTR的 KL散度和均方差(MSE)来验证实验效果。

上述新的特征包括以下四个方面:

  • CTR相关特征:
    • Term CTR:包含相同关键词的其他广告的CTR
    • Related Term CTR:包含相近关键词的其他广告的CTR
  • 新广告本身特征
    • Appeareanc:广告本身是否美观
    • Attention Capture:广告是否有吸引力
    • Reputation:广告主的知名度
    • Landing Page Quality:登陆页的质量(我理解为广告引流页的质量)
    • Relevance:广告和用户检索词 (search query)的相关性
  • 广告指向的明确性:
    • 作者认为指向越明确的广告CTR越高
  • 外部特征:
    • 关键词在网络上的词频
    • 关键词在搜索引擎上的词频

Motivation

为什么要预测广告CTR?

因为广告主爸爸给钱。例如谷歌雅虎等广告主爸爸会按照点击结算方式(cost-per-click CPC)给钱,即用户每点一次广告,爸爸就要给一次钱。

卑微的广告展示方怎么才能挣到更多钱呢,他们可以用这个公式计算收入的期望值:
E a d [ r e v e n u e ] = p a d ( c l i c k ) ∗ C P C a d E_{ad}[revenue] = p_{ad}(click)*CPC_{ad} Ead[revenue]=pad(click)CPCad
其中 C P C a d CPC_{ad} CPCad是广告爸爸对一次点击的出价, p a d ( c l i c k ) p_{ad}(click) pad(click)是对该条广告的点击率预测(CTR)。出价是爸爸定的,但是把CTR高的广告往放,卑微的广告展示方就可以挣到更多钱。

这里论文作者做了一个简单的解释,在广告展示界面上,排在越靠前的广告被用户注意到的可能性越大(这也导致CTR越大)。因此,在决定广告出现顺序的时候,需要精确预估每条广告的CTR,然后把CTR高的排前面。

在预估每条广告的CTR时,作者先排除了广告出现位置的影响,否则就会死锁:广告CTR越高越往前放,越往前放进而导致CTR越高,就不好计算了。
在这里插入图片描述

为什么要预测新广告的CTR?

因为广告主爸爸每天发来的新广告特别多,由于缺少历史点击数据,无法准确预估其CTR,卑微的广告展示方需要尽快确定新广告质量,以决定投放顺序,挣更多钱。所以作者针对这个问题,提出了一系列的新特征来拟合新广告的质量。

广告搜索框架

广告的点击率(CTR)由两个因素决定:

  • 用户看到它的可能性:由广告出现的位置(pos)决定
  • 用户看到它之后点击它的可能性:由它本身质量决定

因此,广告的点击率可以公式化为:
p ( c l i c k ∣ a d , p o s ) = p ( c l i c k ∣ a d , p o s , s e e n ) ∗ p ( s e e n ∣ a d , p o s ) p(click|ad, pos) = p(click|ad,pos,seen)*p(seen|ad,pos) p(clickad,pos)=p(clickad,pos,seen)p(seenad,pos)
为此,论文作者做了简化假设,假设广告被用户看到的概率只与出现位置有关(与广告本身质量无关);用户看见广告后,点击它的概率只与广告质量有关(与广告出现位置无关)。这里有点绕口,其实就是假定了上述两个因素互相独立。于是,公式可以简化为:
p ( c l i c k ∣ a d , p o s ) = p

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Sure, here's an example LSTM model for predicting the polarity of movie reviews using the IMDB dataset in Keras: ```python from keras.datasets import imdb from keras.preprocessing import sequence from keras.models import Sequential from keras.layers import Dense, Embedding, LSTM # Load the IMDB dataset max_features = 20000 maxlen = 80 batch_size = 32 (x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features) # Pad sequences to a fixed length x_train = sequence.pad_sequences(x_train, maxlen=maxlen) x_test = sequence.pad_sequences(x_test, maxlen=maxlen) # Define the model architecture model = Sequential() model.add(Embedding(max_features, 128)) model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2)) model.add(Dense(1, activation='sigmoid')) # Compile the model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Train the model model.fit(x_train, y_train, batch_size=batch_size, epochs=5, validation_data=(x_test, y_test)) # Evaluate the model on test data score, acc = model.evaluate(x_test, y_test, batch_size=batch_size) print('Test score:', score) print('Test accuracy:', acc) ``` Here, we first load the IMDB dataset and pad the sequences to a fixed length of 80. Then, we define an LSTM model with an embedding layer, a LSTM layer with dropout, and a dense output layer with sigmoid activation. We compile the model with binary cross-entropy loss and Adam optimizer, and train it for 5 epochs on the training data. Finally, we evaluate the model on the test data and print the test score and accuracy.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值