【大数据】【Spark】淘宝展示广告点击率统计分析

数据集说明

  • Ali_Display_Ad_Click是阿里巴巴提供的一个淘宝展示广告点击率预估数据集
文件名称 注释
raw_sample.csv 原始的样本骨架
ad_feature.csv 广告的基本信息
user_profile.csv 用户的基本信息
behavior_log.csv 用户的行为日志
文件说明
raw_sample.csv
  • 从淘宝网站中随机抽样了 114 114 114万用户 8 8 8天内的广告展示/点击日志( 2600 2600 2600万条记录),构成原始的样本骨架

  • 用前面 7 7 7天的做训练样本(20170506-20170512),用第 8 8 8天的做测试样本(20170513

  • pid是资源位

user,time_stamp,adgroup_id,pid,nonclk,clk
581738,1494137644,1,430548_1007,1,0
449818,1494638778,3,430548_1007,1,0
914836,1494650879,4,430548_1007,1,0
...
ad_feature.csv
  • campaign_id是广告计划ID
adgroup_id,cate_id,campaign_id,customer,brand,price
63133,6406,83237,1,95471,170.0
313401,6406,83237,1,87331,199.0
248909,392,83237,1,32233,38.0
...
user_profile.csv
  • cms_segid是微群ID
  • final_gender_code 1 1 1表示男,为 2 2 2表示女
  • pvalue_level是消费档次,为 1 1 1表示低档,为 2 2 2表示中档,为 3 3 3表示高档
  • shopping_level是购物深度,为 1 1 1表示浅层用户,为 2 2 2表示中度用户,为 3 3 3表示深度用户
  • occupation表示是否为大学生, 1 1 1表示是, 0 0 0表示否
  • new_user_class_level是城市层级
userid,cms_segid,cms_group_id,final_gender_code,age_level,pvalue_level,shopping_level,occupation,new_user_class_level
234,0,5,2,5,,3,0,3
523,5,2,2,2,1,3,1,2
612,0,8,1,2,2,3,0,
behavior_log.csv
  • 本数据集涵盖了raw_sample中全部用户 22 22 22天内的购物行为(共七亿条记录)
  • user + time_stampkey,会有很多重复的记录,因为不同的类型的行为数据是不同部门记录的,在打包到一起的时候,实际上会有小的偏差(即两个一样的time_stamp实际上是差异比较小的两个时间)
  • btag是行为类型,ipv表示浏览,cart表示加入购物车,fav表示喜欢,buy表示购买
user,time_stamp,btag,cate,brand
558157,1493741625,pv,6250,91286
558157,1493741626,pv,6250,91286
558157,1493741627,pv,6250,91286
...

业务需求

(1)统计广告整体点击率
(2)分析一段时间内的广告点击情况
(3)分析一天内的广告点击情况
(4)统计广告点击量Top 1,分析该广告的点击用户特征
(5)统计广告点击量Top 1,分析该广告的主要受众群体
(6)分析广告展示对用户行为的影响

需求实现

数据预处理
# -*- coding: utf-8 -*-
# @Time     : 2024/12/14 19:12
# @Author   : 从心
# @File     : spark_taobao_display_ad_click_rate_prediction_preprocess.py
# @Software : PyCharm

import pandas as pd
from sklearn.impute import SimpleImputer
from sklearn.neighbors import KNeighborsClassifier

"""
预处理 ad_feature.csv
"""
df_ad_feature = pd.read_csv('../data/ad_feature.csv')
df_ad_feature.columns = df_ad_feature.columns.str.strip()
print(df_ad_feature.head(10))
df_ad_feature.info()

for i in df_ad_feature.columns:
    null_rate = df_ad_feature[i].isna().sum() / len(df_ad_feature) * 100
    if null_rate > 0:
        print(f'{
     i} null rate: {
     null_rate:.2f} %')

df_ad_feature.dropna(inplace=True)
df_ad_feature.drop_duplicates(inplace=True)
df_ad_feature['brand'] = df_ad_feature['brand'].astype(int)
print(df_ad_feature.head())
df_ad_feature.info()

df_ad_feature.to_csv('../data/ad_feature_cleaned.csv', index=False)

"""
预处理 user_profile.csv
"""
df_user_profile = pd.read_csv('../data/user_profile.csv')
df_user_profile.columns = df_user_profile.columns.str.strip()
print(df_user_profile.head(10))
df_user_profile.info()

for i in df_user_profile.columns:
    null_rate = df_user_profile[i].isna().sum() / len(df_user_profile) * 100
    if null_rate > 0:
        print(f'{
     i} null rate: {
     null_rate:.2f} %')

new_user_class_level = df_user_profile.loc[:, 'new_user_class_level'].values.reshape(-1, 1)
si = SimpleImputer(strategy='most_frequent')
df_user_profile.loc[:, 'new_user_class_level'] = si.fit_transform(new_user_class_level)

columns = ['userid', 'cms_segid', 'cms_group_id', 'final_gender_code', 'age_level',
           'shopping_level', 'occupation', 'new_user_class_level', 'pvalue_level']
df_user_profile = df_user_profile[columns]
pvalue_level_null = df_user_profile.loc[df_user_profile['pvalue_level'].isnull().values == True]
pvalue_level_no_null = df_user_profile.loc[df_user_profile['pvalue_level'].isnull().values == False]

X_train, y_train = pvalue_level_no_null.iloc[:, :-1], pvalue_level_no_null.iloc[:, -1]
knn = KNeighborsClassifier(n_neighbors=3, weights='distance')
knn.fit(X_train, y_train)

X_test = pvalue_level_null.iloc[:, :-1]
y_test = knn.predict(X_test)
y_test = pd.DataFrame(y_test)
y_test.columns = ['pvalue_level']
X_test.reset_index(drop=True, inplace=True)
pvalue_level_null = pd.concat([X_test, y_test], axis=1)
df_user_profile = pd.concat([pvalue_level_no_null, pvalue_level_null], ignore_index=False)
print(df_user_profile.head(10))
df_user_profile.info()

df_user_profile.to_csv('../data/user_profile_cleaned.csv', index=False)

"""
预处理 raw_sample.csv
"""
df_raw_sample = pd.read_csv('../data/raw_sample.csv', nrows=500000)
df_raw_sample.columns = df_raw_sample.columns.str.strip()
print(df_raw_sample.head(10))
df_raw_sample.info()

for i in df_raw_sample.columns:
    null_rate = df_raw_sample[i].isna().sum() / len(df_raw_sample) * 100
    if null_rate > 0:
        print(f'{
     i} null rate: {
     null_rate:.2f} %')

df_raw_sample.rename(columns={
   'user': 'userid'}, inplace=True)
print(df_raw_sample.head(10))
df_raw_sample.info()

df_raw_sample.to_csv('../data/raw_sample_cleaned.csv', index=False)

"""
预处理 behavior_log.csv
"""
df_behavior_log = pd.read_csv('../data/behavior_log.csv', nrows=500000)
df_behavior_log.columns = df_behavior_log.columns.str.strip()
print(df_behavior_log.head(10))
df_behavior_log.info()

for i in df_behavior_log.columns:
    null_rate = df_behavior_log[i].isna(
基于Spark的电商用户行为分析预测是一种利用大数据处理框架Apache Spark来分析电商平台用户行为数据,并进行行为预测的方法。以下是这种分析预测的主要步骤内容: 1. 数据收集: 首先,需要收集电商平台上的用户行为数据,包括浏览、搜索、点击、购买等操作。 2. 数据预处理: 使用Spark的DataFrameSpark SQL等工具对原始数据进行清洗、转换整理。 3. 特征工程: 利用Spark MLlib等机器学习库,从原始数据中提取有意义的特征,如用户活跃度、商品偏好、购买力等。 4. 模型选择与训练: 根据分析目标选择合适的机器学习模型,如分类模型、回归模型或聚类模型。使用Spark MLlib训练模型。 5. 模型评估与优化: 使用Spark的评估工具对模型性能进行评估,并通过交叉验证、超参数调优等方法优化模型。 6. 预测与分析: 使用训练好的模型对新数据进行预测,生成用户行为分析报告预测结果。 7. 可视化与展示: 利用Spark与可视化工具(如Tableau或Power BI)结合,将分析结果以图表形式展示。 基于Spark的电商用户行为分析预测具有以下优势: 1. 高性能:Spark的内存计算分布式处理能力可以快速处理海量数据。 2. 可扩展性:可以轻松扩展到大规模集群,适应不断增长的数据量。 3. 丰富的机器学习库:Spark MLlib提供了丰富的机器学习算法,适合构建复杂的分析模型。 4. 实时处理能力:Spark Streaming支持实时数据处理,可以进行近实时的用户行为分析预测。 5. 集成方便:可以与Hadoop生态系统无缝集成,方便与现有大数据平台结合。 通过这种分析预测,电商平台可以更好地理解用户行为模式,预测用户需求,优化推荐系统,提高用户满意度销售额。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值