机器学习01
- 相关概述
- AI、ML、DL、RL
- 机器学习
- 常用术语
- 按学习方式划分
- 工作流程
- 训练集、测试集划分方法
- 超参数选择方法
- 性能度量
- 分类任务
- 回归任务
- 典型应用领域
相关概述
AI、ML、DL、RL
人工智能(AI,Artificial Intelligence):其本质是让机器完成原本需要人类智慧才能处理的任务。目标为创造出能够模拟、延伸、甚至超越人类智能的机器系统。
机器学习(ML,Machine Learning):是实现AI的一种途径,核心思想:不人为编写全部固定规则,让计算机通过海量数据,利用统计、优化算法自动学习数据内在规律、模式,形成可泛化的模型,完成预测、分类、识别、决策任务。
深度学习(DL,Deep Learning):是多层神经网络驱动的机器学习,通过多层非线性网络结构自动完成特征提取,无需人工设计特征。
强化学习(RL,Reinforcement Learning):是机器学习的一个独立分支,一套基于试错交互的学习框架。核心逻辑:智能体(Agent)在持续变化的环境(Environment)中主动执行动作,环境反馈奖励(Reward),智能体不断调整自身策略,目标是最大化长期累计奖励,最终学会最优决策方案。
传统的编程逻辑(基于规则的学习):规则 + 输入数据 → 输出结果;
机器学习逻辑(基于模型的学习):输入数据 + 对应标签/目标 → 学习得到模型 → 新数据预测输出。
机器学习
常用术语
1. 样本 / 特征 / 标签
- 样本(Sample):单条数据(一条用户记录、一张图片);
- 特征(Feature):描述样本的属性(身高、像素、价格);
- 标签(:Label):目标答案(猫 / 狗、房价、是否违约)。
2. 泛化能力
模型在未见过的新数据上的表现好坏,是衡量模型优劣第一标准;
3. 数据集划分
固定分割为训练集、验证集、测试集。
- 训练集:模型学习参数;
- 验证集:调超参数、筛选模型;
- 测试集:最终泛化性能评估,全程不参与训练。
4. 欠拟合、正常拟合、过拟合
用来描述模型拟合数据的程度,判断模型泛化能力好坏。
- 欠拟合(Underfitting):模型复杂度太低,对训练样本的一般性质尚未学好,在训练、未知数据上效果都很差。
- 正常拟合(Good Fit):平衡了模型复杂度,是训练追求的最优状态,训练集误差适中,测试集误差和训练集接近,差距很小;
- 过拟合 (Overfitting):模型复杂度过高,将训练样本自身的一些特点当做了所有潜在样本都具有的一般性质,即噪声、异常点等也被学习,训练集误差极低(几乎完美预测训练数据),测试集误差远高于训练集,二者差距巨大。
5. 经验误差
- 错误率:分类错误的样本数占样本总数的比例;
- 精度 = 1 - 错误率;
- 误差:模型的实际预测输出与样本的真实输出之间差异;
- 训练误差 / 经验误差:模型在训练集上的误差;
- 泛化误差:模型在新样本上的误差;
按学习方式划分
1. 监督学习
训练集同时包含输入特征 X与人工标注标签 Y,模型学习从 X 到 Y 的映射关系,有明确标准答案指导训练。
两大任务:
- 分类 Classification:输出离散类别
二分类:垃圾邮件识别、疾病检测、信贷违约
多分类:手写数字识别、图像猫狗分类、情感正负向
算法:逻辑回归、SVM、随机森林 - 回归 Regression:输出连续数值
场景:房价预测、销量预估、温度预测
算法:线性回归、XGBoost、LightGBM
2. 无监督学习
无任何人工标签,仅输入特征 X,算法自动挖掘数据内部分布、相似关系、隐藏结构。
典型任务:
- 聚类 Clustering:自动把相似样本分组
K-Means、DBSCAN;用户分层、商品分群 - 降维 Dimensionality Reduction:高维数据压缩保留关键信息
PCA、t-SNE;数据可视化、特征降噪 - 关联规则挖掘 Apriori:挖掘特征共现规律(购物篮分析)
- 异常检测:识别偏离整体分布的异常样本
3. 半监督学习
少量带标注样本 + 大量无标注样本,解决标注成本过高的痛点。
4. 自监督学习
属于无监督学习的高级分支,完全不需要人工标签,利用数据自身内在结构自动构造伪标签完成预训练。
5. 强化学习
不靠静态数据集与标签,依靠智能体 Agent 与环境持续交互,通过奖励 Reward 信号试错学习最优序列决策。
工作流程
步骤 1:需求拆解
明确目标、评价指标、数据边界,区分是分类 / 回归 / 聚类任务。
步骤 2:数据采集
数据库、日志、爬虫、公开数据集、传感器采集;数据质量直接决定模型上限。
步骤 3:数据预处理
- 数据清洗:缺失值填充、重复样本删除、异常值剔除;
- 特征工程(传统 ML 核心)
特征提取 → 特征预处理(归一化、标准化…) → 特征构造(基于现有特征组合生成新特征) → 特征选取 → 特征降维 - 数据集划分:固定分割为训练集、验证集、测试集
训练集:模型学习参数;
验证集:调超参数、筛选模型;
测试集:最终泛化性能评估,全程不参与训练。
步骤 4:模型选择与训练
传统机器学习:线性模型、树模型、SVM 等,轻量、可解释、小数据友好;
深度学习:神经网络,大数据、图像 / 文本 / 语音等高维数据效果更强;
训练逻辑:定义损失函数,用梯度下降等优化器迭代更新模型参数,最小化预测误差。
步骤 5:调参与优化
超参数:学习率、树深度、网络层数(人工设置,不自动学习);
优化手段:网格搜索、随机搜索、贝叶斯调参;
正则化:L1/L2 正则、Dropout、早停 Early Stop,解决过拟合。
步骤 6:模型预测与评估(不同任务指标不同)
- 分类任务:准确率 Acc、精确率 Precision、召回率 Recall、F1 分数、AUC-ROC;
- 回归任务:MAE 平均绝对误差、MSE 均方误差、R² 拟合优度;
- 聚类:轮廓系数、DB 指数;
通用基准:对比简单基线模型,判断模型是否有效提升。
训练集、测试集划分方法
- 留出法
直接将数据集划分为两个互斥的集合,其中一个集合为训练集 S、另一个作为测试集 T,在 S 上训练出模型后,用 T 来评估其测试误差,作为对泛化误差的估计。
——常见的划分比例为:训练集:测试集 = 7:3 或者 8:2;
——分类任务中,训练 / 测试集的划分要保持数据分布的一致性,即采用分层采样,保持样本类别比例相似。
——单次使用留出法得到的估计结果不够稳定可靠,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
- 优点:
实现简单、计算速度快,一次划分即可完成训练评估;
适合数据量充足、快速建模、快速验证模型效果的场景。 - 缺点:
划分结果具有随机性,模型评估指标波动较大,结果不稳定;
数据利用不充分,总有一部分数据只做测试、不参与训练,数据量小时误差放大;
若数据集本身样本少,测试集样本过少,评估结果不具备代表性。
- 交叉验证法(Cross Validation)
先将数据集划分为 k 个大小相似的互斥子集,每个子集均通过分层采样获得;每次用 k-1 个子集的并集作为训练集,余下的子集作为测试集,获取 k 组训练 / 测试集,进行 k 次训练和测试,最终返回 k 个测试结果的均值,也被称为“k 折交叉验证”。
——k 最常用的取值为10(10 折交叉验证),其他还有 5、20 等;
——由于数据集划分为 k 个子集存在多种划分方式,为减小因样本划分不同而引入的差别,通常需要随机使用不同的划分重复 p 次,称为“p 次 k 折交叉验证”。
- 优点:
全部数据都会参与训练和验证,数据利用率最大化;
多次评估取平均,大幅降低单次划分带来的随机误差,评估结果更稳定可靠;
常用于超参数寻优(网格搜索 GridSearchCV 底层就是交叉验证),选出泛化能力最好的模型。 - 缺点:
需要循环训练 k 次模型,计算耗时是留出法的 k 倍,训练成本高。
- 留一法(Leave-One-Out)
即 k = 样本数,每次只留 1 个样本做验证,其余全部训练;
优点:数据利用率 100%;
缺点:样本量大时计算极慢,几乎不用于大数据。
超参数选择方法
- 网格搜索(Grid Search)
人为给定超参数所有候选组合,遍历全部搭配,用交叉验证评估每组效果,选出指标最优的一组超参数。
——遍历所有组合,不会漏掉最优解;
——超参数数量多时,组合爆炸,计算量极大;适合少量超参数、候选值不多的场景。
fromsklearn.model_selectionimportGridSearchCV# KNN超参数候选param_grid={"n_neighbors":[3,5,7,9],"metric":["euclidean","chebyshev"]}# 给定超参数knn=KNeighborsClassifier()# 模型对象# estimator:带调参的模型;param_grid:字典格式,定义需要遍历的超参数以及候选取值;cv:交叉验证折数grid=GridSearchCV(estimator=knn,param_grid=param_grid,cv=5)# 模型训练grid.fit(X_train_scaled,y_train)# grid.best_score_:最优评分print(grid.best_score_)# grid.best_params_属性:输出验证集效果最好的那一组超参字典print(grid.best_params_)# grid.best_estimator_:返回训练好的最优模型对象,可直接用来预测print(grid.best_estimator_)grid.best_estimator_.predict(X_test)# grid.cv_results_:字典,保存所有参数组合对应的每一轮验证分数、平均分数、训练耗时等全部记录print(grid.cv_results_)- 随机搜索(Random Search)
不遍历全部组合,在超参数搜索空间中随机抽取固定数量组合验证;对于连续型超参数可在区间随机采样。
——同等计算开销下,覆盖更广参数范围,更容易找到较优解;
——高维、多超参数场景远快于网格搜索;
——不保证搜到全局最优,但效果通常接近最优。
性能度量
衡量模型泛化能力的评价标准。
分类任务
前置:混淆矩阵(二分类)
——设样本分为正类、负类,定义四个基础统计量:
TP :True Positive,真正例;真实正,预测正
TN :True Negative,真负例;真实负,预测负
FP :False Positive,假正例;真实负,预测正
FN :False Negative,假负例;真实正,预测负
- 准确率 Accuracy
所有样本中预测正确的占比。
适用:类别均衡数据集;缺陷:不平衡数据会误导评估。
A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy = \frac{TP+TN}{TP+TN+FP+FN}Accuracy=TP+TN+FP+FNTP+TN
sklearn :accuracy_score(y_true, y_pred) - 精确率 Precision(查准率)
所有预测为正的样本里,真正为正的比例。
场景:垃圾邮件、风控,尽量避免误判。
P = T P T P + F P P = \frac{TP}{TP+FP}P=TP+FPTP - 召回率 Recall(查全率)
所有正类样本中,被成功预测为正类的比例。
场景:疾病检测、故障识别,尽量不漏检。
R = T P T P + F N R = \frac{TP}{TP+FN}R=TP+FNTP - F1 分数
精确率与召回率的调和平均,综合两者性能,值域 [0,1],越接近 1 效果越好。
F 1 = 2 ⋅ P ⋅ R P + R F1 = \frac{2 \cdot P \cdot R}{P + R}F1=P+R2⋅P⋅R
sklearn:f1_score()、classification_report()批量输出每类 P/R/F1 - ROC 与 AUC(二分类概率输出模型)
TPR(真正率)= Recall,所有正类样本中,被预测为正类的比例:
T P R = T P T P + F N TPR=\frac{TP}{TP+FN}TPR=TP+FNTP
FPR(假正率),所有负类样本中,被预测为正类的比例:
F P R = F P T N + F P FPR=\frac{FP}{TN+FP}FPR=TN+FPFP
——ROC 曲线(受试者工作特征曲线-Receiver Operating Characteristic)以 FPR 为横轴、TPR 为纵轴;
——AUC (Area Under ROC Curve)是 ROC 曲线下的面积,AUC∈[0,1],越接近 1 区分能力越强。
sklearn:roc_auc_score()
回归任务
用于预测连续值(房价、销量、指标),衡量预测值y ^ i \hat{y}_iy^i与真实值y i y_iyi的误差。
m为样本总数,y ˉ \bar{y}yˉ为真实标签均值。
- 均方误差 MSE
M S E = 1 m ∑ i = 1 m ( y i − y ^ i ) 2 MSE = \frac{1}{m}\sum_{i=1}^m \big(y_i - \hat{y}_i\big)^2MSE=m1i=1∑m(yi−y^i)2
sklearn:mean_squared_error() - 均方根误差 RMSE
R M S E = 1 m ∑ i = 1 m ( y i − y ^ i ) 2 RMSE = \sqrt{\frac{1}{m}\sum_{i=1}^m \big(y_i - \hat{y}_i\big)^2}RMSE=m1i=1∑m(yi−y^i)2
——会放大误差较大的数据对指标的影响,对异常点很敏感。 - 平均绝对误差 MAE
M A E = 1 m ∑ i = 1 m ∣ y i − y ^ i ∣ MAE = \frac{1}{m}\sum_{i=1}^m \big|y_i - \hat{y}_i\big|MAE=m1i=1∑myi−y^i
sklearn:mean_absolute_error()
——对误差大小不敏感,进行性能度量时可通过 MAE 与 RMSE 综合来看。 - 绝对系数 R²
衡量模型能解释的数据波动比例,值域 (−∞,1]。
R 2 = 1 − ∑ i = 1 m ( y i − y ^ i ) 2 ∑ i = 1 m ( y i − y ˉ ) 2 R^2 = 1 - \frac{\displaystyle\sum_{i=1}^m \big(y_i - \hat{y}_i\big)^2}{\displaystyle\sum_{i=1}^m \big(y_i - \bar{y}\big)^2}R2=1−i=1∑m(yi−yˉ)2i=1∑m(yi−y^i)2
sklearn:r2_score()
典型应用领域
- 计算机视觉:人脸识别、安防图像检测、医学影像识别、图片生成;
- 自然语言处理 NLP:智能客服、大语言模型、问答系统、情感分析;
- 数据分析与数据挖掘领域:客户价值分层、量化交易等;
- 推荐系统:电商商品推荐、短视频 / 音乐推荐(协同过滤、深度推荐模型);
- 医疗:辅助诊断、药物分子筛选、患者病情预测;