预测新用户——Datawhale AI夏令营 D1
大体观察
凭借经验、肉眼观察对数据有个初处理
如:观察发现测试集中有80%数据来自训练集,而训练集中有90%数据为0(即非新用户),所以我们可以大致认为:标签为1的可以直接灵标签为1,标签为0的则需要建模预测标签是否为1
(因为短时间内为新用户即1的基本上仍然是新用户,而非新用户即0的,可能是用户回流等,导致标签会改变)
k折交叉验证
证是一种评估机器学习模型性能的统计方法,核心思想是将数据集均匀分割成K个子集,依次选择其中1个作为验证集,其余K-1个作为训练集,重复K次后取平均结果。其优势在于:
- 充分利用数据:每个样本都会参与训练和验证
- 评估更稳健:避免单次划分的随机性影响
- 防止过拟合:尤其适用于小规模数据集
Python实现(以Scikit-learn为例)
基础版本
from sklearn.model_selection import KFold
import numpy as np
X = np.array([[1,2],[3,4],[5,6],[7,8],[9,10]])
y = np.array([0,1,0,1,0])
kf = KFold(n_splits=3, shuffle=True, random_state=42)
for train_index, val_index in kf.split(X):
print("TRAIN:", train_index, "VAL:", val_index)
X_train, X_val = X[train_index], X[val_index]
y_train, y_val = y[train_index], y[val_index]
如何上分
- 进行did(device id)聚合
- 从事件级数据到用户级预测
- 原始数据通常是事件级(每个用户有多条记录),但预测任务可能是用户级(每个用户只预测一个标签)。
- 例如:预测某个用户是否会新增(
target=0/1),而不是预测某个事件是否会带来新增. - 可以减少数据冗余,提高计算效率
- 从事件级数据到用户级预测
浙公网安备 33010602011771号