机器学习概叙
机器学习概叙
人工智能三大概念
AI(Artificial Intelligence,人工智能)
让机器模拟人类智能行为得技术和理论
目标:
使计算机能够执行通常需要人类智能的任务,如推理,学习,规划,感知,自然语言理解等
范围最广,是ML(机器学习)和DL(深度学习)的上位概念
例子:
- 专家系统
- 语音识别
- 自动驾驶
- 智能客服机器人
ML(Machine Learning,机器学习)
AI的一个子领域,通过算法让计算机从数据中"学习"规律,而无需显式编程.
核心思想:
用数据驱动的方式自动改进性能
典型任务:
- 分类(如垃圾邮件识别)
- 回归(如房价预测)
- 聚类(如客户分群)
常见算法:
- 线性回归, 逻辑回归
- 决策树, 随机森林
- 支持向量机 (SVM)
- K近邻 (KNN)
✅ ML 是实现 AI 的一种重要方法。
DL(Deep Learning,深度学习)
ML的一个子集, 使用多层神经网络(尤其是深度神经网络)自动提取数据的多层次特征
特点:
- 需要大量数据
- 计算资源要求高 (常依赖 GPU)
- 自动特征工程 (无需人工设计特征)
典型应用:
- 图像识别 (如人脸识别)
- 语音合成与识别
- 自然语言处理(如大语言模型)
AIphaGo等复杂决策系统
常见模型:
- 卷积神经网络 (CNN)
- 寻欢神经网络 (RNN / LSTM)
- Transformer
- 生成对抗网络(GAN)
✅ DL 是 ML 的一种高级形式,特别擅长处理非结构化数据(图像、语音、文本)。
三者关系(层级结构)
人工智能(AI)
│
└── 机器学习(ML)
│
└── 深度学习(DL)
- AI ⊃ ML ⊃ DL
- 并非所有AI都基于ML (例如早期的规则系统), 也并非所有ML都是DL (如传统统计模型)
- DL的兴起极大的推动了现代AI的发展 (如ChatGPT, 自动驾驶, 医疗影响分析等)
想象你要造一辆“会自己开车的车”:
- AI 是“让车能像人一样驾驶”的整体目标;
- ML 是“通过大量驾驶数据教会车如何判断路况”;
- DL 是“用复杂的神经网络(比如模仿人脑)自动识别红绿灯、行人、车道线等”。
总结
| 项目 | AI | ML | DL |
|---|---|---|---|
| 定义 | 模拟人类智能 | 从数据中学习规律 | 使用深度神经网络学习 |
| 范围 | 最广 | AI 的子集 | ML 的子集 |
| 是否需要数据 | 不一定(规则系统可无数据) | 必须 | 大量数据 |
| 特征工程 | 可手动 | 常需手动 | 自动提取 |
| 典型技术 | 专家系统、搜索算法 | 决策树、SVM | CNN、Transformer |
| 应用举例 | 智能助手、机器人 | 推荐系统、信用评分 | 图像生成、大语言模型 |
学习方式:
- 基于规则学习
- 基于规模学习
机器学习发展三要素
-
数据 (Data)
“燃料"或"养料”:海量, 高质量, 多样化的数据是训练有效模型的基础
例: ImageNet (1500万标注图像) , 互联网文本, 用户行为日志
没有大数据, 深度学习无法发挥优势
-
算法 (AIgorithm)
“智慧大脑”:包括模型架构创新 (如 Transformer) , 训练技巧 (如 BatchNorm), 学习范式 (如自监督)
算法进步让模型能处理更复杂任务 (如大语言模型理解上下文)
-
算力 (Computing Power)
“引擎”:GPU/TPU, 分布式训练, 云计算等提供强大计算能力
例: 训练 GPT-3 需数千 GPU 运行数周;没有现代算力,深度神经网络训练不现实。
总结:
-
数据提供学习素材
-
算法提供学习方法
-
算力提供执行能力
三者缺一不可, 形成"飞轮效应": 算力提升 → 训更大模型 → 需更多数据 → 推动算法创新
✅ 这是工业界和媒体常用表述,用于解释 AI 浪潮的底层驱动力。
常见术语
样本,特征,标签/目标值
在机器学习(ML)中,样本、特征、标签(或目标值) 是最基础、最核心的数据概念。它们共同构成了监督学习的“输入-输出”结构,也是理解任何 ML 任务的起点
样本
一条独立的数据记录, 代表一个观测对象或事件
作用: 是模型训练和预测得基本单位
✅ 一个数据集 = 多个样本的集合。
特征
描写样本的可测量属性或变量, 是模型的输入
作用: 提供判断依据, 模型通过特征来预测结果
表示: 通常用 x1,x2,…,xn 表示,组成特征向量 x∈Rn
特征可以是:
- 数值型(连续或离散):如年龄、价格
- 类别型:如性别、颜色(需编码为数值)
- 文本、图像、音频等(需向量化处理)
标签
样本的正确答案或期望输出,是模型要预测的目标
作用: 在监督学习中用于指导模型学习
表示:通常用 y 表示
类型:
- 分类任务: 标签是类别(如 “垃圾邮件” / “非垃圾邮件”,或数字 0/1)
- 回归任务: 标签是连续数值(如房价 850,000 元)
⚠️ 注意:
- 无监督学习中没有标签(只有样本和特征)。
- 在强化学习中,用“奖励(Reward)”代替标签。
三者关系图解
以一个表格形式的数据集为例:
| 样本编号 | 特征1(面积) | 特征2(卧室数) | 特征3(楼龄) | 标签(房价) |
|---|---|---|---|---|
| 样本1 | 85 | 2 | 5 | 620,000 |
| 样本2 | 120 | 3 | 10 | 950,000 |
| 样本3 | 60 | 1 | 2 | 420,000 |
- 每一行 = 一个样本
- 每一列(除最后一列)= 一个特征
- 最后一列 = 标签(目标值)
数学上,一个样本可表示为:
(x,y)=([x1,x2,x3], y)
训练集就是多个这样的元组:
D={(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))}
不同类型任务中的表现
| 任务类型 | 特征(输入) | 标签(输出) | 示例 |
|---|---|---|---|
| 分类 | 用户行为、文本、图像像素 | 离散类别(如 0/1,A/B/C) | 邮件是否为垃圾邮件 |
| 回归 | 房屋属性、历史股价 | 连续数值 | 预测明天的温度 |
| 多标签分类 | 新闻文章 | 多个标签(如 [体育, 国际]) | 文章主题标注 |
| 序列标注 | 句子中的每个词 | 每个词的标签(如词性、实体) | 命名实体识别(NER) |
⚠️ 注意:
- 特征 ≠ 原始数据
- 原始数据(如一段文字、一张图片)需要经过特征工程转化为数值特征。
- 深度学习可自动提取特征,但传统 ML 依赖人工设计。
- 标签质量决定模型上限
- “垃圾进,垃圾出”(Garbage in, garbage out):错误或噪声标签会误导模型。
- 样本独立同分布(i.i.d.)假设
- 大多数 ML 算法假设训练样本相互独立且来自同一分布。
- 测试集也有特征,但没有标签(预测时)
- 预测阶段:只输入特征 xx ,模型输出预测值 $ \hat{y} $ 。
总结
样本是“谁”,特征是“它长什么样”,标签是“它到底是什么/值多少”
数据集划分
数据集可划分两部分:训练集、测试集 比例:8 : 2,7 : 3
训练集(training set) :用来训练模型(model)的数据集
测试集(testing set):用来测试模型的数据集
样本相互独立且来自同一分布
算法分类(按学习方式分类)
监督学习
给模型提供带标签的数据(输入 + 正确答案),让它学会从输入预测输出
目标:学习一个映射函数 f:X→Y
典型任务:
-
分类(Classification):如判断邮件是否为垃圾邮件(输出是类别)
目标值(标签值)是【不连续】的
分类种类:二分类、多分类任务
-
回归(Regression):如预测房价(输出是连续值)
目标值(标签值)是【连续】的
数据形式:
{(x1,y1),(x2,y2),…,(xn,yn)}
其中 xi 是输入(如图片像素), yi 是标签(如“猫”或“狗”)。
✅ 优点:效果明确,评估容易。
❌ 缺点:依赖大量高质量标注数据,标注成本高。
无监督学习
只给模型无标签的数据,让它自己发现数据中的结构、模式或分组
目标:探索数据的内在分布或表示。
典型任务:
- 聚类(Clustering):如客户细分(K-Means)
- 降维(Dimensionality Reduction):如 PCA、t-SNE
- 异常检测(Anomaly Detection)
- 密度估计
✅ 优点:无需标注,适用于探索性分析。
❌ 缺点:结果难以评估,目标不如监督学习明确。
强化学习
智能体(Agent)通过与环境交互,试错学习,以最大化累积奖励
关键要素:
- Agent(智能体)
- Environment(环境)
- State(状态)、Action(动作)、Reward(奖励)
目标:学习一个策略(Policy) π(a∣s) ,使得长期回报最大。
典型应用:
- 游戏 AI(如 AlphaGo、Atari 游戏)
- 机器人控制
- 自动驾驶决策
- 推荐系统(动态优化)
✅ 优点:适合序列决策问题,能处理延迟奖励。
❌ 缺点:训练不稳定,样本效率低,需要大量交互。
半监督学习
- 结合少量有标签数据 + 大量无标签数据。
- 假设:数据分布具有某种结构(如聚类假设、流形假设)。
- 应用:医疗影像分析(标注成本高,但图像多)。
自监督学习
- 核心:从无标签数据中自动生成监督信号(伪标签)。
- 例如:
- 在 NLP 中:BERT 通过“掩码语言建模”(Masked LM)预测被遮盖的词。
- 在 CV 中:对比学习(如 SimCLR)让模型区分同一图像的不同增强版本。
- 是当前大模型预训练的主流方法。
迁移学习
- 将在一个任务上学到的知识迁移到另一个相关任务。
- 例如:用 ImageNet 预训练的 ResNet 模型微调用于医学图像分类。
- 极大减少对新任务数据的需求。
少样本学习 / 零样本学习
- 少样本:仅用几个样本就能学习新类别(如 Meta-Learning)。
- 零样本:从未见过某类样本,但能通过语义描述识别(如“斑马 = 条纹 + 马”)。
- 在大语言模型(如 GPT)中广泛应用。
对比
| 学习方式 | 是否需要标签 | 核心目标 | 典型场景 |
|---|---|---|---|
| 监督学习 | ✅ 是 | 预测已知输出 | 图像分类、房价预测 |
| 无监督学习 | ❌ 否 | 发现数据结构 | 客户分群、降维可视化 |
| 强化学习 | ❌(但有奖励) | 最大化长期奖励 | 游戏 AI、机器人控制 |
| 半监督学习 | ⚠️ 部分 | 利用未标注数据提升性能 | 医疗、语音识别 |
| 自监督学习 | ❌(自生成) | 学习通用表示 | BERT、MAE、SimCLR |
| 迁移学习 | 视情况 | 知识迁移 | 微调大模型 |
| 少样本/零样本学习 | 极少或无 | 快速泛化到新任务 | 新类别识别、大模型推理 |
总结
- 监督学习是目前工业界最成熟、应用最广的方式。
- 无监督学习用于探索和表示学习。
- 强化学习擅长序贯决策,但工程复杂度高。
- 自监督 + 迁移学习是大模型(如 LLM、多模态模型)成功的关键。
- 实际项目中,常组合多种学习方式(如先自监督预训练,再监督微调)。
机器学习建模流程
💡 整个流程是迭代的:模型效果不好 → 回到特征工程或数据清洗。
- 从简单模型开始(如逻辑回归),建立 baseline。
- 记录每一步实验(用 MLflow 或 Weights & Biases)。
- 重视数据质量 > 模型复杂度。
- 测试集只用一次,避免“信息泄露”。
- 可解释性很重要:SHAP、LIME 帮助理解模型决策。
特征工程
特征工程(Feature Engineering) 是机器学习中最关键、最耗时、也最能提升模型性能的环节。它决定了模型的“天花板”——再强大的算法,也无法从糟糕的特征中学习到有效规律。
📌 定义:
特征工程是将原始数据转换为更适合机器学习模型理解与学习的特征表示的过程。
为什么重要
Garbage in, garbage out:输入特征质量直接决定模型上限。
深度学习虽能自动提取特征,但在结构化数据(如表格)上,人工特征工程仍远超纯端到端学习。
好的特征可:
- 提升模型精度
- 加快训练速度
- 增强模型可解释性
- 减少过拟合风险
💡 据业界经验:80% 的 ML 工作量在特征工程。
特征工程全流程(6 大核心步骤)
1. 特征清洗
处理原始数据中的“脏”问题:
缺失值处理:
- 删除(样本 or 特征)
- 填充:均值/中位数/众数、前向填充、模型预测(如 KNN 填补)
异常值处理:
-
统计方法:3σ 原则、IQR(四分位距)
-
可视化:箱线图、散点图
-
处理方式:截断(Winsorizing)、转换、删除
-
去重与一致性校验:如统一单位(kg vs lbs)、日期格式
2.特征编码
将非数值数据转为数值形式:
| 数据类型 | 编码方法 | 适用场景 |
|---|---|---|
| 类别型(无序) | One-Hot Encoding | 类别少(<10),如颜色、城市 |
| Target Encoding / Mean Encoding | 高基数类别(如用户ID、商品ID) | |
| Embedding(深度学习) | 超高维稀疏类别 | |
| 类别型(有序) | Label Encoding(映射为 0,1,2…) | 如“低/中/高” |
| 文本 | TF-IDF、Count Vectorizer | 传统 NLP |
| Word2Vec、BERT Embedding | 深度语义理解 | |
| 时间 | 提取年/月/日/星期/小时/是否周末/节假日等 | 时间序列、行为分析 |
⚠️ 注意:One-Hot 会导致维度爆炸(高基数类别慎用)!
3.特征缩放
使不同量纲的特征处于同一尺度,对距离敏感型模型至关重要:
| 方法 | 公式 | 适用模型 |
|---|---|---|
| 标准化(Z-score) | x′=x−μσx' = \frac{x - \mu}{\sigma}x′=σx−μ | SVM、KNN、神经网络、PCA |
| 归一化(Min-Max) | x′=x−xminxmax−xminx' = \frac{x - x_{\min}}{x_{\max} - x_{\min}}x′=xmax−xminx−xmin | 神经网络(尤其 Sigmoid/Tanh 激活) |
| Robust Scaling | 用中位数和 IQR 缩放 | 含异常值的数据 |
✅ 决策树、随机森林、XGBoost 不需要特征缩放!
4.特征构造
创造性地生成新特征,挖掘潜在信息:
常见技巧:
数学变换:
- 对数(log)、平方根(缓解偏态分布)
- 多项式特征(如 x1 × x2 ,用于捕获交互效应)
组合特征:
- “收入 / 家庭人数” → 人均收入
- “点击次数 / 展示次数” → 点击率(CTR)
分箱(Binning / Discretization):
- 将连续变量转为离散区间(如年龄 → [0-18, 19-35, 36-60, 60+])
- 可提升非线性模型效果,增强鲁棒性
时间窗口统计:
- 过去 7 天平均登录次数
- 最近一次购买距今天数
聚类作为特征:
- 用 K-Means 对用户分群,将 cluster ID 作为新特征
🌟 高级技巧:
- 使用领域知识构造特征(如金融中的“负债收入比”)
- 自动特征生成工具:FeatureTools(基于深度特征合成 DFS)
5.特征选择
剔除冗余或无关特征,降低维度、防止过拟合、提升速度。
三大方法:
| 类型 | 原理 | 代表方法 |
|---|---|---|
| 过滤法(Filter) | 基于统计指标独立评估每个特征 | 方差阈值、相关系数、卡方检验、互信息 |
| 包裹法(Wrapper) | 用模型性能作为评价标准,搜索子集 | 递归特征消除(RFE)、前向/后向选择 |
| 嵌入法(Embedded) | 在模型训练过程中自动选择 | Lasso(L1 正则)、树模型(特征重要性) |
✅ 实践建议:
- 先用过滤法快速筛掉低方差特征
- 再用树模型(如 XGBoost)看特征重要性
- 最终保留 top-k 个特征做精调
6. 特征降维
当特征维度过高(如文本 TF-IDF 上万维),可压缩表示:
- PCA(主成分分析):线性降维,保留最大方差
- t-SNE / UMAP:非线性,主要用于可视化
- Autoencoder:神经网络自编码器,学习低维表示
⚠️ 降维会丢失部分信息,慎用于最终建模(除非内存/速度受限)。
不同类型数据的特征工程重点
| 数据类型 | 特征工程重点 |
|---|---|
| 结构化数据(表格) | 缺失值处理、类别编码、特征交叉、分箱、目标编码 |
| 文本数据 | 分词、停用词过滤、TF-IDF / Embedding、文本长度、情感得分 |
| 图像数据 | 归一化、数据增强(旋转/裁剪)、预训练 CNN 提取特征 |
| 时间序列 | 滑动窗口统计、差分、傅里叶变换、滞后特征(lag features) |
| 图数据 | 节点度、中心性、图嵌入(Node2Vec、GNN) |
总结:特征工程黄金法则
- 理解业务 > 盲目套算法:领域知识是构造好特征的源泉。
- 先简单后复杂:从均值、计数、比率开始,再尝试高级交互。
- 验证有效性:新特征是否提升验证集性能?否则删掉!
- 避免数据泄露(Data Leakage):
- 所有统计量(均值、标准差、编码映射)必须仅从训练集计算
- 再应用到验证/测试集
- 可复现性:用 Pipeline 封装整个流程。
🎯 终极目标:让模型“一眼看懂”数据背后的规律。
模型拟合问题
主要指模型在训练数据和真实世界(测试数据)上的表现差异。它集中体现为两种极端情况:欠拟合(Underfitting) 和 过拟合(Overfitting)。
模型拟合
-
拟合(Fitting):指模型从训练数据中学习输入与输出之间映射关系的过程。
-
理想状态:模型在训练集和测试集上都表现良好 → 良好拟合(Good Fit)
-
现实问题:模型往往偏向两个极端:
类型 欠拟合(Underfitting) 过拟合(Overfitting) 定义 模型太简单,无法捕捉数据规律 模型太复杂,记住了训练数据噪声 训练误差 高 很低(甚至接近 0) 测试误差 高 显著高于训练误差 偏差-方差 高偏差、低方差 低偏差、高方差 表现 “学不会” “死记硬背,不会举一反三”
📌 核心矛盾:偏差(Bias) vs 方差(Variance)
- 偏差:模型假设与真实关系的差距
- 方差:模型对训练数据扰动的敏感度
判断拟合状态
- 通过误差对比
- 训练误差 ≈ 测试误差,且都很低 → 良好拟合
- 训练误差高,测试误差高 → 欠拟合
- 训练误差很低,测试误差很高 → 过拟合
- 学习曲线(Learning Curves)
绘制训练集/验证集误差随样本量或训练轮次的变化:
- 欠拟合特征:两条曲线都高,且靠得很近
- 过拟合特征:训练误差持续下降,验证误差先降后升(出现“拐点”)
欠拟合原因与解决方法
原因:
- 模型太简单(如用线性模型拟合非线性数据)
- 特征不足或信息量低
- 正则化过强
- 训练不足(如神经网络未收敛)
解决方法:
| 方法 | 说明 |
|---|---|
| 增加模型复杂度 | 用高阶多项式、更深的树、更大的神经网络 |
| 改进特征工程 | 添加交互项、非线性变换(如 log、平方)、领域特征 |
| 减少正则化 | 降低 L1/L2 正则强度(如减小 alpha 或 C) |
| 延长训练时间 | 对神经网络增加 epoch,确保收敛 |
过拟合原因与解决方法
原因:
- 模型过于复杂(参数远多于样本)
- 训练数据太少或噪声大
- 训练时间过长(尤其神经网络)
- 特征过多(维度灾难)
解决方案(按优先级排序):
- 增加训练数据
- 最有效但成本高:收集更多真实数据
- 替代方案:数据增强(图像旋转/裁剪、文本同义替换)
- 简化模型
- 减少神经网络层数/节点数
- 限制树模型深度(
max_depth)、叶子节点数(min_samples_leaf)
- 正则化(Regularization)
- L1 正则(Lasso):促使稀疏,自动特征选择
- L2 正则(Ridge):抑制权重过大
- 弹性网络(ElasticNet):L1 + L2 结合
- 交叉验证(Cross-Validation)
- 使用 K 折 CV 选择最优超参数,避免在单一验证集上过拟合
- 早停法(Early Stopping)(用于迭代模型)
- 监控验证损失,当不再下降时提前终止训练(常用于神经网络、XGBoost)
- 集成方法(Ensemble)
- Bagging(如随机森林):降低方差
- Dropout(神经网络):训练时随机“关闭”部分神经元,模拟集成效果
- 特征选择/降维
- 移除无关或冗余特征,降低模型复杂度
| 问题 | 核心思路 | 具体手段 |
|---|---|---|
| 欠拟合 | 提升模型表达能力 | 更复杂模型、更好特征、减少正则 |
| 过拟合 | 限制模型复杂度 / 增加数据 | 正则化、早停、Dropout、数据增强、特征选择 |
💡 黄金法则:
在验证集上调试! 所有调参和改进都应以验证集性能为依据,而非训练集。
更多推荐



所有评论(0)