【机器学习】CTR,一个极其重要的算法项目!!

机器学习初学者

共 7286字,需浏览 15分钟

 · 2023-11-09

今儿聊聊点击率的一些技术点!

之前我们同事自从去了某手后,一直做的是点击率预估这块的技术,很多人知道,这块属于核心技术。无论是对于互联网广告,还是推荐类项目。

点击率预估这样的项目,一般是属于是一个一直维护,不断优化的项目。

点击率预估是在线广告领域的重要问题,它涉及到预测用户是否会点击特定广告。在这个案例中,我们将探讨一个点击率预估的实际项目。

点击率预估项目:预测用户点击在线广告的概率

原理

点击率预估的核心思想是通过构建机器学习模型,利用广告相关的特征来预测用户是否会点击广告。这通常涉及到二分类问题,其中正类别表示用户点击广告,负类别表示用户不点击广告。点击率(CTR)是用户点击广告的概率。我们可以使用逻辑回归等分类算法来解决这个问题。

涉及公式

CTR的计算公式为:

在点击率预估中,我们希望构建一个模型来预测CTR,通常使用逻辑回归模型。逻辑回归通过对广告相关特征的线性组合,应用逻辑函数来输出一个点击的概率值,范围在0到1之间。具体的公式如下:

其中   表示点击的概率,  是广告相关的特征,  是模型的权重参数。

数据准备

  1. 数据收集:收集包含广告特征和点击信息的数据集。这些特征可以包括广告的文本描述、广告主信息、广告位信息、用户信息等。
  2. 数据清洗:处理缺失值、异常值,进行特征工程,例如特征选择和转换,以及处理类别型特征的独热编码。
  3. 数据划分:将数据集划分为训练集、验证集和测试集。

模型训练

在模型训练阶段,我们使用训练集数据来拟合逻辑回归模型。

训练的步骤:

  1. 特征工程:对特征进行预处理,例如归一化、标准化等。
  2. 模型训练:使用训练集数据拟合逻辑回归模型,估计权重参数 
  3. 模型评估:使用验证集数据来评估模型性能,通常使用指标如AUC、准确率、召回率等。

代码案例

以下是一个点击率预估的示例Python代码。

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score, accuracy_score, roc_curve  # 添加 roc_curve
import matplotlib.pyplot as plt

# 创建虚拟数据集
np.random.seed(42)
n_samples = 1000
n_features = 5

X = np.random.randn(n_samples, n_features)
y = (np.random.rand(n_samples) > 0.5).astype(int)

# 划分数据集
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.3, random_state=42)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)

# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 预测概率
y_pred_proba = model.predict_proba(X_val)[:, 1]

# 评估模型性能
roc_auc = roc_auc_score(y_val, y_pred_proba)
accuracy = accuracy_score(y_val, (y_pred_proba > 0.5).astype(int))

print(f"ROC AUC: {roc_auc}")
print(f"Accuracy: {accuracy}")

# 可视化ROC曲线
fpr, tpr, thresholds = roc_curve(y_val, y_pred_proba)
plt.figure()
plt.plot(fpr, tpr, lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([01], [01], color='navy', lw=2, linestyle='--')
plt.xlim([0.01.0])
plt.ylim([0.01.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()

这段代码创建了一个虚拟数据集,训练了逻辑回归模型,并评估了模型性能。

最后,绘制了ROC曲线以可视化性能。

上面的代码示例中,我们使用了matplotlib库来绘制ROC曲线,以可视化模型的性能。

ROC曲线是评估分类模型性能的常用工具,显示了不同阈值下的真正例率和假正例率。ROC曲线下的面积(AUC)通常用于量化模型性能。

这个案例提供了一个点击率预估的简单示例,实际项目中,一定会处理更多的特征工程、数据清洗、模型调参等任务。

此外,数据集通常会更大,且模型训练可能需要分布式计算。点击率预估在在线广告和推荐系统中有广泛应用,可帮助广告商更好地定位目标受众并提高广告点击率。

最后

今天分享了常规情况下,点击率预估的方式。

如果你觉得有用,老规矩:点赞+分享给更多需要的朋友。

今天先这样,下期见!

    
    
       
       
             
             
                
                
往期精彩回顾




  • 交流群

欢迎加入机器学习爱好者微信群一起和同行交流,目前有机器学习交流群、博士群、博士申报交流、CV、NLP等微信群,请扫描下面的微信号加群,备注:”昵称-学校/公司-研究方向“,例如:”张小明-浙大-CV“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~(也可以加入机器学习交流qq群772479961


浏览 170
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报