¥
立即购买

数据预处理助手

370 浏览
35 试用
9 购买
Dec 1, 2025更新

本提示词为数据科学家设计,能够针对指定数据类型或数据特征生成专业、结构化的数据预处理步骤。输出内容涵盖数据清洗、缺失值处理、异常值检测、特征编码和标准化等操作,内容准确、可执行,并采用技术写作风格呈现,帮助用户快速准备高质量分析或建模数据集。

以下为针对该客户行为二分类流失(churn)场景的预处理方案与特征生成流程。目标是构建干净、可复现的特征表,采用可解释的编码方案,并在数据清洗与特征工程阶段考虑类不平衡。数据规模中型(1–100万行),数据源为CSV,缺失值策略采用模型预测填充,异常值处理采用Winsorization。

一、总体原则与输出

  • 面向训练的特征表应为行级客户快照(每客户一行),包含稳定、可解释的特征,明确数据版本与处理步骤。
  • 所有统计(均值、分位数、词典、编码映射、插补模型、缩放参数)在训练集上拟合,并以同一版本持久化,用于验证与测试集的纯变换。
  • 避免信息泄露:任何插补或编码都不得使用目标标签或验证/测试数据分布;目标仅用于模型训练与评估。

二、数据摄取与模式定义

  1. 文件读取与一致化

    • CSV读取:指定编码(UTF-8),显式定义分隔符、引号处理与转义字符。
    • 列类型初始约束:
      • customer_id: 字符串(主键)
      • churn: 整型/布尔(0/1)
      • signup_date: 日期/时间戳(解析为timezone-aware)
      • tenure_months: 整型/浮点(非负)
      • monthly_fee、total_charges: 浮点(非负)
      • contract_type、payment_method、auto_renew、region: 字符串/分类型
      • service_tickets_90d: 整型(>=0)
      • last_login: 日期/时间戳(可空)
      • complaint_text: 文本(可空)
      • income_level: 如存在则字符串/分类型(可空)
    • 日期解析:使用多格式自适应(如dateutil),统一到ISO 8601;时区一致且保留时区信息。
    • 异常类型修正:将明显错误类型(数字型列中的字符串、布尔型列中的"Yes"/"No")转换或标记。
  2. 目标列与范围检查

    • 校验churn仅包含{0,1};剔除其他值或标记为不可用。
    • 记录总行数、各列缺失率、类型转换警告,生成数据质量报告。

三、重复记录与样本界定 3. 去重策略(客户级唯一)

  • 定义重复:customer_id重复的多行。
  • 选择规则:保留每客户最新的业务状态行(优先排序:tenure_months降序,其次last_login最新,其次signup_date最晚);如业务明确为按月快照且需要时间序列建模,可改为按观察窗聚合,但本任务采用每客户一行。
  • 保留审计列:dup_count(重复计数)、dup_resolved_method(选择规则)、source_row_ids。

四、类别标准化与别名处理 4. 类别清洗与规范化

  • 标准化处理:统一大小写(小写),去除前后空格,合并多空格,移除不可见控制字符。
  • 同义别名映射:建立并版本化映射字典(examples)
    • contract_type: {"month-to-month","monthly","M2M"}→"month_to_month"; {"1-year","12 months"}→"one_year"; {"2-year","24 months"}→"two_year"
    • payment_method: {"CC","credit card"}→"credit_card"; {"ACH","bank transfer"}→"bank_transfer"; {"e-check","electronic check"}→"e_check"
    • region: 统一区域命名与简写(如"NE","N.E."→"north_east")
  • 未知值标准化:空字符串、"unknown"、"n/a"统一为缺失。

五、计费一致性与业务规则校正 5. 计费一致性检查与特征化

  • 期望计费:expected_total = monthly_fee × tenure_months。
  • 误差度量:billing_error = total_charges − expected_total;billing_error_ratio = billing_error / max(1, expected_total)。
  • 业务异常识别:若|billing_error_ratio| > 0.2或monthly_fee、total_charges为负,则标记billing_inconsistent=1。
  • 修正策略:
    • 对明显跨月计费错误(billing_inconsistent=1且无负值且异常源于极端total_charges)不直接覆盖原值,以保守方式新增特征(billing_error、billing_error_ratio、billing_inconsistent),原值保留用于模型;避免引入主观修正。
    • 可选:若业务规则允许,将total_charges在小误差范围(如|billing_error_ratio| ≤ 0.05)校正为expected_total,并记录校正标志。

六、异常值与数值分布处理 6. Winsorization(训练集拟合)

  • 针对右偏与极端值的数值列:monthly_fee、total_charges、service_tickets_90d(及其他连续列)。
  • 分位阈值:下界p_low=0.005、上界p_high=0.995(根据训练集分布确定);将低于下界/高于上界的值截至阈值。
  • 保留原始值影子列以便审计(如monthly_fee_raw、total_charges_raw),或记录是否被截断的布尔标志。
  1. 变换与缩放
    • 对明显右偏的列应用log1p变换(如monthly_fee、total_charges、service_tickets_90d),以提升线性可分性与稳健性。
    • 缩放:采用RobustScaler(中位数与IQR)在训练集拟合,保证对剩余轻微异常的稳健性。
    • 注意:log1p与缩放的先后顺序为先log1p再缩放。

七、缺失值处理(模型预测填充) 8. 缺失分析与策略

  • 主要缺失:last_login、complaint_text、income_level(如存在)。
  • 文本缺失:complaint_text缺失视为空字符串;保留missing_text_flag。
  • 时间缺失:last_login通过模型插补,或转为下游衍生特征(days_since_last_login)再插补。
  • 类别缺失:income_level缺失采用分类模型预测填充;同时保留missing_income_flag。
  • 数值缺失:对连续变量采用随机森林/梯度提升型插补(如MissForest或LightGBM-based imputer)在训练集拟合,不使用目标标签作为特征。
  1. 插补实现要点
    • 拟合范围:仅在训练集数据上学习插补模型;验证/测试集中仅应用预测,不再重新拟合。
    • 特征选择:用于插补的输入特征包含非缺失的数值与已规范化的类别(先进行基本编码,如频率编码/one-hot),不包含churn。
    • 稳健性:对高噪声文本不直接用于插补last_login或income_level;改用结构化行为特征(如tenure_months、service_tickets_90d、contract_type、auto_renew、region等)。

八、文本字段处理(complaint_text) 10. 文本清洗 - 统一小写;移除控制字符;标准化空白。 - 表情与噪声处理:使用emoji词典将emoji映射到类别令牌(如:emoji_negative, :emoji_positive, :emoji_neutral);保留常见标点与否定词。 - 非字母数字字符过滤:保留对情绪或强调有意义的符号(!、?),其他符号剔除。

  1. 可解释特征化
    • 统计型特征:text_len、word_count、exclamation_count、question_count、emoji_negative_count、emoji_positive_count。
    • 词典命中率:预定义负向/投诉词表(如“退款”“取消”“客服”“差”“慢”)的命中计数与比率。
    • TF-IDF(受控词汇):基于训练集选取前N(如500–2k)高频且与churn相关的unigram/bigram,限制停用词,保留否定短语;使用线性模型可解释权重。
    • 稀疏控制:应用最小文档频率阈值(min_df 5–10),避免过拟合;词汇表版本化。

九、类别编码(可解释) 12. 低/中基数类别 - contract_type、payment_method、auto_renew:One-Hot编码,设定显式“unknown/other”桶。 - auto_renew转布尔(True/False),缺失作为第三状态或填补后再布尔。

  1. 中/高基数类别
    • region:频率编码或目标不泄露的均值编码(K折交叉目标均值编码,内部仅用训练折构造),更推荐频率编码以保持稳定性。
    • income_level(如存在):One-Hot或有序标签编码(若业务上有明确序);缺失单独一类或先插补再编码。

十、日期衍生特征 14. 时间特征生成 - 从signup_date、last_login计算: - tenure_months_check = floor((snapshot_date − signup_date)/30.44) 与原tenure_months一致性校验差异(tenure_diff)。 - days_since_last_login(对缺失值插补后再计算;或先以缺失为极大值并保留missing标志)。 - 月份/季节性(如需):signup_month、signup_weekday(One-Hot),谨慎使用避免伪模式。

十一、特征交互与业务派生 15. 比率与误差特征 - arpu = total_charges / max(1, tenure_months)(Winsorize前先计算,后续对arpu本身亦可Winsorize并log1p)。 - fee_to_arpu_ratio = monthly_fee / max(1e-3, arpu)。 - tickets_per_month = service_tickets_90d / 3 / max(1, monthly_fee分档或tenure_months)。 - 上述计费误差特征:billing_error、billing_error_ratio、billing_inconsistent。

十 二、类不平衡考虑(在预处理与划分中落实) 16. 数据划分 - Stratified train/validation/test(如7/2/1),按churn分层;如存在时间快照因素,优先时间后验划分(训练早期、测试后期),再在训练内分层。 - 所有变换(Winsorize、缩放、词表、插补器、编码器)只在训练集拟合。

  1. 采样与权重(建模阶段使用)
    • 不在预处理阶段进行全局重采样;在训练折内可使用SMOTE/随机欠采样;或首选模型类权重(如逻辑回归class_weight="balanced"、树模型scale_pos_weight)。
    • 阈值调优:在验证集上依据PR曲线或成本敏感指标选择决策阈值。

十 三、可复现性与治理 18. 版本化与审计 - 数据版本ID(源CSV哈希、行数、时间戳)。 - 预处理配置文件(分位点、词典、映射、缩放/插补器参数、随机种子)。 - 随机性控制:固定seed;对K折编码、插补、词汇选择使用确定性流程。 - 输出日志:每步的影响(删除/修正行数、winsor化比例、插补率、类别规范化替换计数)。

十 四、输出特征表结构(示例) 19. 字段与类型(训练/推理一致) - 主键与目标: - customer_id (string), churn (int) - 数值连续: - monthly_fee_log_scaled (float), total_charges_log_scaled (float), service_tickets_90d_log_scaled (float) - arpu_log_scaled (float), fee_to_arpu_ratio (float) - billing_error (float), billing_error_ratio (float), billing_inconsistent (int) - 时间衍生: - tenure_months (int/float), tenure_diff (int), days_since_last_login (float), signup_month_OHE..., signup_weekday_OHE... - 类别编码: - contract_type_OHE..., payment_method_OHE..., auto_renew_flag (int), region_freq (float) 或 region_OHE... - income_level_OHE...(如存在) - 文本特征: - text_len (int), word_count (int), exclamation_count (int), question_count (int) - emoji_negative_count (int), emoji_positive_count (int) - lexicon_negative_hits (int), lexicon_positive_hits (int) - tfidf_token_1..N(受控词汇的稀疏列或以向量存储) - 质量与审计: - dup_count (int), dup_resolved_method (string) - winsorized_flags_*(可选), missing_income_flag (int), missing_text_flag (int), last_login_imputed_flag (int)

十五、预处理步骤清单(执行顺序摘要)

  1. 读取CSV并统一编码、类型初始约束;解析日期为ISO 8601,保留时区。
  2. 目标列校验与数据质量概览(缺失率、类型错误、负值检查)。
  3. 去重:按customer_id分组,保留最新记录;生成审计字段。
  4. 类别标准化:大小写、空格、控制字符清理;应用同义别名映射;未知统一为缺失。
  5. 计费一致性检查:计算expected_total、billing_error、billing_error_ratio;生成billing_inconsistent标志;必要时小误差范围内校正。
  6. Winsorization:在训练集对monthly_fee、total_charges、service_tickets_90d(及其他连续列)按[0.5%, 99.5%]分位截断;记录截断比例。
  7. 分布变换与缩放:对右偏列log1p,再用RobustScaler缩放(训练集拟合)。
  8. 缺失值插补(模型预测填充):在训练集拟合插补模型(如MissForest/GBM imputer),对last_login、income_level等进行预测填充;complaint_text缺失置空并保留标志。
  9. 文本清洗:小写、移除控制字符、标准化空白、emoji映射;生成统计型文本特征。
  10. 文本向量化:训练集构建受控TF-IDF词汇表(unigram/bigram,限定min_df),持久化并应用于验证/测试。
  11. 日期衍生:计算days_since_last_login、tenure_diff、signup_month/weekday等。
  12. 类别编码:低基数One-Hot,高基数频率编码或K折目标均值编码(无泄露);保留“unknown/other”桶。
  13. 交互与比率:arpu、fee_to_arpu_ratio、tickets_per_month等。
  14. 训练/验证/测试分层划分;仅在训练集拟合所有统计与编码器;在验证/测试仅变换。
  15. 生成最终特征表;写出数据字典、版本与审计日志;确保可复现。

该流程在保证可解释性的前提下,结合模型预测插补与Winsorization处理右偏与极端值,并通过分层划分与严格的训练集拟合策略避免信息泄露,产出稳定可复现的特征表用于后续分类建模与类不平衡处理。

以下方案面向多门店多品类日级层级时间序列(~100万-1000万行,Parquet),目标是在保证稳健性的前提下,构建可训练的特征矩阵并制定缺失/异常处理策略,兼顾滚动验证与再训练需求。步骤以时间序列无泄露为核心,适配促销结构性突变、节假日尖峰与缺货置零等业务特点。

一、数据与主键

  • 主键:store_id, product_id, date(本地时区日粒度)。
  • 关键列:sales_qty(非负)、price(正值)、promo_flag、holiday_flag、weather_code、stock_out、online_traffic。
  • 部分门店新开业,序列不齐全;存在少量缺失日与重复记录;外部特征来自天气与活动日历。

二、读取与模式校验

  1. Parquet读取与分区建议
  • 以date(按月)和store_id分区存储与读取,推下过滤条件,减少I/O。
  • 投影裁剪:仅读取需要列。
  1. 模式与值域校验
  • 类型:sales_qty为float/int非负,price为float>0,flag列为{0,1},weather_code为有限集合/字符串,online_traffic为非负。
  • 异常值预检:负销量/负价格/价格为0/日期越界/NaT均标记为异常待处理。

三、清洗与标准化(无泄露)

  1. 时区与日期对齐
  • 将时间戳统一到本地时区,截断为日期。确保每条记录代表 [local day]。如存在跨日订单,必须在ETL中归属到交易发生日。
  1. 重复记录合并(相同主键)
  • 聚合规则(group by store_id, product_id, date):
    • sales_qty:sum
    • price:按sales_qty加权平均(若销量为0全为缺失,取均值);限定>0
    • promo_flag/holiday_flag/stock_out:max(只要有1则为1)
    • weather_code:众数(若无众数,取最近一天前向填充值)
    • online_traffic:store-level(日)平均或众数(同日多条则平均)
  1. 活跃期识别与日历重构
  • 门店/商品活跃起始:每个(store, product)的first_valid_date(首个非缺失且价格>0或销量非缺失),从该日起建立完整日历到max_date。
  • 在活跃期外不扩展,不做填充,避免虚假前向值。
  1. 缺失值处理(偏好前向填充,列别策略)
  • sales_qty(目标):不对目标做前向填充。缺失保持NaN(用于派生特征计算时按skip)。仅在构造特征(如滚动均值)时用窗口内部有效值计算。
  • price:按(store, product)分组前向填充,limit=7天;起始端仍缺失→用该对的非促销中位价(基准价)填;仍缺→同store同品类(若可得)或同store整体中位价;再不行→全局中位价。保证>0。
  • promo_flag:缺失→0。对连续促销段可能漏记的1,允许短期ffill(limit=3)且仅当价格较基准价有显著折扣(例如≤0.9×基准价)时生效。
  • holiday_flag:由活动日历重算覆盖;缺失→0。
  • stock_out:缺失→0。
  • weather_code:按store分组前向填充limit=3;仍缺→最近有效值回填或“UNK”占位。
  • online_traffic:按store分组前向填充limit=7;仍缺→store的滚动7日中位数;仍缺→全局中位数。
  1. 异常值检测与截断(不误杀促销/节假日尖峰)
  • 以(store, product, regime)为分组计算稳健范围(regime由promo_flag与holiday_flag定义:常态/促销/节假日)。
  • 对每个regime计算中位数Med与MAD;阈值上/下界 = Med ± k×MAD(建议k=5)。亦可辅以分位数界(如p0.2与p99.8),取交集。
  • sales_qty:截断到[0, upper],下界不低于0。
  • price:截断到[store-product层p1, p99](全局备选),禁止≤0。
  • online_traffic:截断到[0, p99.5]。
  • weather_code:不截断,维持枚举。
  • 注:对促销/节假日的销量高峰不做异常判定(使用regime分组避免误截断)。
  1. 缺货与置零处理(需求审慎对待)
  • 若stock_out=1且sales_qty=0,视为被截断的需求日。生成y_mask_censored=1。
  • 训练时:
    • 目标y用于需求预测:对censored日将y设为NaN并在损失中忽略(或设置样本权重=0)。必要时可构造y_ffill(最近非缺货滚动均值)用于特征但不作为真实标签。
  • 评估/预测:可按有货假设预测(除非另建库存约束模型)。
  1. 一致性与业务逻辑校验
  • 价格在促销期间显著低于基准价(可设折扣阈值),促销结束后恢复;若promo_flag=1但无折扣,标记为潜在数据问题(可将promo_flag置0)。
  • price与sales_qty负相关性检查(局部区间)。
  • 同店同日weather_code一致性检查;online_traffic为store日级一致。

四、特征矩阵构建(无泄露、可扩展)

  1. 目标变量
  • y = sales_qty(原尺度,或log1p(y)以稳健建模;log变换在评估需逆变换并修正偏差)。
  • 记录y_mask_censored用于训练权重或过滤。
  1. 基础时间/日历特征
  • day_of_week, week_of_year, month, is_weekend。
  • 周期编码:sin/cos(2π·dow/7)、sin/cos(2π·doy/365)。
  • 门店开业“年龄”特征:days_since_store_open,product在该店上架年龄(若可推断)。
  1. 自回归与滚动窗口(按(store, product)分组,严格过去窗口)
  • Lags:1,2,3,7,14,28,35,42,56,364(可按数据长度取用)。
  • 滚动统计(排除censored与NaN):均值/中位数/标准差/最小值/最大值/变异系数CV,窗口7,14,28,56。
  • 周期滚动:同周同星期的均值(例如过去8个同星期)。
  • EWMA/指数衰减均值:半衰期7/14/28天。
  1. 价格与促销特征
  • 基准价base_price:各(store, product)在promo_flag=0日的中位价;若不足,取该组总体中位。
  • 折扣深度:disc = clip((price - base_price)/base_price, [-0.8, +0.8])。
  • 相对价:price/base_price,log_price与其lags、滚动均值。
  • 促销窗口:promo_flag当前、滞后1/7/14、未来不使用;促销段内“已持续天数/剩余天数”不可用未来信息,仅构造“距上次促销天数”“最近28天促销占比”。
  • 交互:promo_flag×disc、promo_flag×dow、disc×holiday_flag。
  1. 节假日/事件特征
  • holiday_flag当前、滞后1/7;距离上次/下次节假日的天数(不使用未来,使用预先加载的日历在训练时切分到训练窗口)。
  • 事件窗口哑变量(节前1-3日、节中、节后1-3日)。
  1. 天气与流量特征
  • weather_code:嵌套为one-hot或目标编码;数值天气(若可从code映射气温/降水)则直接入模。
  • online_traffic:lags与滚动7/14/28均值与增长率((t - t-7)/t-7)。
  1. 层级汇总特征(避免泄露,窗口基于过去)
  • 店级总销量:store_daily_qty(不含当前对的销量或包含两者需一致定义),及其滚动均值/增长率。
  • 商品在全店铺汇总:product_total_qty_allstores,对应滚动统计。
  • 同类产品/同品牌(若可从product_id映射到品类/品牌)级别的滚动均值与促销占比。
  • 相对表现:本对销量/店总销量,本对价格/店中位价。
  1. 类别编码策略(高基数)
  • IDs:store_id和product_id
    • 若用CatBoost:设为categorical,使用有序目标编码避免泄露。
    • 若用GBDT(如LightGBM):时间安全的目标编码(按fold内历史计算,贝叶斯平滑);或hashing trick + 频次/出现时长特征。
  • weather_code等低基数:one-hot或CatBoost内置。
  1. 信息泄露防控
  • 所有滚动/聚合仅用t−1及更早数据(窗口函数rangeBetween(-W, -1))。
  • 目标编码/基准价/分位数/截断阈值均在训练窗口内计算,每个fold单独拟合并持久化。
  • 对censored样本不参与目标统计(以免偏倚)。

五、滚动验证与再训练

  1. 划分方案(示例,3年数据)
  • 设预测周期H(如7或28天)。
  • Folds(前向链式):
    • Fold1:训练=年1-年2Q4末;验证=接下来的H或H×4
    • Fold2:训练=年1-年3Q2末;验证=接下来的H或H×4
    • …直到用尽数据
  • 每fold内计算清洗阈值、基准价、目标编码、滚动统计;验证严格落在训练之后。
  1. 流程顺序(每fold)
  • 读取→过滤到训练期→去重→活跃期建日历→缺失/异常处理→派生基准价→截断→构造滚动/lag特征→构造层级汇总特征→编码类别→生成训练特征矩阵与标签。
  • 验证期仅能使用训练期统计量(编码映射、截断阈值、基准价等),以及验证期自身的滞后/历史数据。
  1. 再训练策略(生产)
  • 周更或月更:使用最近24个月滚动窗口重算阈值与编码。
  • 在线更新:新店/新品冷启动使用层级/全局统计与类别prior;随数据积累切换到本地统计。
  • 监控:分层误差(全局/店/品)与漂移监控(价格、促销强度、流量、天气分布)。

六、可扩展计算与实现建议

  • 单机≤千万行:Polars或Pandas+Numba/Vectorbt,谨慎内存;关键步骤用groupby窗口与惰性计算。
  • 集群:PySpark
    • 去重与截断阈值:groupBy + approxQuantile计算分位;基于Window.partitionBy(['store_id','product_id']).orderBy('date')做lag/rolling(rangeBetween(-W,-1))。
    • 层级特征:额外的groupBy(['store_id','date'])与groupBy(['product_id','date'])。
    • 将训练窗口统计(基准价、目标编码映射、截断上下界)写入Hive/Parquet并按fold版本化,验证/线上复用。
  • I/O:Parquet with snappy/zstd压缩;字段裁剪;日期/门店分区。

七、输出数据规范

  • 训练特征矩阵列(示例,按需裁剪)
    • 键:store_id, product_id, date
    • 目标:y(sales_qty或log1p)、y_mask_censored
    • 时间/日历:dow, is_weekend, sin_dow, cos_dow, month, sin_doy, cos_doy, days_since_store_open
    • 自回归/滚动:y_lag{1,2,3,7,14,28,…},roll_mean_{7,14,28,56},roll_std_{…},ewma_{…}
    • 价格/促销:price, base_price, relative_price, disc, promo_flag, promo_lag{1,7,14},promo_share_28
    • 事件/节假日:holiday_flag, holiday_lag{1,7}, pre_holiday_3d, post_holiday_3d
    • 天气/流量:weather_code_encoded/one-hot,traffic, traffic_lag{7,14}, traffic_roll_mean_{7,28}
    • 层级:store_total_qty_lag{1,7}, product_total_qty_lag{1,7}, share_in_store, price_vs_store_median
    • 编码:store_id_enc, product_id_enc(目标编码/哈希)
  • 元数据:fold_id、统计版本id(用于复现实验)。

八、关键决策与默认值总结

  • 缺失值:优先前向填充(price/traffic/weather),限定窗口;目标不ffill。
  • 异常值:按regime(促销/节假日/常态)分组的稳健截断(MAD + 分位数),保留合理尖峰。
  • 缺货天:目标设NaN参与权重屏蔽;构造censored标记,避免将置零当作需求。
  • 无泄露:所有统计量与编码均在训练窗口内拟合,验证/线上只用过去信息。

该流程可直接落地于PySpark/Polars管线,确保在百万级到千万级行数下稳定运行,并为后续建模(如CatBoost/LightGBM/XGBoost或全局分层模型)提供一致、可复现的特征矩阵与评估框架。

以下为面向推荐系统的可复用日志清洗、特征编码、文本向量化与归一化流程,针对超大型事件级交互数据(>1000万行),确保线上/离线一致性。流程以批处理(Spark/Flink)为主,支持流式增量更新,严格版本化与可重现。

一、管道设计原则

  • 可重现与版本化:所有字典、哈希种子、分桶边界、Scaler参数、文本模型与停用词表均固定版本,统一存储与加载。
  • 事件时间一致:所有特征以事件时间为准,训练/评估严格使用时间切割,避免数据泄露。
  • 在线/离线一致:采用同一实现库与参数;在线仅执行查表/轻量变换;重计算(如BERT向量)离线预生成并缓存。
  • 稀疏与长尾友好:统一采用哈希/频率截断/OOV桶、层级平滑,确保稳定与可扩展。
  • 缺失与异常标记:所有字段提供缺失指示与离群标记,不做静默删除。

二、输入与模式校验

  • 固定Schema与类型:user_id(item_id)为字符串或长整型;ts为可解析时间戳;枚举字段(event_type: click/view/like)校验合法值。
  • 字符集与标准化:统一UTF-8;对文本执行Unicode NFKC标准化;全角/半角统一。
  • 行级有效性检查:过滤空关键键(user_id/item_id/ts);对非法记录打标invalid_record并存旁路数据集。

三、时间与会话处理

  1. 时区标准化
  • ts统一转换为UTC,保留原始时区字段(若存在)与推断时区(按region/device-locale,缺失时以服务器时区或region默认)。
  • 派生时间特征:local_hour、local_dow、is_weekend、item_age_hours = (ts - item_publish_time)/3600;保留tz_source枚举(explicit/inferred/default)。
  1. 去重与去抖
  • 事件去重键:key=(user_id,item_id,event_type,session_id,round_ts_1s)。同键多次保留一次;近邻抖动(同键内<500ms重复)合并。
  • 跨源重复:若完全相同事件在多日志源出现,保留权威源并标记duplicate_source。
  1. 会话归并与跨设备重复
  • 基准会话划分:按user_id排序,间隔≥30分钟新开会话;使用提供的session_id作参考,若冲突以事件时间规则为准,记录session_rewritten=1。
  • 跨设备重复会话标记:同一user在不同device的会话时间窗口重叠>80%,且item序列Jaccard>0.7,标记cross_device_dup_session=1(不删除,便于下游过滤/加权)。
  • 会话特征:session_len_events、session_duration_sec、pos_in_session、time_since_prev_event_sec。

四、机器人与异常检测(仅打标,不硬删)

  • 机器人启发式规则(可叠加简单模型):
    • 平均相邻事件间隔<300ms且每日活跃小时覆盖>16h。
    • view→click转化异常(过高或过低)且分布稳定性异常(按人/设备的小时分布KL散度高)。
    • device频繁切换(单日>20设备)或region短时间跨洲。
  • 异常值标记:对关键数值(session_duration_sec、user_history_size、item_len_sec、item_age_hours)按分位数p1/p99.5外标记is_outlier_*;采用robust z-score(基于median/IQR)辅助。
  • 生成is_bot、is_anomaly_*布尔特征;生产侧默认降低权重或过滤训练样本。

五、缺失值处理(标记优先)

  • 分类/枚举缺失:映射至专用类别“UNKNOWN”;并生成missing指示变量如is_missing_user_age、is_missing_region。
  • 数值缺失:不做均值填充;以业务安全默认(如-1)占位并保留missing指示;模型使用时结合指示避免误解。
  • 画像缺失与活跃度相关性:生成画像完整度指标user_profile_completeness∈[0,1],用于排序模型与采样权重。

六、文本清洗与向量化(中文友好)

  1. 规范化
  • 简繁统一:OpenCC转换为简体。
  • 标点与符号:保留基础中文标点(,。!?);其他标点统一为空或特殊占位符;数字标准化(连续数字归一化为 [NUM])。
  • 表情符号:Unicode分类映射为有限标签(如[EMOJI_SMILE]、[EMOJI_SAD]),保留频率上限。
  • 垃圾成分清理:移除HTML、超链接、重复空白;极短标题(<2汉字)标记is_title_too_short。
  1. 分词与标注
  • 分词:优先子词模型(SentencePiece-Unigram,固定词表版本),OOV走字符级回退;避免jieba词表漂移导致线上不一致。
  • 标签字段item_tags:按逗号/分号/空格/斜杠拆分,清洗后作为词袋;可保留原顺序用于序列特征。
  1. 向量化策略(两层)
  • 轻量哈希向量(线上一致性优先):title和tags分别采用特征哈希(固定种子、维度如2^18)构建TF或TF-IDF(IDF周期性离线更新并版本化;线上仅查IDF权重)。
  • 预训练语义向量(离线生成、线上查表):将item_title+tags拼接输入中文Transformer(如BERT-Base-Chinese);得到768维向量,离线批量计算并按item_id缓存;上线阶段仅查表(版本固定),新发布内容定时补齐或流式异步补齐。
  • 正则化:文本向量按L2归一化;哈希向量按BM25或TF-IDF权重后进行归一化。

七、分类与ID特征编码

  • 高基数ID(user_id/item_id):特征哈希到固定桶(如2^20),保留计数/频率(出现次数、近7天交互数);可用于召回的embedding训练;线上使用同样哈希参数。
  • 中低基数(region、device、item_category、user_gender):字典编码,频率截断(低频合并为“OTHER”);字典版本化。
  • 组合/交叉特征:如(user_id,item_category)近7/30天CTR,采用分层平滑(Beta先验:加α、β伪计数)避免长尾过拟合;离线更新,线上查表。

八、数值特征变换与归一化

  • 对重尾分布采用log1p(user_history_size、item_len_sec、item_age_hours、session_len_events)。
  • 归一化选用RobustScaler(median/IQR)以抵抗离群点;分桶边界与统计量按训练时间窗离线计算并版本化;线上加载对应版本进行一致变换。
  • Winsorization(可选):对极端值裁剪至p0.2/p99.8,且保留is_winsorized指示。

九、特征聚合与时窗

  • 交互强度与趋势:按滚动窗口(1h/6h/1d/7d/30d)计算用户与物品的view/click/like计数、转化率、时序趋势(EMA)。
  • 新鲜度:item_age_hours分桶、近期曝光/点击频率。
  • 会话级:pos_in_session、session_ctr、time_since_prev_event_sec分桶。
  • 稀疏对齐:对缺失窗口用0并保留missing指示,防止与真实0混淆。

十、稀疏与长尾控制

  • 频率截断:词、标签、类别低于阈值统一OOV;阈值随全量频率自动调参。
  • 采样策略(训练阶段):对长尾用户/物品采用分层采样;负样本按时间近邻与曝光记录采样,确保分布一致。
  • 冷启动回退:用户画像缺失与新物品优先使用内容向量与聚合统计特征。

十一、线上/离线一致性保障

  • 单一代码路径:离线与线上共享同一变换库;参数通过配置中心/模型仓库统一管理。
  • 版本钉住:hash种子、词表、IDF、Scaler、分桶边界、平滑参数、停用词表均带版本与生效时间;灰度发布验证一致性。
  • 时间切割:训练数据与特征统计严格按事件时间窗口计算;线上实时仅使用已发布版本的查表与轻量变换。
  • 校验与监控:每日采样校验离线/线上特征分布KL散度;检查missing指示与范围;漂移报警。

十二、输出产物与存储

  • 清洗后日志(parquet/ORC):附加字段is_bot、is_anomaly_*、session_rewritten、cross_device_dup_session、missing指示。
  • 特征表(按场景分组):召回特征(轻量、ID与内容向量为主)与排序特征(丰富聚合与语义向量);按日期/版本分区。
  • 工件仓库:词表、IDF、Scaler统计、分桶边界、OOV映射、平滑参数、文本模型向量缓存;含元数据与校验摘要。

十三、关键参数与阈值建议(需按数据调优)

  • 会话间隔:30分钟;去抖窗口:500ms。
  • 机器人判定初始阈:avg_inter_event<300ms、活跃覆盖>16h/日、设备切换>20/日,结合多条件才判定。
  • 分桶维度与哈希维度:视资源与碰撞率调优(如2^18~2^20)。
  • 分位点用于异常标记:p1、p99.5;Winsorization裁剪p0.2/p99.8按模型稳健性调节。

该流程覆盖日志清洗、中文文本处理、特征编码与数值归一化,并通过严格版本化与统一实现保证线上/离线一致。可直接用于候选召回与排序特征构建,支持超大规模数据处理与持续迭代。

示例详情

该提示词已被收录:
“AI工程师必备:高效建模与数据处理提示词合集”
覆盖建模到评估关键环节,助你快速构建高性能模型
√ 立即可用 · 零学习成本
√ 参数化批量生成
√ 专业提示词工程师打磨

解决的问题

将复杂、易遗漏的数据预处理流程,转化为一份可直接执行的“专家级操作清单”。用户只需描述数据类型或数据特征,即可获得定制化的步骤、注意事项与验证标准,快速提升数据质量、减少返工与试错,帮助团队更快进入建模与分析阶段,并形成可共享、可评审的交付文档。适用于表格、文本、时间序列、图像、音频等多种场景,支持指定输出语言,确保跨部门沟通顺畅、协作一致,最终以更低成本更高效率完成数据项目。

适用用户

数据科学家与算法工程师

快速生成不同数据类型的预处理方案,标准化特征构建与数据切分,加速实验迭代并稳定模型效果。

数据分析师与商业分析

一键得到清洗与修复步骤,规范缺失值处理、异常剔除与编码,提升报表可信度与决策速度。

产品经理与增长负责人

围绕核心指标制定数据准备清单,保障AB测试、漏斗分析与用户分层的可比性与可复现性。

特征总结

按数据类型一键生成专属预处理清单,避免走弯路,快速进入高质量建模。
自动检测缺失、异常与重复问题,给出可执行修复方案,保证数据质量稳定。
针对文本、图像、时序与表格场景,提供差异化步骤,兼顾准确性与落地性。
自动推荐特征工程与变量转换路径,提升模型表现与稳定性,减少试错成本。
输出结构清晰的步骤说明,可直接用于项目文档与协作,统一团队做法。
支持指定语言输出,跨地域团队无障碍沟通,减少反复解释与对齐时间。
提供模板化与参数化指引,按业务目标快速微调策略,灵活适配不同数据。
附带验证与可视化建议,帮助评估预处理效果与风险,确保结论可靠。
结合任务目标给出数据切分与评估方案,避免信息泄露,提升上线一致性。
强调合规与可复现记录,便于审计与复盘,降低交付风险,增强信任感。

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥30.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 307 tokens
- 6 个可调节参数
{ 数据类型或特征 } { 分析目标 } { 数据规模 } { 数据源类型 } { 缺失值策略偏好 } { 异常值处理策略 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
使用提示词兑换券,低至 ¥ 9.9
了解兑换券 →
限时半价

不要错过!

半价获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59