数据 · 让模型读懂数字

处理数值数据

机器学习不是把 Excel 表格直接交给模型。你要先理解每列的业务含义,再把每条记录稳定地转换为模型能计算的浮点数特征向量。

1 小时 5 分钟纯学习时间8 个连续小节无测试与互动练习
原始列年龄、金额、温度
→
探索图表、统计量、异常
→
转换缩放、分箱、清洗
→
向量用于训练与预测
学完后,你能够
  • 区分真正的数值、数字编码和标签。
  • 从分布图和统计摘要找到离群值与长尾。
  • 按数据形状选择线性缩放、Z 分数、对数或剪裁。
  • 把数值特征的处理规则保存为可复用的训练流水线。
01
预计 3 分钟

先判断数字有没有数学含义

“由数字组成”不等于“数值特征”。只有加减、排序或比例在业务上有意义时,才适合作为连续数值输入。

可以作为数值

温度、重量、面积、金额

30°C 比 15°C 高;200 平方米约是 100 平方米的两倍。

差值和比例可以解释
只是数字编码

邮编、订单号、身份证号

邮编 20004 不是 10002 的两倍,也不应被模型理解为更大。

通常转到类别数据模块处理
中国业务里的常见坑

金额单位必须写清楚:元、万元、分不能混用;时间也要写清楚是秒、毫秒还是天。模型无法替你猜单位,单位混用会让特征含义直接错误。

02
预计 8 分钟

模型如何使用特征向量

模型不直接理解“第 3 行的面积和房龄”。数据流水线会先抽取选中的特征,再组成固定顺序的浮点数数组,这个数组叫特征向量。

2.1 一行数据里,谁是特征,谁是标签?

以预测房价为例,价格是已知答案,所以是标签;面积和房龄可以是数值特征。房屋编号仅用于识别记录,不应让模型误以为编号越大房价越高;城市属于类别,要编码后才可进入向量。

房屋表格中选择面积和房龄作为特征,价格作为标签
图 1:原始表有很多列,模型只使用你明确选中的特征;标签不作为预测时的输入。

2.2 从原始值到可训练向量

第 3 行的原始信息是 [72 平方米, 2 年, 杭州]。面积和房龄经过归一化,城市经过独热编码,最终变为 [−0.42, −0.81, 1, 0, 0]。这五个位置的顺序和计算方式必须固定。

原始面积房龄城市经过归一化和类别编码成为五维浮点特征向量
图 2:特征工程把原始信息稳定地改写为模型可以计算的浮点数。
位置含义示例值规则来源
第 1 位归一化后的面积−0.42训练集的面积均值与标准差
第 2 位归一化后的房龄−0.81训练集的房龄均值与标准差
第 3~5 位城市独热编码[1, 0, 0]训练阶段保存的城市词汇表
训练和预测必须用同一套转换

训练时用平方米,线上却传平方英尺;训练时“杭州”是第 3 位,线上词表重排到第 5 位——这些数字看似合法,模型却会完全理解错。均值、标准差、单位、词表和列顺序都要与模型一同版本化。

03
预计 8 分钟

初始步骤:先看图,再看统计量

不要只看一列平均值就开始训练。图表发现形状,统计量确认范围;两者结合才能发现偏态、长尾、分组差异和离群点。

直方图散点图和统计摘要分别用于理解数据分布关系和范围
图 3:直方图、散点图和统计摘要回答不同问题,最好一起使用。
先看什么它回答的问题常见信号
直方图数值集中在哪,是否有长尾?收入、销量大多右偏
散点图特征与标签是直线、弯曲还是无关系?舒适温度时客流最多
均值与中位数中心位置是否被极端值拉偏?均值远高于中位数
分位数与标准差主要范围多大,尾部是否很长?最大值远离 75% 分位数
建议的落地顺序

先按整体看一遍,再按时间、地区、渠道、设备等维度切片。比如总体温度范围正常,但某一个传感器持续报 1000,这种问题在总体均值中很容易被掩盖。

04
预计 22 分钟

标准化:四种处理方法

归一化的目标是让特征落在相近的数值尺度。年龄范围可能是 0~100,城市人口可能是 5,000~1,000,000,000;不处理时,大范围特征会让梯度下降走得不稳定、训练变慢,甚至出现 NaN。

缩放参数只能从训练集学习

先在训练集上计算最小值、最大值、均值和标准差;验证集、测试集和线上新数据只能应用这些已保存的参数。若把所有数据一起计算,你已经让测试集信息提前参与训练。

线性缩放 Z分数 对数缩放和剪裁分别适合不同数据分布
图 4:没有一招适合所有特征;先看分布,再选择缩放方式。

4.1 线性缩放:边界稳定时使用

x′ = (x − xmin) / (xmax − xmin)

它把数值映射到 0~1。训练集中数量范围为 100~900,某条记录为 300,则 (300−100)/(900−100)=0.25。适合年龄这类上下限稳定、离群值少的数据。净资产、销售额通常不适合,因为少数极端值会挤压大多数正常样本。

4.2 Z 分数缩放:最常见的默认选择

z = (x − μ) / σ

z 表示“这个值离平均值有几个标准差”。若平均身高 165cm、标准差 7cm、某人 179cm,则 z = 2。大致钟形或近似钟形的连续数据通常适合 Z 分数;若尾部极端,可先剪裁再做 Z 分数。

4.3 对数缩放:压缩长尾

x′ = ln(1 + x)

书籍销量从 100 到 1,000,000 相差一万倍,直接输入会让少数畅销书主导尺度;取对数后约为 4.6 与 13.8,差距更容易被模型处理。只对非负特征使用 ln(1+x),这样 0 也有定义。

4.4 剪裁:限制极端值的影响

剪裁不是删除样本:若上限设为 4,所有大于 4 的值都变成 4。它适合确认后仍存在、但不希望少数极端值支配训练的情况。先确认极端值是否录入错误;真实且上线会遇到的极端值通常保留,再用剪裁、对数或分箱处理。

方法典型场景先检查的风险
线性缩放年龄、百分比、明确上下限上下限会不会变化?是否有极端值?
Z 分数身高、时长等大致钟形特征尾部会不会扭曲均值和标准差?
对数缩放金额、销量、点击量等右偏长尾是否有负数?0 是否需要保留?
剪裁少量极端值影响训练它是错误还是业务上真实的重要信号?
05
预计 10 分钟

分箱:用区间表达模式

分箱把连续数值变成几个区间。例如温度 4~11°C、12~26°C、27~36°C 分成三个箱。之后每个箱使用独热编码,模型会为每个区间学习一个独立权重。

购物者数量随温度先升后降,温度被划分为寒冷舒适炎热三个箱
图 5:温度与客流量并非直线关系;分箱后,线性模型也能表示“舒适区最高”。

分箱适合特征与标签没有线性关系,或特征值有明显聚类。可用等宽分箱、业务阈值分箱,或分位数分箱:按样本排序后让每个箱包含接近数量的样本。后者对长尾数据通常更均衡。

箱越多不一定越好

箱数增加会让模型更灵活,也让每个箱的样本更少。若 3 个箱改成 30 个箱,许多区间可能几乎没有训练样本,模型学到的只是偶然波动。边界和数量需在验证集上比较。

06
预计 6 分钟

数据清洗:修正而非盲删

清洗是在建模前确认每个值能不能代表真实世界。目标不是让数据“好看”,而是让错误不被模型当成规律。

数据清洗前出现超范围 缺失 和重复值,清洗后分别回查插补和去重
图 6:同样是异常值,处理方式取决于它是错误、缺失,还是现实中罕见但真实的样本。
问题例子推荐处理
错误值user_age_years=224回查来源;能修正则修正,不能确认则按规则排除
缺失值观看时长为空插补合理值,并新增 is_watch_time_missing
重复值同一订单日志上传两次在拆分训练集之前去重
单位不一致一部分金额为元,一部分为分统一单位,保留处理日志
不要用 -1 假装缺失

连续特征的 -1 会被模型理解成真实负值。更稳妥的做法是:数值列用中位数等规则补齐,同时额外增加一个布尔特征,明确告诉模型“这个值原来缺失”。

07
预计 4 分钟

好数值特征的品质

  • 01
    名称和单位明确

    使用 house_age_years=27,不要留下难懂的 house_age=851472000。

  • 02
    训练前已检查

    给合理范围写成自动校验规则,抽样查看原始记录,持续监控异常比例。

  • 03
    缺失具有明确含义

    用缺失指示列表达“未提供”;不要用一个魔法数字混入正常连续值。

  • 04
    预测时真的拿得到

    不能使用下单后才产生、诊断后才知道或未来才发生的信息预测当前结果。

  • 一个实用判断

    如果你不能在上线时清楚回答“这个值从哪里来、单位是什么、缺失怎么办、是否与训练时完全一致”,它还不是可交付的特征。

    08
    预计 4 分钟

    多项式转换:给直线加曲线

    线性模型的“线性”指它对权重是线性的,不代表每个输入只能有一次方。加入 x² 可以帮助它描述弯曲趋势或弯曲边界。

    使用原始特征只能画直线,加入平方项后可表示曲线边界
    图 7:引入平方项后,参数仍由线性权重学习,但预测边界可以弯曲。
    ŷ = b + w₁x + w₂x²

    多项式项增加了模型能力,也增加了过拟合风险。先从 x² 开始,确保原始特征已经缩放,再用验证集判断它是否提升新数据表现;不要只因为训练集分数更高就继续加到 x³、x⁴。

    本模块术语速查

    特征向量
    模型实际接收的固定顺序浮点数数组。
    特征工程
    把原始数据改写成更易学习、且可稳定复用的表示。
    归一化
    把不同范围的数值转换到相近尺度。
    分位数
    按排序位置描述数据分布的统计量,如 25%、50%、75%。
    分箱
    把连续范围划成多个区间并分别编码。
    剪裁
    把超过指定上下限的值限制在边界上。
    数据泄漏
    训练错误使用了验证、测试或未来数据的信息。
    参考资料与素材说明

    内容依据 Google ML Crash Course 的数值数据、特征向量、初始步骤、标准化、分箱、清洗和多项式转换小节重新组织、中文化扩写。页面图示均为项目原创 SVG。