楼层: 首页/ 软件技术/ Python 机器学习与深度学习/ 机器学习概览
1

机器学习概览

Machine Learning Overview

机器学习不是魔法,它只是"让计算机从数据中找规律,不用你把规则一条条写死"。你给它一万张猫和狗的图片,它自己学会怎么分辨——你没有写"尖耳朵=猫"这种规则。

什么是机器学习

论大白话定义

传统编程:你写规则 + 数据 → 得到答案。
机器学习:你给数据 + 答案 → 它自己总结出规则。
Tom Mitchell 的学术定义:一个程序从经验 E 中学习任务 T、性能指标 P,如果它在 T 上的性能(按 P 衡量)随 E 提升而提升,就说它在从 E 学习。

机器学习分类

大类标签典型任务 / 算法
监督学习有标签(X, y)分类(垃圾邮件)、回归(房价预测)。算法:线性/逻辑回归、SVM、树模型、神经网络。
无监督学习只有 X,没有 y聚类(客户分群)、降维(PCA)、异常检测。
半监督学习少量有标签 + 大量无标签标注贵的场景(医学影像、文本分类)。
强化学习通过奖励信号学习策略AlphaGo、机器人、游戏 AI、推荐系统。

监督学习:分类 vs 回归

论一句话区分

回归预测连续值(房价 350 万、气温 28.5℃);分类预测离散类别(垃圾邮件/正常、猫/狗)。输出是"哪一类"还是"多少",决定了用回归还是分类。

无监督学习:聚类 vs 降维

任务说明
聚类把相似的样本归成一簇(客户分群、异常检测)。
降维把高维数据压到低维,保留主要信息(PCA、t-SNE)。
关联规则"买啤酒的人也买尿布",购物篮分析。
异常检测找出和大多数不一样的点(信用卡欺诈)。

半监督与强化学习

论两种特殊场景

半监督学习:标注贵、无标注数据便宜。先用少量标注训个 baseline,用它给无标注数据打标签,再一起训(伪标签 / Pseudo-labeling)。强化学习:没有标签,只有奖励信号。智能体在环境里试错,最大化累计奖励。AlphaGo、机器人、游戏 AI 都是这条路。

标准流程八步

# 机器学习项目标准流水线 数据收集 → 数据清洗 → 特征工程 → 模型选择 → 训练 → 评估 → 调优 → 部署 # 注意:80% 的时间花在数据清洗和特征工程上

训练集 / 验证集 / 测试集

集合比例用途
训练集 train~70%模型在上面学习参数。
验证集 val~15%调超参数、早停、选模型。不能参与训练。
测试集 test~15%最终评估,只碰一次,用来报告上线指标。
为什么要三个集,不是两个

只有 train/test 的话,你调超参数调到"测试集表现最好",相当于偷看答案。验证集是"模拟考试",让你调参;测试集是"高考",考完就不能再看。测试集只能用一次。

过拟合 vs 欠拟合 vs 偏差-方差权衡

状态表现怎么办
欠拟合
(高偏差)
训练集和测试集都差。模型太简单,连训练数据都没学会。换复杂模型、加特征、减少正则、训练更久。
刚好训练集好,测试集也接近训练集。就它了。
过拟合
(高方差)
训练集极好,测试集差。模型"背答案"了。加数据、简化模型、正则化、Dropout、早停、数据增强。

论偏差-方差权衡

总误差 = 偏差² + 方差 + 不可约误差。偏差:模型太简单导致的系统性错误(比如用直线拟合曲线);方差:模型对训练集微小波动太敏感(换一批训练数据,模型变得完全不一样)。模型越复杂,偏差越低、方差越高。我们要找"甜区"。

No Free Lunch 定理

论没有"万能模型"

Wolpert 1996 年证明:在所有可能的问题上平均,没有任何一个算法永远优于另一个。翻译成人话:别迷信"XGBoost 天下第一",表格数据上它强,图像上还是 CNN 强,文本上还是 Transformer 强。选模型要根据数据、任务、约束。

数据泄漏:最隐蔽的坑

# 错误示范:先标准化全量,再切分 # scaler 在 fit 时偷看了测试集的均值方差 X_scaled = scaler.fit_transform(X) X_train, X_test, y_train, y_test = train_test_split(X_scaled, y) # 正确做法:先切分,再用训练集 fit X_train, X_test, y_train, y_test = train_test_split(X, y) scaler = StandardScaler() X_train_s = scaler.fit_transform(X_train) # 只 fit 训练集 X_test_s = scaler.transform(X_test) # transform 测试集 # 其他常见泄漏: # 1. 用全量数据做特征选择(互信息)再切分 # 2. 用全量数据做 PCA 再切分 # 3. 时间序列打乱切分(未来数据进训练集) # 4. 目标编码时用全量目标统计

基线模型怎么选

数据类型baseline 推荐
表格分类逻辑回归 → 随机森林 → XGBoost
表格回归线性回归 → 随机森林 → XGBoost
图像分类预训练 ResNet 微调(别从零训)
文本分类TF-IDF + 逻辑回归 / 朴素贝叶斯 → BERT 微调
序列预测ARIMA / 线性 → LSTM / Transformer
推荐协同过滤 → DeepFM

机器学习小史

论十年一个台阶

1950s 感知机;1980s 反向传播;1990s SVM/Boosting;2010s 深度学习爆发(ImageNet 2012);2017 Transformer;2022 大模型(ChatGPT)。每十年一个台阶,但核心思想(数据→特征→模型→评估)没变。

本章面试题

面试 · 第 1 章

Q1. 监督学习和无监督学习的区别?各举一个应用。

查看答案

监督学习有标签,学 X→y 的映射(垃圾邮件分类);无监督学习无标签,自己找结构(客户分群)。

Q2. 怎么判断过拟合?

查看答案

训练集准确率远高于验证集(如 99% vs 70%);学习曲线里验证集误差开始上升。

Q3. 为什么测试集不能用来调参?

查看答案

用测试集调参等于"用高考题复习",指标虚高、上线就崩。测试集只能最终评估一次。

Q4. 偏差和方差哪个对应过拟合?

查看答案

高方差 = 过拟合(模型对训练数据太敏感);高偏差 = 欠拟合。