机器学习复习笔记
研0深度学习前置|完整版机器学习复习笔记
标签:#研0入门 #机器学习基础 #深度学习前置 #AI读研备考 #算法笔记
博主备注:本人计算机研0深度学习方向备考整理,剔除冷门算法、保留深度学习要用的全部知识点,内容详略适中,公式+原理+代码+DL关联四件套齐全,没有过度精简导致看不懂,也无冗余冷门内容,可直接收藏复习。
前言
深度学习隶属于机器学习的子集,所有神经网络的优化思想、损失设计、防过拟合方案、数据集划分逻辑全部源自传统机器学习。本篇笔记专为研0定制,逐个打通ML→DL知识链路,每个知识点标注【深度学习关联点】,学完本篇可无缝上手PyTorch搭建MLP、CNN,避免初学深度学习时看不懂损失、正则、梯度优化底层逻辑。
一、机器学习基础核心概念
1.1 层级关系与定义
包含关系:人工智能 > 机器学习 > 深度学习
- 机器学习:不靠人工编写固定业务规则,通过数据驱动让模型自主学习数据内在规律,实现对未知样本预测、分类、聚类,核心目标:提升模型泛化能力(新样本预测效果),不是在训练集上做到100%拟合。
- 深度学习:依托多层人工神经网络实现表征学习,自动从原始图像/文本提取多层特征,是机器学习的分支。
1.2 四大学习范式(重点掌握监督+无监督,DL高频)
| 学习类型 | 数据格式 | 任务目标 | 典型算法 | 深度学习应用场景 |
|---|---|---|---|---|
| 监督学习 | (X,y)(X,y)(X,y),特征+真实标签 | 分类(离散标签)、回归(连续数值) | 线性回归、逻辑回归、SVM、决策树 | 图像分类、目标检测、回归预测(全是监督任务) |
| 无监督学习 | 仅特征XXX,无标签 | 聚类、降维、特征挖掘 | K-Means、PCA、DBSCAN | 数据集预处理降维、图像无监督预训练、特征筛选 |
| 半监督学习 | 少量标注+海量无标注数据 | 利用无标注数据提升模型泛化 | 自训练模型 | 小样本深度学习(标注稀缺场景) |
| 强化学习 | 状态+动作+环境奖励 | 学习最优决策策略 | Q-learning、PPO | AIGC生成、机器人控制、大模型RLHF微调 |
1.3 欠拟合&过拟合(深度学习最核心考点,重中之重)
本质:模型泛化能力失衡,不管传统ML还是深度神经网络都会出现该问题。
(1)欠拟合(高偏差、低方差)
- 表现:训练集误差高、测试集误差同步偏高,两条损失曲线距离很近,模型连训练数据的基础规律都学不会。
- 成因:模型结构过于简单、有效特征数量不足、正则化权重过大、训练迭代轮次太少。
- 优化方案:新增有效特征、提升模型复杂度、降低正则系数、增加训练迭代次数。
【DL关联】神经网络出现欠拟合→增加网络层数/神经元数量、去掉部分正则约束。
(2)过拟合(低偏差、高方差)
- 表现:训练集损失极低、测试集损失很高,模型死记硬背训练集噪声、异常值,在全新数据上失效。
- 成因:模型复杂度过高、训练样本太少、数据集噪声多、迭代轮次过多。
- 优化方案(ML+DL通用):扩充训练数据、L1/L2正则、模型剪枝、早停(Early Stopping)。
【DL专属方案】Dropout随机失活、BatchNorm批量归一化、数据增强(图像翻转/裁剪)。
1.4 偏差-方差权衡(DL调参底层逻辑)
1.4.1 三项误差定义
- 偏差Bias:模型预测值与真实标签的系统性固定偏差,由模型假设简单带来,对应欠拟合;
- 方差Variance:模型在不同子集数据集训练后的结果波动幅度,代表模型对训练集噪声的敏感度,对应过拟合;
- 不可约误差:数据本身自带噪声、标签标注错误,任何模型无法消除。
1.4.2 总误差公式(必考)
Total Error=Bias2+Variance+Irreducible ErrorTotal\ Error = Bias^2+Variance+Irreducible\ ErrorTotal Error=Bias2+Variance+Irreducible Error
1.4.3 变化规律
模型复杂度逐步上升 → Bias持续下降、Variance持续上升;
模型复杂度逐步下降 → Bias持续上升、Variance持续下降;
最优解:找到总误差最低点,实现偏差方差平衡。
【DL关联】搭建神经网络时选择网络宽度、深度本质就是寻找平衡点,网络太深易高方差过拟合,网络太浅易高偏差欠拟合。
二、数据预处理&特征工程(深度学习数据集预处理标准流程)
行业金句:数据与特征决定模型上限,算法只是逼近上限;深度学习只是把人工特征换成网络自动提取,但预处理流程完全沿用传统ML逻辑。
2.1 缺失值处理(分场景选择方案)
| 处理方式 | 适用场景 | 优缺点 | DL项目选用场景 |
|---|---|---|---|
| 删除样本 | 特征缺失占比<5%、缺失无分布规律 | 简单高效;小数据集慎用,易破坏数据分布 | 样本极多的大型数据集少量缺失 |
| 均值填充 | 数值特征、正态分布无异常值 | 计算简便;压缩特征方差 | 结构化表格数据预处理 |
| 中位数填充 | 偏态数据、含极端异常值 | 抗异常、鲁棒性强;精度略低于均值 | 医疗、金融类数据集 |
| 众数填充 | 离散类别特征缺失 | 适配分类特征;易引入分布偏差 | 类别标签少量缺失 |
| 插值填充 | 时序连续数据 | 贴合数据变化趋势;仅限有序数据 | 时序深度学习数据集 |
| 模型填充 | 特征关联性强、缺失率高 | 填充精度最优;计算耗时大 | 中小型结构化数据集 |
2.2 特征标准化&归一化(神经网络必做预处理)
2.2.1 核心作用
- 消除特征量纲差异,避免取值超大的特征主导模型训练;
- 加速梯度下降收敛速度,减少迭代轮次(深度学习训练提速关键);
无需缩放:决策树、随机森林、XGBoost(按阈值分裂,不受量纲影响);
必须缩放:线性模型、SVM、KNN、PCA、全连接神经网络、CNN输入像素。
2.2.2 两种计算公式与区别
- Z-score标准化(工业&深度学习首选)
x′=x−μσx'=\frac{x-\mu}{\sigma}x′=σx−μ
μ\muμ=特征均值,σ\sigmaσ=特征标准差,输出数据均值0、方差1,保留原始数据分布形态,抗异常值优秀,全连接网络、表格数据通用。 - Min-Max归一化
x′=x−min(x)max(x)−min(x)x'=\frac{x-min(x)}{max(x)-min(x)}x′=max(x)−min(x)x−min(x)
数据压缩至[0,1][0,1][0,1]区间,对异常值极度敏感,图像像素预处理专用(0255→01)。
2.2.3 可直接运行代码
from sklearn.preprocessing import StandardScaler, MinMaxScaler
import numpy as np
# 标准化
std_scaler = StandardScaler()
X_std = std_scaler.fit_transform(X)
# 归一化
mm_scaler = MinMaxScaler()
X_mm = mm_scaler.fit_transform(X)
2.3 类别特征编码避坑
- 标签编码LabelEncoder:类别映射0,1,2…,仅树模型可用;线性模型、神经网络禁用,会人为强加虚假大小顺序,导致模型学习错误规律。
- 独热编码OneHot:每个分类单独生成0/1特征,消除顺序误导,线性模型、SVM、神经网络通用;缺点:高基数特征(如邮编、ID)会维度爆炸。
import pandas as pd
# drop_first去除冗余列,规避特征多重共线性
df = pd.get_dummies(df,columns=["cate"],drop_first=True)
2.4 PCA线性降维(DL数据集预处理常用)
2.4.1 原理
正交变换将高维特征映射到方差最大的正交方向,在保留绝大部分信息前提下剔除线性冗余特征,压缩特征维度。
2.4.2 五步标准流程
- 数据中心化:所有特征减去自身均值;
- 计算协方差矩阵,表征特征间线性相关性;
- 协方差矩阵特征值分解;
- 特征值从大到小排序,选取前k个特征向量构成投影矩阵;
- 原始数据×投影矩阵,得到降维后数据。
2.4.3 代码+误区
from sklearn.decomposition import PCA
# n_components填小数=保留信息占比,整数=目标维度
pca = PCA(n_components=0.95,random_state=42)
X_pca = pca.fit_transform(X)
print(pca.explained_variance_ratio_) # 各维度信息占比
误区:PCA只能消除线性冗余,非线性关联无法处理,非线性降维选用t-SNE、LLE;
【DL关联】高维图像数据集预处理、特征压缩,常先用PCA降维后送入全连接网络。
三、五大核心监督算法(研0深度学习必吃透,每个都是神经网络的组件原型)
3.1 线性回归(对应:无激活全连接层)
3.1.1 模型表达式
y^=w0+w1x1+...+wnxn=wTx+b\hat y = w_0+w_1x_1+...+w_nx_n=\boldsymbol w^T\boldsymbol x+by^=w0+w1x1+...+wnxn=wTx+b
b=w0b=w_0b=w0偏置项,w\boldsymbol ww权重向量,拟合特征与连续标签的线性映射。
3.1.2 MSE损失函数
J(w)=1m∑i=1m(y^i−yi)2J(\boldsymbol w)=\frac1m\sum_{i=1}^m(\hat y_i-y_i)^2J(w)=m1i=1∑m(y^i−yi)2
m=样本总数,最小化预测与真实值平方误差均值。
3.1.3 两种最优解
- 闭式解析解(小数据集):直接数学求解,无需迭代
w=(XTX)−1XTy\boldsymbol w=(X^TX)^{-1}X^Tyw=(XTX)−1XTy - 梯度下降(大数据/深度学习通用)
wj:=wj−α⋅2m∑i=1m(y^i−yi)xijw_j:=w_j-\alpha \cdot \frac2m\sum_{i=1}^m(\hat y_i-y_i)x_{ij}wj:=wj−α⋅m2i=1∑m(y^i−yi)xij
α\alphaα学习率,控制参数更新步长。
3.1.4 代码+优缺点
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42)
lr = LinearRegression(fit_intercept=True)
lr.fit(X_train,y_train)
y_pred = lr.predict(X_test)
- 优点:可解释性极强、训练速度快、无超参数;
- 缺点:只能拟合线性关系、对异常值敏感。
【DL关联】PyTorch中nn.Linear(in_dim,out_dim)就是线性回归的数学实现,无激活函数等价单层线性回归。
3.2 逻辑回归(重中之重|对应:二分类网络Sigmoid输出层)
深度学习二分类任务的输出层原型,交叉熵损失、Sigmoid激活全部源自逻辑回归。
3.2.1 Sigmoid激活
σ(z)=11+e−z\sigma(z)=\frac1{1+e^{-z}}σ(z)=1+e−z1
把任意实数映射[0,1][0,1][0,1]概率,z=wTx+bz=\boldsymbol w^T\boldsymbol x+bz=wTx+b;
模型输出:y^=σ(wTx+b)\hat y=\sigma(\boldsymbol w^T\boldsymbol x+b)y^=σ(wTx+b);
决策边界:wTx+b=0\boldsymbol w^T\boldsymbol x+b=0wTx+b=0,默认0.5作为正负分类阈值。
3.2.2 交叉熵损失(DL分类通用损失)
J(w)=−1m∑i=1m[yilogy^i+(1−yi)log(1−y^i)]J(\boldsymbol w)=-\frac1m\sum_{i=1}^m\left[y_i\log\hat y_i+(1-y_i)\log(1-\hat y_i)\right]J(w)=−m1i=1∑m[yilogy^i+(1−yi)log(1−y^i)]
必考知识点:逻辑回归不用MSE的原因:MSE+Sigmoid组合极易出现梯度消失,交叉熵梯度稳定,便于梯度下降优化,深度学习分类任务统一沿用交叉熵损失。
3.2.3 代码
from sklearn.linear_model import LogisticRegression
# C越小,L2正则强度越大;max_iter增大保证收敛
log_reg = LogisticRegression(C=1.0,max_iter=1000,random_state=42)
log_reg.fit(X_train,y_train)
y_prob = log_reg.predict_proba(X_test) # 输出正负概率
y_pred = log_reg.predict(X_test)
和单层感知机区别:感知机阶跃函数不可微,只能硬分类无法梯度下降;逻辑回归Sigmoid可微、输出概率,是神经网络输出层原型。
3.3 SVM支持向量机(核函数=深度学习非线性映射思想)
3.3.1 核心思想
寻找间隔最大的分类超平面,最大化两类样本到超平面的最小距离,小样本、高维数据效果突出。
3.3.2 软间隔优化目标(工业常用,硬间隔现实几乎不用)
min12∣∣w∣∣2+C∑i=1nξi,ξi≥0\min \frac12||\boldsymbol w||^2+C\sum_{i=1}^n\xi_i,\quad \xi_i\ge0min21∣∣w∣∣2+Ci=1∑nξi,ξi≥0
ξi\xi_iξi松弛变量(允许少量样本错分);C惩罚系数,C越大越严苛、容错越低。
3.3.3 三大核函数(解决非线性分类)
- 线性核:K(xi,xj)=xiTxjK(x_i,x_j)=x_i^Tx_jK(xi,xj)=xiTxj,线性可分数据;
- 多项式核:K(xi,xj)=(γxiTxj+r)dK(x_i,x_j)=(\gamma x_i^Tx_j+r)^dK(xi,xj)=(γxiTxj+r)d,低维非线性;
- RBF高斯核:K(xi,xj)=exp(−γ∣∣xi−xj∣∣2)K(x_i,x_j)=exp(-\gamma||x_i-x_j||^2)K(xi,xj)=exp(−γ∣∣xi−xj∣∣2),通用万能核。
【DL关联】核函数本质是隐式高维非线性映射,神经网络通过多层激活堆叠显式实现非线性映射,是核技巧的工程落地升级版。
from sklearn.svm import SVC
svm = SVC(kernel="rbf",C=1.0,gamma="scale")
svm.fit(X_train,y_train)
3.4 决策树+集成学习(Bagging/Boosting)
3.4.1 决策树三大分裂准则
- ID3:信息增益,偏向取值多的特征;
- C4.5:信息增益率,惩罚多取值特征,修正ID3缺陷;
- CART:基尼系数(分类)/MSE(回归),二叉分裂,sklearn默认。
3.4.2 防过拟合:预剪枝+后剪枝
- 预剪枝:训练时限制max_depth、min_samples_split,提前停止分裂;
- 后剪枝:完整训练树后自底向上删除冗余子树。
from sklearn.tree import DecisionTreeClassifier
dt = DecisionTreeClassifier(max_depth=5,min_samples_split=10,min_samples_leaf=2)
dt.fit(X_train,y_train)
3.4.3 集成两大分支(DL多分支网络思想来源)
- Bagging(并行集成→随机森林)
Bootstrap有放回采样生成多份数据集,并行训练多棵决策树,投票/平均融合,降低方差、抑制过拟合。
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=100,n_jobs=-1)
rf.fit(X_train,y_train)
- Boosting(串行集成→GBDT/XGB)
串行迭代,后序模型拟合前一轮残差、修正错误样本,持续降低偏差、提升精度;XGB/LGB在GBDT基础上加正则、并行优化。
from sklearn.ensemble import GradientBoostingClassifier
gbdt = GradientBoostingClassifier(n_estimators=100,learning_rate=0.1)
gbdt.fit(X_train,y_train)
【DL关联】多分支CNN、残差网络、模型融合思路均来自集成学习。
3.5 KNN近邻算法(距离思想用于深度学习度量学习)
- 原理:惰性学习无训练阶段,预测时找距离最近k个样本投票;欧氏距离(常规数据)、曼哈顿距离(高维稀疏);
- k取值:k过小→过拟合,k过大→欠拟合;
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=5,weights="distance")
knn.fit(X_train,y_train)
【DL关联】人脸识别、度量学习任务依托样本距离思想。
四、模型评估与数据集划分(DL训练必用评价指标)
4.1 二分类混淆矩阵(图像分类、医疗AI全场景)
| 真实\预测 | 预测正例 | 预测负例 |
|---|---|---|
| 真实正例 | TP真正例 | FN假负例 |
| 真实负例 | FP假正例 | TN真负例 |
四大分类指标
- 精确率P=TPTP+FPP=\frac{TP}{TP+FP}P=TP+FPTP:严控误报(风控、垃圾邮件),防止正常样本误判;
- 召回率R=TPTP+FNR=\frac{TP}{TP+FN}R=TP+FNTP:严控漏检(肿瘤筛查、故障检测),保证全部阳性检出;
- F1=2PRP+RF1=\frac{2PR}{P+R}F1=P+R2PR:PR调和平均,均衡两个指标;
- AUC:ROC曲线下面积,样本不均衡首选评价指标。
4.2 回归四大指标
- MAE:MAE=1m∑∣y−y^∣MAE=\frac1m\sum|y-\hat y|MAE=m1∑∣y−y^∣,抗异常;
- MSE:MSE=1m∑(y−y^)2MSE=\frac1m\sum(y-\hat y)^2MSE=m1∑(y−y^)2,放大异常误差;
- RMSE=MSE\sqrt{MSE}MSE,和原始数据单位一致;
- R2R^2R2:越接近1,模型拟合效果越好。
4.3 交叉验证(DL划分训练/验证集的底层逻辑)
- 5折/10折交叉验证:数据集均分k份,轮流1份验证、剩余训练,取平均分数,规避单次划分随机性;
- 留一法LOOCV:k=样本总数,仅小样本使用;
from sklearn.model_selection import cross_val_score
scores = cross_val_score(lr,X,y,cv=5,scoring="r2")
print(scores.mean())
【DL关联】深度学习固定划分train/val/test三集,就是交叉验证的简化落地。
五、正则化&梯度优化(深度学习优化器、权重衰减全部出自本节)
5.1 L1/L2/弹性网正则
(1)L1(Lasso):L=λ∑∣wj∣L=\lambda\sum|w_j|L=λ∑∣wj∣
特性:生成稀疏权重,无效特征权重压缩至0,自带特征筛选;
稀疏原理:L1惩罚等值线菱形,和损失等高线极易相切于坐标轴,权重归零。
(2)L2(Ridge):L=λ∑wj2L=\lambda\sum w_j^2L=λ∑wj2
特性:均匀缩小所有权重,不会置零,深度学习Weight Decay权重衰减就是L2正则,工业最常用。
(3)ElasticNet:L1+L2组合,解决高相关特征下L1随机选特征问题。
5.2 梯度下降三大变体(Adam/SGD优化器前身)
| 算法 | 使用样本量 | 收敛特点 | 使用场景 | DL选用 |
|---|---|---|---|---|
| BGD批量 | 全量样本 | 平稳收敛、速度慢 | 小数据集 | 极少用 |
| SGD随机 | 单个样本 | 震荡、收敛快、易跳出局部最优 | 在线学习 | 早期优化器原型 |
| Mini-Batch | 32/64/128小批量 | 收敛稳+速度均衡 | 绝大多数场景 | 深度学习默认训练方式 |
| 【DL关联】Adam、RMSprop、Nadam都是基于Mini-Batch梯度下降改进而来。 |
六、无监督学习精简(仅保留DL高频:K-Means)
6.1 K-Means迭代步骤
- 随机初始化k个聚类中心点;
- 所有样本划分至距离最近的簇;
- 每个簇重新计算均值作为新中心;
- 迭代直至中心点不再变动。
6.2 K值选取
肘部法则(SSE拐点)、轮廓系数、Gap统计量。
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3,n_init="auto",random_state=42)
label = kmeans.fit_predict(X)
【DL关联】图像聚类、无监督预训练、数据集类别筛选。
6.2 DBSCAN补充
无需指定k,自动识别噪声、不规则形状聚类,异常检测深度学习预处理使用。
七、ML→DL完整对应对照表(研0核心桥梁,学完直接衔接神经网络)
| 机器学习知识点 | 深度学习对应模块 | 内在关联说明 |
|---|---|---|
| 线性回归 | 无激活全连接层nn.Linear |
网络基础运算单元,加权求和逻辑完全一致 |
| 逻辑回归 | Sigmoid输出层(二分类) | 二分类网络最后一层=逻辑回归,损失共用交叉熵 |
| L2正则 | RMSprop/Adam的Weight Decay | 权重衰减本质就是在损失中添加L2惩罚项 |
| Mini-Batch梯度下降 | 深度学习训练标配 | 所有框架默认小批量迭代训练 |
| 手工特征工程 | CNN/RNN/Transformer自动特征提取 | ML人工设计特征,DL网络逐层自主学习特征 |
| 集成学习思想 | 多分支网络、残差结构 | 多模型融合→多分支网络互补提取特征 |
| K-Means聚类 | 无监督预训练、聚类式表征学习 | 用聚类标签辅助深度学习半监督训练 |
| 过拟合处理方案 | Dropout、BN、早停、数据增强 | 全部源自传统机器学习防过拟合思路 |
终极结论:MLP多层感知机 = 多层逻辑回归堆叠 + 非线性激活函数 + 反向传播链式求导,是传统机器学习通往深度学习的唯一桥梁。
八、研0高频面试10题(满分标准答案,可直接背诵)
- L1为什么产生稀疏权重,L2不会?
答:L1正则惩罚几何轮廓是菱形,和损失函数等高线相交大概率落在坐标轴,对应参数置零;L2是圆形轮廓,切点几乎不在坐标轴,仅缩放权重大小,无法归零。 - 逻辑回归为什么不用MSE改用交叉熵?
答:Sigmoid激活搭配MSE损失,导数会出现梯度饱和、梯度消失,无法有效更新参数;交叉熵的梯度和误差线性相关,梯度稳定,利于梯度下降收敛。 - 欠拟合和过拟合分别怎么处理(ML+DL双版本)?
答:欠拟合:加特征、加深模型、减小正则;过拟合:扩充数据、L1/L2、剪枝;DL额外:Dropout、BN、数据增强、早停。 - 精确率和召回率适用场景?
答:精确率优先风控、反垃圾(防误判正常样本);召回优先医疗病灶检测、故障识别(不漏检阳性样本)。 - BGD/SGD/Mini-Batch区别,深度学习为什么用小批量?
答:BGD全样本稳但慢;SGD单样本快但震荡;Mini-Batch兼顾收敛稳定性与训练速度,平衡硬件显存占用,是深度学习工业标配。 - Bagging和Boosting核心区别?
答:Bagging并行训练、通过平均降低方差防过拟合(随机森林);Boosting串行迭代、修正前序误差降低偏差(GBDT)。 - 标准化和归一化什么时候用?
答:标准化用于全连接网络、结构化数据;归一化仅限图像像素压缩至0~1,树模型两种缩放都不需要。 - 偏差方差权衡怎么落地调参?
答:高偏差→加模型复杂度、减正则;高方差→扩充数据集、加强正则、剪枝/降维,不断迭代找到总误差最低点。 - PCA适用和局限?
答:适用:去除线性冗余、数据集降维预处理;局限:无法处理非线性特征关联,非线性降维选t-SNE。 - 机器学习如何过渡深度学习?
答:从单层逻辑回归出发,堆叠多层隐藏层+ReLU等非线性激活,搭配反向传播算法,得到MLP全连接网络,在此基础上衍生CNN、RNN、Transformer。
九、研07天学习规划(稳步吃透本篇,7天后上手PyTorch)
- 第1~3天:吃透基础概念+数据预处理,逐个运行全部示例代码,弄懂线性、逻辑回归公式推导、梯度下降迭代过程;
- 第4~5天:正则、评估指标、集成算法,在鸢尾花数据集跑完整训练全流程:数据清洗→预处理→训练→验证调参;
- 第6~7天:对照ML-DL对照表,用PyTorch搭建单层逻辑回归、简易MLP,打通传统算法到神经网络的代码链路。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)