人工智能入门到精通(5)
如果你是一家大型电商平台的运营总监。
你想要通过AI来分析成千上万条真实的客户评价,以便精准捕捉消费者的喜好。
起初,你的预期非常美好。然而当你打开数据库时,现实却给你泼了一盆冷水。
有的顾客打了满分,却没留下年龄;有的填了年龄,却隐藏了所在地;有的洋洋洒洒写了一大段长评,却偏偏忘记了打星级……
这就引出了我们在应用人工智能(AI)和机器学习(ML)时,常遇到的一个难题:数据缺失。
很多人认为,做AI就是敲代码、调参数。
但资深的数据科学家都知道,决定一个模型上限的,往往是你如何处理这些“脏乱差”的数据。
面对满屏的问号和空白,我们究竟该怎么办?
填补之前,先问“为什么缺失”面对残缺的数据表,很多人的第一反应是去找一个公式套用:“只要有空缺,就填平均值。”
这是一种危险的错误认知。
在AI领域,处理缺失值绝对没有“一招鲜吃遍天”的方法。
解决问题的第一步,也是最重要的一步,是搞清楚“为什么会缺失?”。
比如,因为服务器宕机两小时,导致期间所有的客户评分都没有被记录。
这是一个纯粹的技术故障,原因清晰明了。
但如果数据集中有20%的用户没有填写年龄,且完全找不到规律呢?
是因为这个选项可以跳过?是因为系统bug?还是因为某类特定人群本能地抗拒透露年龄?
如果我们无法理解数据缺失背后的逻辑和成因,任何盲目的填补和假设,都会给模型埋下致命的偏见地雷。
在这种情况下,有时候最稳妥的做法,反而是直接删除包含缺失值的行数据(前提是缺失比例极小)。
因为对于严谨的算法模型而言,“宁缺毋滥”往往比“胡乱猜测”要安全得多。
四大数据补全法则当然,我们不可能总是把数据一删了之。
如果缺失率高达40%,粗暴删除意味着我们将丢失大量的潜在业务信息。
这时,我们就必须动用科学的数据插补手段。
策略1:均值填补
假设我们正在分析客户的消费金额,数据依次是:40,50,60,缺失,70。
最直观的方法,就是算出已有数据的平均值,然后填进去。
这在数据分布相对均匀且集中的时候,是非常有效且成本极低的做法。
但均值有一个致命的弱点:极易被异常值带偏。
如果在上述数据中,突然混入了一个超级VIP消费了2,000。
此时算出的“平均值”,将被严重拔高,它将再也无法代表绝大多数的“普通消费者”。
策略2:中位数填补
为了对抗上述的极端异常值,中位数填补应运而生。
中位数就是把所有数字从小到大排列后,处于正中间的那个值。
与均值不同,中位数对极端值有着极强的免疫力。
当你在处理薪资分布、房价波动等容易出现“断层式”极端数据时,中位数往往能讲述一个更加真实的信息。
策略3:众数填补
如果我们缺失的根本不是数字,而是“类别”呢?
比如,某顾客最常购买的品类数据:护肤品、护肤品、彩妆、缺失、护肤品。
这里无法计算平均值。
此时,我们就需要引入众数——也就是出现频率最高的值。
在这个例子中,填入“护肤品”显然是最符合概率逻辑的选择。
策略4:高阶多重插补
现实业务往往比简单的统计学复杂得多。
假设一个客户的年消费总额缺失了。但我们并不是一无所知,我们知道他:购物频率极高、常买高端线产品、是最高级别的黑卡会员。
这些维度之间存在着强烈的隐性关联。此时,简单地填一个全局平均值是极其荒谬的。这就需要引入更高阶的技术,例如MICE(多重插补链式方程)。
MICE不会机械地填入一个静态数值。相反,它会利用缺失值周围的其他已知变量,建立预测模型,从而推算出一个最符合该客户画像的个性化估值。
总结最后,总结了一套缺失数据处理决策树:
1.对于没有极端异常值的连续型数值数据,使用均值。
2.对于存在离群点或严重偏态的数值数据,使用中位数。
3.对于分类/标签型数据,使用众数。
4.对于变量间存在复杂相关性的缺失情况,考虑使用MICE算法。
5.如果缺失逻辑完全无法解释且占比极小,果断删除。
这些行我们在处理缺失数据时,很容易陷入“我该填什么数字”的工具人思维。
但真正顶级的算法工程师,永远会先问:“它一开始为什么会缺失?”
因为你填入的每一个缺失值,都是在替系统做一个主观假设。而这些假设,最终都会化作代码,融入模型学习的骨血之中。
优秀的AI,绝不仅仅始于对数据的粗暴修复。它始于我们对数据背后隐藏真相的深刻洞察。
在接下来的文章中,我们将继续探讨数据科学的另一个难题:异常值。
敬请期待。
#上头条 聊热点#