×
¥
查看详情
🔥 会员专享 文生文 数据可视化

数据预处理助手

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

🎯 可自定义参数(6个)

数据类型或特征
数据集类型和特征描述
分析目标
数据分析的主要目标
数据规模
数据集的规模大小
数据源类型
数据来源的格式类型
缺失值策略偏好
处理缺失数据的方法
异常值处理策略
处理异常数据点的方法

🎨 效果示例

以下为针对该客户行为二分类流失(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工程师必备:高效建模与数据处理提示词合集”
覆盖建模到评估关键环节,助你快速构建高性能模型
√ 立即可用 · 零学习成本
√ 参数化批量生成
√ 专业提示词工程师打磨

📖 如何使用

30秒出活:复制 → 粘贴 → 搞定
与其花几十分钟和AI聊天、试错,不如直接复制这些经过千人验证的模板,修改几个 {{变量}} 就能立刻获得专业级输出。省下来的时间,足够你轻松享受两杯咖啡!
加载中...
💬 不会填参数?让 AI 反过来问你
不确定变量该填什么?一键转为对话模式,AI 会像资深顾问一样逐步引导你,问几个问题就能自动生成完美匹配你需求的定制结果。零门槛,开口就行。
转为对话模式
🚀 告别复制粘贴,Chat 里直接调用
无需切换,输入 / 唤醒 8000+ 专家级提示词。 插件将全站提示词库深度集成于 Chat 输入框。基于当前对话语境,系统智能推荐最契合的 Prompt 并自动完成参数化,让海量资源触手可及,从此彻底告别"手动搬运"。
即将推出
🔌 接口一调,提示词自己会进化
手动跑一次还行,跑一百次呢?通过 API 接口动态注入变量,接入批量评价引擎,让程序自动迭代出更高质量的提示词方案。Prompt 会自己进化,你只管收结果。
发布 API
🤖 一键变成你的专属 Agent 应用
不想每次都配参数?把这条提示词直接发布成独立 Agent,内嵌图片生成、参数优化等工具,分享链接就能用。给团队或客户一个"开箱即用"的完整方案。
创建 Agent

✅ 特性总结

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

🎯 解决的问题

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

🕒 版本历史

当前版本
v2.1 2024-01-15
优化输出结构,增强情节连贯性
  • ✨ 新增章节节奏控制参数
  • 🔧 优化人物关系描述逻辑
  • 📝 改进主题深化引导语
  • 🎯 增强情节转折点设计
v2.0 2023-12-20
重构提示词架构,提升生成质量
  • 🚀 全新的提示词结构设计
  • 📊 增加输出格式化选项
  • 💡 优化角色塑造引导
v1.5 2023-11-10
修复已知问题,提升稳定性
  • 🐛 修复长文本处理bug
  • ⚡ 提升响应速度
v1.0 2023-10-01
首次发布
  • 🎉 初始版本上线
COMING SOON
版本历史追踪,即将启航
记录每一次提示词的进化与升级,敬请期待。

💬 用户评价

4.8
⭐⭐⭐⭐⭐
基于 28 条评价
5星
85%
4星
12%
3星
3%
👤
电商运营 - 张先生
⭐⭐⭐⭐⭐ 2025-01-15
双十一用这个提示词生成了20多张海报,效果非常好!点击率提升了35%,节省了大量设计时间。参数调整很灵活,能快速适配不同节日。
效果好 节省时间
👤
品牌设计师 - 李女士
⭐⭐⭐⭐⭐ 2025-01-10
作为设计师,这个提示词帮我快速生成创意方向,大大提升了工作效率。生成的海报氛围感很强,稍作调整就能直接使用。
创意好 专业
COMING SOON
用户评价与反馈系统,即将上线
倾听真实反馈,在这里留下您的使用心得,敬请期待。
加载中...