机器学习经验总结整理

1.一个标准的机器学习项目流程(一定要记住顺序)

很多新手觉得乱,是因为没按流程想问题。做任何项目,脑子里要有这根"流水线":

  1. 定义问题 → 是分类还是回归还是聚类?业务目标是什么?

  2. 获取数据 → 数据从哪来?

  3. 探索与清洗(EDA) → 看分布、找缺失、除异常(这一步最花时间

  4. 特征工程 → 把原始数据变成模型爱吃的"饭"(归一化、编码、组合特征)

  5. 拆分数据 → 训练集 / 验证集 / 测试集

  6. 选模型训练 → 先跑一个简单的基准模型(如逻辑回归),再尝试复杂的

  7. 调参与评估 → 看准确率、召回率、AUC,调整参数避免 过拟合欠拟合

  8. 部署与监控 → 模型上线后表现如何


2.定义问题详解

一共4种情况:第一种:有监督学习,数据中有标签且标签是连续的则为回归任务,比如薪资、房价这种数字;不是连续的也就是离散的就是分类任务,像健康情况,电影类别;可以看到区分回归和分类其实很简单,像标签的个数是有限的几个就是分类,像薪资这种的数值非常多的是回归,可以联想到一根直线上的无数点;**第二种,无监督学习,数据中没有标签,主要是聚类任务,比如一堆图片中找出一直大象;第三种,半监督学习,数据中部分有标签部分没有标签;第四种强化学习,**为了达到最大化累积奖励,通过不断的在环境中试错类学会做出最优决策

3 获取数据

这就是我们需要处理的数据,不做赘述,一般用pandas来读取文件

python 复制代码
# 1.读取文件获取数据
data = pd.read_csv('data/breast-cancer-wisconsin.csv', sep=',')
print(data.shape, data.ndim)  # 形状:(699, 11) 维度:2

4 探索与清洗(EDA)

缺失值处理
  • 删除:缺失率 > 70% 的列直接删;缺失行较少可删行。

  • 填充:均值/中位数/众数;复杂场景用模型预测填充。

  • 【补充】业务含义填充 :例如"上月消费金额"为空,填 0 和填均值业务含义完全不同。要先判断是"没记录"还是"没发生"。

异常值处理
  • 原则:不要无脑删。

  • 方法:3-Sigma 原则、箱线图 (IQR)。

  • 【补充】对异常值的态度 :金融欺诈检测中,异常值往往就是我们要抓的坏人,不能删,只能做分箱或变换。

python 复制代码
# 2.数据预处理
# 2.0 注意: 数据中有"?"无效字符,需要先转换为numpy中的nan,然后使用dropna()删除或者fillna()填充
new_data = data.replace('?', np.nan).dropna()
print(new_data.shape, new_data.ndim)  # 形状:(683, 11) 维度:2

5 特征工程

特征变换(无量纲化)
  • 归一化:将数据缩放到 [0, 1] 区间。

    • 公式X' = \\frac{X - X_{min}}{X_{max} - X_{min}}

    • 【补充】使用时机 :涉及距离计算 (KNN、神经网络、K-Means)必须做树模型不需要

  • 标准化:将数据变为均值为 0,标准差为 1 的分布。

    • 公式X' = \\frac{X - \\mu}{\\sigma}

    • 【补充】使用时机:假设数据服从正态分布时效果更好。

特征编码(文字转数字)
  • 独热编码 :把类别变成互相独立的 0/1 列。缺点是维度爆炸

  • 【补充】目标编码 :用该类别对应的标签均值来代替。工业界处理高基数类别特征的利器。

特征构造(企业核心竞争力)
  • 时间特征:把时间戳拆成"星期几"、"是否节假日"、"距今天数"。

  • 交叉特征:身高/体重 = BMI。

  • 统计特征:用户过去 7 天平均点击次数。

python 复制代码
# 2.1 分别获取特征和标签
# 拓展:  iloc格式 : 数据.iloc[行索引,列索引]
x = new_data.iloc[:, 1:-1]
y = new_data.iloc[:, -1]
print(x.shape, x.ndim)  # 形状:(683, 9) 维度:2
print(y.shape, y.ndim)  # 形状:(683,) 维度:1

6 拆分数据

  • 基础划分:训练集 (80%) vs 测试集 (20%)。

  • 【补充】标准工业级划分

    • 训练集 (Train):学习模型参数 W, b

    • 验证集 (Validation)专门用来调参选模型

    • 测试集 (Test)最终只用一次,评估泛化能力。

  • 【补充】黄金法则

    • 时间序列严禁随机切分(用过去预测未来)。

    • 不均衡样本必须分层抽样(防止验证集里全是负样本)

python 复制代码
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2,random_state=666)  # 同一个种子,同一份随机数据

7 选模型训练

K 近邻算法
  • 核心:近朱者赤,近墨者黑。

  • 距离度量:默认欧氏距离。

  • 缺点:预测极慢(需计算所有样本距离),企业级高并发场景基本不用。

线性回归
  • 任务:回归。

  • 核心思想 :找到一条线,使得预测值与真实值的误差平方和最小(最小二乘法)。

  • 求解方式对比(企业选型重点)

方法 核心思想 优点 缺点
正规方程 求导等于 0 一步算出 简单,无需调学习率 数据量大时矩阵运算极慢
梯度下降 沿着负梯度方向小步迭代 适合海量数据 需调学习率,可能陷入局部最优
  • 【补充】企业常用变体SGDRegressor (随机梯度下降回归器),适合流式数据在线学习。
逻辑回归
  • 任务分类(虽然名字带回归)。

  • 核心流程 :线性回归的结果 z → 塞进 Sigmoid 函数 → 输出概率 P → 与阈值比较(如 0.5)得类别。

  • 【补充】底层损失函数交叉熵损失,而非线性回归的 MSE。

K-Means 聚类
  • 任务:无监督聚类。

  • 核心流程:选 K 个中心 → 分配点 → 重算中心 → 迭代。

  • 缺点:K 值难定,对初始点敏感。

【补充】工业界真正常用的算法家族
  • 树模型家族

    • 随机森林:并行训练多棵树投票,不易过拟合。

    • XGBoost / LightGBM :目前结构化数据表格赛道的王者。GBDT 的工程优化版,面试必问,工作必用。

8 调参与评估

回归任务的评估
  • MAE (平均绝对误差):对异常值不敏感。

  • MSE (均方误差) :对异常值惩罚极重(平方放大)。

分类任务的评估------混淆矩阵

这是企业汇报时的核心仪表盘,必须烂熟于心。

真实 \ 预测 预测为 Positive 预测为 Negative
真 Positive TP (真阳性) FN (假阴性/漏报)
真 Negative FP (假阳性/误报) TN (真阴性)
  • 准确率(TP+TN) / Total ------ 样本不均衡时最没用的指标

  • 精确率TP / (TP+FP) ------ 预测正类中有多少是对的(宁缺毋滥)。

  • 召回率TP / (TP+FN) ------ 真实正类有多少被找出来了(宁枉勿纵)。

  • F1-Score:精确率和召回率的调和平均。

过拟合与欠拟合(企业调参的指挥棒)
状态 训练集表现 测试集表现 解决方案
欠拟合 增加特征交互项、换复杂模型、减小正则化。
过拟合 极好 增加数据量、加正则化(L1/L2)、早停法、集成学习
【补充】交叉验证
  • 概念:把训练集切成 K 份,轮流用 K-1 份训练,1 份验证。

  • 目的:更稳定地评估模型性能,充分利用数据,防止因单次划分运气好而选错模型。

9 部署与监控

  • 模型上线:转化为 PMML 文件、ONNX 格式,或封装为 API 接口。

  • 线上监控

    • 性能监控:API 响应时间、QPS。

    • 【补充】数据漂移监控 :监控输入特征的均值和方差 。如果线上用户突然从年轻人变成老年人,模型准确率会断崖式下跌,需要触发自动重训练

总结:给未来复习的自己

  1. 回归分类 的区别,不要看名字看标签类型

  2. 特征工程 是投入产出比最高的环节,树模型不需要归一化

  3. 面试/汇报时,谈到分类模型,一定先问一句:"数据均衡吗?看准确率还是 F1?"

  4. XGBoostLightGBM 是工业界处理表格数据的首选,不要只会用逻辑回归。

  5. "部署上线不是毕业典礼,而是开学典礼。你要开始操心这玩意儿明天会不会挂掉、下周准不准、下个月还能不能用了。"

名词备忘录:

1. 梯度下降

是什么:一种"摸着石头下山"的走法。你在山顶,雾很大看不见路,只能靠脚底感受坡度,哪儿往下倾斜就往哪儿走一步,反复这样,最终走到山谷最低处。
有什么用:让计算机自动找到让预测最准的那条线的位置。
怎么记:
> 盲人下山:看不见路,但能感觉到脚下哪里最陡。每走一步都用脚探一下,朝最陡的下坡方向走一小步。重复这个动作,直到脚下变平,就知道到谷底了。

2. 学习率

是什么:梯度下降时**每一步迈多大**。
有什么用:控制找最低点的速度。太大容易跨过去,太小走得太慢。
怎么记:
> 下山时步子太小:走了一万步还在半山腰。
> 下山时步子太大:一脚迈出去,直接从山谷这边跨到那边,完美错过最低点。

3. 参数(w 和 b)

是什么:就是你初中数学里直线方程的**斜率和截距**。
有什么用:决定了那条预测线的具体位置。
怎么记:
> 直线公式 y = 2x + 3 里,2 就是斜率,3 就是截距。
> 机器学习里只不过把 2 叫成 w,把 3 叫成 b。**换了个名字而已,本质一模一样。

4. 损失函数

是什么:一把**误差尺子**,专门量"预测值和真实值差了多少"。
有什么用:告诉计算机,当前这条线画得有多烂。差得越多,损失数值越大。
怎么记:
> 你扔飞镖,飞镖落点离靶心越远,你心里越"失落"。
> 损失函数就是那个给你打分的人,扔得越偏,扣分越多。

5. 过拟合

*是什么*:**死记硬背,不懂变通。**
有什么用:这是我们最怕的情况,说明模型学傻了。
怎么记:
> 考试前你把练习册答案全背下来了,连印刷错误都背了。
> 考试时题目稍微换个问法,你照着背的答案往上写,结果全错。
> **表现**:作业(训练集)全对,考试(测试集)不及格。

6. 欠拟合

是什么**:**根本没学进去,连作业都不会做。**
*有什么用**:说明模型太简单,或者根本没学到东西。
怎么记**:
> 上课全程睡觉,考试时连题目都看不懂,交白卷。
> **表现**:作业(训练集)和考试(测试集)分数都极低。

---

7. 正则化

是什么**:给模型**戴上一个紧箍咒**,不让它太放肆、太复杂。
有什么用**:专门治**过拟合**的。让模型别把细节当真理。
怎么记**:
> 你复习时,老师不让你去背那些偏题怪题,要求你只抓重点。
> 正则化就是那个老师,它会给那些过于复杂的记忆方式"扣分",逼你只记住最核心的规律。

---

8. 归一化 / 标准化

是什么**:把不同单位的数据**统一拉到同一个尺度里**。
*有什么用**:防止某个特征因为数值太大,把其他特征的话筒抢了。
*怎么记**:
> 一个班要评"综合分",规则是把身高和体重加起来。
> 身高是 170cm,体重是 70000g(70kg)。
> 如果不统一单位,体重那一项直接决定了总分,身高完全没用了。
> **归一化就是统一换单位,比如都换成"在同班同学中的排名百分比"。**

---

9. Sigmoid 函数

是什么**:一个能把任何数字**压扁到 0 到 1 之间**的 S 形曲线。
有什么用**:把预测分数变成概率。比如 500 分压成 0.99,20 分压成 0.01。
怎么记**:
> 它是一个**概率换算器**。
> 你考了 500 分,别人不知道这算好还是差。
> 放进 Sigmoid,它告诉你:"你赢的概率是 99%"。

---

10. 混淆矩阵

是什么**:一张**对错记账表**。
有什么用**:告诉你模型**错在哪儿了**。
怎么记(警察抓小偷版)**:

| 真实情况 | 警察判断 | 叫什么 | 大白话 |
| 是小偷 | 抓了 | TP | **抓对了** |
| 是好人 | 放了 | TN | **放对了** |
| 是好人 | 抓了 | FP | **冤枉好人** |
| 是小偷 | 放了 | FN | **放跑坏人** |

11. 精确率

是什么**:你说"抓到了贼",这里面**真的有几个人是贼**?
有什么用**:衡量**抓得准不准**。要求"宁可放过,不可抓错"。
怎么记**:
> 你指着 10 个人说他们都是小偷。
> 精确率 90% 意思是:里面 9 个是真的,1 个是被冤枉的。

12. 召回率

是什么**:真正的 100 个小偷里,**你抓到了几个**?
有什么用**:衡量**抓得全不全**。要求"宁可抓错,不可放过"。
怎么记**:
> 商场里有 100 个真小偷。
> 召回率 80% 意思是:你抓住了 80 个,漏了 20 个。

---

13. F1 分数

是什么**:精确率和召回率的**调和平均值**。
有什么用**:当你既想抓得准、又想抓得全时,看这个指标。
怎么记**:
> 精确率和召回率像跷跷板两头,一个高另一个就低。
> F1 就是告诉你,跷跷板平衡了没有。如果 F1 很高,说明你两手都抓了。

14. 交叉验证

是什么**:把一份练习册**撕成五份**,轮流用四份当练习题、一份当测验题。
有什么用**:检验你是不是真学会了,而不是碰巧蒙对了一套卷子。
怎么记**:
> 你不能只做一套模拟卷就上高考考场。
> 你要做十套不同学校的模拟卷,如果每套都考得好,说明你是真学霸。

相关推荐
Sim14802 小时前
iPhone将内置本地大模型,手机端AI实现0 token成本时代来临?
人工智能·ios·智能手机·iphone
AI航向标2 小时前
Openclaw一键本地部署接入豆包
人工智能·openclaw
就是这么拽呢2 小时前
论文查重低但AIGC率高,如何补救?
论文阅读·人工智能·ai·aigc
supericeice2 小时前
创邻科技 AI智算一体机:支持 DeepSeek 671B 与 Qwen3 单机部署,覆盖纯CPU到多GPU多机扩展
大数据·人工智能·科技
لا معنى له2 小时前
Var-JEPA:联合嵌入预测架构的变分形式 —— 连接预测式与生成式自监督学习 ----论文翻译
人工智能·笔记·学习·语言模型
智慧景区与市集主理人2 小时前
巨有科技云票务,破解景区五一运营的入园难“效率瓶颈”
大数据·人工智能·科技
2501_933329552 小时前
企业媒体发布与舆情管理实战:Infoseek舆情系统技术架构与落地解析
大数据·开发语言·人工智能·数据库开发
Are_You_Okkk_2 小时前
AI原生与外挂的区别:开源知识库的优势及优化方向
大数据·人工智能·开源
xinlianyq2 小时前
2026 边缘智能的崛起:端云协同架构下的“词元”调度艺术
人工智能·架构·api