很多刚入门机器学习的朋友,都会从线性回归开始学 —— 毕竟它公式不复杂,理解起来也相对容易,可真到自己动手做项目的时候,却总容易栽跟头。小索奇见过不少同学,拿着数据就往模型里套,跑出来的 R² 要么低得离谱,要么高得不正常,到最后都不知道问题出在哪儿,其实这都是没避开线性回归里的那些 “隐形坑”。今天就跟大家好好唠唠,做线性回归时必须注意的几个点,全是实战里总结出来的干货,新手朋友看完至少能少走一半弯路。

首先第一个坑,就是数据预处理没做透,尤其是异常值和缺失值的处理。你想想看,要是你用线性回归预测房价,数据里突然混进一个 “100 平米卖 1 亿” 的异常值,或者有几十条记录的 “房屋面积” 是空的,直接用这种数据跑模型,结果能准吗?小索奇之前帮一个同学看他的项目,他就是没处理异常值,导致线性回归的回归线歪得特别厉害,原本该预测 500 万的房子,模型居然算出 2000 万,后来删掉那几个异常值,结果立马就正常了。

处理异常值其实也不用复杂的算法,简单的箱线图就能帮你找出大部分异常值 —— 超出上下四分位数 1.5 倍 IQR 范围的数值,基本就能判定是异常值;至于缺失值,别直接用 0 填充,也别随便删数据,要是缺失率低于 5%,用均值或中位数填充就行,要是缺失率高,比如超过 20%,就得先分析缺失原因,比如是不是 “没填写” 和 “没有该特征” 是两回事,再决定是填充还是删掉这个特征。之前有个朋友做用户消费预测,把 “月消费金额” 的缺失值全填了 0,结果模型把很多潜在高消费用户判成了低消费,这就是没搞懂缺失值背后逻辑的问题。

第二个容易踩的坑,是特征选择太随意,把无关特征或者高度相关的特征都塞进模型里。举个例子,你要预测用户的月度话费,要是把 “用户的星座”“喜欢的颜色” 这种跟话费八竿子打不着的特征加进去,模型不仅会浪费算力,还可能出现 “伪相关”—— 比如刚好某个星座的用户这个月话费普遍高,模型就会误以为星座是重要特征,到下个月预测就会出错。小索奇之前做过一个类似的实验,加了无关特征后,模型的 MAE(平均绝对误差)直接涨了 30%,删掉那些没用的特征后,误差立马就降下来了。

还有更麻烦的多重共线性问题 —— 就是两个特征高度相关,比如 “房屋总面积” 和 “卧室 + 客厅面积”,这两个特征几乎表达的是一个意思,要是同时放进模型,会导致线性回归的系数估计不稳定,甚至出现系数符号跟常识相反的情况。比如原本 “面积越大房价越高”,结果模型算出面积系数是负的,这时候用 VIF(方差膨胀因子)就能检测出来,VIF 值大于 10 就说明存在严重共线性,要么删掉其中一个特征,要么用主成分分析做降维处理,这些都是很基础但必须做的步骤。

第三个坑,是模型评估只看单一指标,忽略了残差分析。很多人跑线性回归,只盯着 R² 看,觉得 R² 接近 1 就是好模型,可实际上 R² 也会骗人。比如数据里有时间趋势,你用线性回归拟合,R² 可能很高,但其实模型根本没抓住核心规律,到了下一个时间段预测就会翻车;还有当数据存在异方差(不同区间的误差波动不一样)时,R² 看着不错,可模型的预测精度却不稳定。小索奇一直跟身边的朋友说,做完线性回归一定要画残差图 —— 要是残差随机分布在 0 附近,没有明显的趋势或聚集,才说明模型拟合得好,要是残差呈线性或曲线分布,那肯定是模型有问题,要么是少了关键特征,要么是数据没处理好。

另外,评估模型的时候,千万别忘了分训练集、验证集和测试集,别把所有数据都用来训练。有些同学为了让 R² 好看,把测试集也加进训练集里,结果模型在训练集上表现超好,一到真实场景就歇菜,这就是过拟合的典型情况。正常的做法是按 7:2:1 的比例划分数据集,用训练集训练模型,验证集调参数(比如正则化的力度),最后用测试集评估真实性能,这样得到的结果才靠谱。之前有个同学做销量预测,没分测试集,模型在训练集上 R²0.98,实际用的时候误差超过 50%,就是吃了这个亏。

最后还有个容易被忽略的点,就是对线性回归系数的解读。很多人觉得系数越大,对应的特征越重要,可实际上系数大小跟特征的单位有关。比如 “收入” 这个特征,要是用 “万元” 当单位,系数可能是 2,要是换成 “元” 当单位,系数就变成 0.0002,这时候不能说前者的影响比后者大,得先做特征标准化(比如 Z-score 标准化),让所有特征在同一尺度下,再比较系数大小才有意义。小索奇之前跟一个刚学的同学解释这个问题,他恍然大悟说 “原来我之前一直看错了,还以为某个特征不重要,其实是单位没统一”,所以这个细节一定要注意。

其实线性回归虽然基础,但想用好也需要多练多总结,遇到问题别慌,一步步排查数据、特征、模型评估这几个环节,大部分坑都能避开。你们在做线性回归的时候,还遇到过哪些奇怪的问题?比如模型系数突然变成 NaN,或者预测结果全是同一个值?可以在评论区聊聊,咱们一起分析原因~

我是【即兴小索奇】,点击关注,后台回复 领取,获取更多相关资源

更多推荐