机器学习算法核心总结
引言
机器学习算法是人工智能的核心工具,但面对众多模型时,如何快速掌握其核心逻辑、关键参数与应用场景?本文在经典框架基础上,补充每个算法的核心知识点、关键参数、常见问题及调参技巧,帮助读者从“知道”到“精通”。
一、监督学习:从标签中“学习”规律
1. 回归算法
线性回归(Linear Regression)
核心知识点:
- 数学形式:y=wTx+by = w^Tx + by=wTx+b,目标是最小化均方误差(MSE)损失:L(w,b)=1N∑i=1N(yi−(wTxi+b))2L(w,b) = \frac{1}{N}\sum_{i=1}^N (y_i - (w^Tx_i + b))^2L(w,b)=N1∑i=1N(yi−(wTxi+b))2。
- 求解方法:最小二乘法(闭式解,当XTXX^TXXTX满秩时可逆)或梯度下降(适用于大数据)。
- 假设检验:通过t检验判断系数www是否显著非零(H0:w=0H_0: w=0H0:w=0),用于特征重要性初步筛选。
核心参数:
- 无显式超参数(基础版),但可通过正则化扩展(见岭回归)。
注意事项:
- 对异常值敏感(平方项放大误差),需先做数据清洗;
- 特征需标准化(否则系数大小无法直接比较重要性);
- 多重共线性会导致系数估计方差大(可用VIF方差膨胀因子检测)。
岭回归(Ridge Regression)与Lasso
核心知识点:
- 岭回归:在MSE损失中加入L2正则项α∥w∥2\alpha\|w\|^2α∥w∥2,解决多重共线性(XTXX^TXXTX非满秩时仍可解);
- Lasso:加入L1正则项α∥w∥1\alpha\|w\|_1α∥w∥1,利用L1范数的稀疏性自动筛选特征(部分系数变为0);
- 弹性网络(Elastic Net):结合L1与L2正则,平衡特征选择与系数平滑。
核心参数:
- α\alphaα(正则化强度):α\alphaα越大,模型越简单(防止过拟合);通过交叉验证(如GridSearchCV)选择最优值。
注意事项:
- 岭回归系数非零,无法直接做特征选择;Lasso更适合高维稀疏数据(如文本);
- 正则化对特征尺度敏感,需先标准化特征(否则大尺度特征主导正则项)。
2. 分类算法
逻辑回归(Logistic Regression)
核心知识点:
- 数学形式:通过Sigmoid函数σ(z)=11+e−z\sigma(z) = \frac{1}{1+e^{-z}}σ(z)=1+e−z1将线性输出z=wTx+bz=w^Tx+bz=wTx+b映射到概率p(y=1∣x)=σ(z)p(y=1|x) = \sigma(z)p(y=1∣x)=σ(z);
- 损失函数:交叉熵损失L(w,b)=−1N∑i=1N[yilog(pi)+(1−yi)log(1−pi)]L(w,b) = -\frac{1}{N}\sum_{i=1}^N [y_i\log(p_i) + (1-y_i)\log(1-p_i)]L(w,b)=−N1∑i=1N[yilog(pi)+(1−yi)log(1−pi)];
- 正则化:与线性回归类似,可通过L1/L2正则控制复杂度。
核心参数:
- CCC(正则化强度的倒数):CCC越小,正则化越强(sklearn中默认L2L2L2正则);
penalty
:选择l1
或l2
正则;class_weight
:调整类别权重(如处理不平衡数据,设置balanced
自动按类别频率反比加权)。
注意事项:
- 对非线性关系需手动构造特征(如多项式项、交互项);
- 特征需标准化(否则梯度下降收敛慢);
- 类别不平衡时,需结合
class_weight
或过采样(SMOTE)。
支持向量机(SVM)
核心知识点:
- 硬间隔SVM:寻找最大间隔超平面,数学形式为maxw,b2∥w∥\max_{w,b} \frac{2}{\|w\|}maxw,b∥w∥2,约束yi(wTxi+b)≥1y_i(w^Tx_i + b) \geq 1yi(wTxi+b)≥1;
- 软间隔SVM:引入松弛变量ξi≥0\xi_i \geq 0ξi≥0,允许部分样本违反约束,损失函数为12∥w∥2+C∑ξi\frac{1}{2}\|w\|^2 + C\sum\xi_i21∥w∥2+C∑ξi(CCC为惩罚参数);
- 核技巧:通过核函数k(xi,xj)=ϕ(xi)Tϕ(xj)k(x_i,x_j) = \phi(x_i)^T\phi(x_j)k(xi,xj)=ϕ(xi)Tϕ(xj)将低维数据映射到高维空间,常用核函数:
- 线性核(无映射,适用于线性可分);
- 多项式核(k(xi,xj)=(xiTxj+c)dk(x_i,x_j)=(x_i^Tx_j + c)^dk(xi,xj)=(xiTxj+c)d,ddd为阶数);
- 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),γ\gammaγ控制核宽度)。
核心参数:
- CCC(惩罚参数):CCC越大,对错误样本惩罚越重(易过拟合);
- γ\gammaγ(仅RBF核):γ\gammaγ越大,模型越关注局部样本(易过拟合);
kernel
:选择核函数类型;degree
(多项式核):阶数ddd(通常取2-3,高阶易过拟合)。
注意事项:
- 计算复杂度高(O(N3)O(N^3)O(N3)),不适用于大规模数据(N>105N>10^5N>105时推荐线性SVM);
- 核函数选择依赖经验(RBF核是最常用的通用选择);
- 需标准化特征(核函数对尺度敏感)。
决策树与集成树模型
决策树(Decision Tree)
核心知识点:
- 分裂准则:
- ID3:信息增益(Gain(D,A)=Entropy(D)−∑v=1V∣Dv∣∣D∣Entropy(Dv)Gain(D,A) = Entropy(D) - \sum_{v=1}^V \frac{|D_v|}{|D|}Entropy(D_v)Gain(D,A)=Entropy(D)−∑v=1V∣D∣∣Dv∣Entropy(Dv));
- C4.5:信息增益比(解决ID3对取值多的特征偏好,GainRatio(D,A)=Gain(D,A)IV(A)GainRatio(D,A) = \frac{Gain(D,A)}{IV(A)}GainRatio(D,A)=IV(A)Gain(D,A),IV(A)IV(A)IV(A)为特征A的固有值);
- CART:基尼系数(Gini(D)=1−∑k=1Kpk2Gini(D) = 1 - \sum_{k=1}^K p_k^2Gini(D)=1−∑k=1Kpk2,分裂后Gini(D,A)=∣D1∣∣D∣Gini(D1)+∣D2∣∣D∣Gini(D2)Gini(D,A) = \frac{|D_1|}{|D|}Gini(D_1) + \frac{|D_2|}{|D|}Gini(D_2)Gini(D,A)=∣D∣∣D1∣Gini(D1)+∣D∣∣D2∣Gini(D2))。
- 剪枝:预剪枝(提前停止分裂,如限制树深度) vs 后剪枝(生成完整树后剪去冗余分支,如错误率降低剪枝)。
核心参数(以CART为例):
max_depth
:树的最大深度(限制过拟合,常用调参);min_samples_split
:节点分裂所需最小样本数(默认2,增大可防止过拟合);min_samples_leaf
:叶子节点最小样本数(默认1,增大可平滑模型);ccp_alpha
:代价复杂度参数(控制剪枝力度,越大树越简单)。
注意事项:
- 单棵决策树易过拟合(需剪枝或集成);
- 对缺失值和类别特征友好(如C4.5支持缺失值处理,CART支持类别特征);
- 特征重要性可通过分裂时的信息增益或基尼系数减少量计算。
随机森林(Random Forest)
核心知识点:
- Bagging集成:并行训练多棵决策树(基学习器),每棵树基于随机采样数据子集(自助采样,Bootstrap)和随机采样特征子集(如n\sqrt{n}n个特征);
- 预测规则:分类投票,回归平均;
- OOB样本(Out-of-Bag):未被选中的样本(约36.8%),可用于无验证集的泛化误差估计。
核心参数:
n_estimators
:树的数量(越多模型越稳定,计算成本越高,默认100);max_features
:每棵树分裂时的特征子集大小(可选sqrt
、log2
或固定值,影响多样性);max_depth
:单棵树的最大深度(同决策树);oob_score
:是否使用OOB样本评估(默认False,开启可节省验证时间)。
注意事项:
- 对高维稀疏数据(如文本)效果可能不如线性模型;
- 可解释性差(无法直接可视化全局规则);
- 计算成本较高(需并行化加速,sklearn中
n_jobs=-1
使用所有CPU)。
梯度提升树(GBT,以XGBoost为例)
核心知识点:
- Boosting集成:串行训练弱学习器(通常为CART树),每棵树纠正前序模型的残差(或损失函数的梯度);
- 目标函数:Obj(θ)=∑i=1Nl(yi,y^i)+∑k=1KΩ(fk)Obj(\theta) = \sum_{i=1}^N l(y_i, \hat{y}_i) + \sum_{k=1}^K \Omega(f_k)Obj(θ)=∑i=1Nl(yi,y^i)+∑k=1KΩ(fk),其中Ω(fk)=γT+12λ∥w∥2\Omega(f_k) = \gamma T + \frac{1}{2}\lambda\|w\|^2Ω(fk)=γT+21λ∥w∥2为正则项(TTT为叶子节点数,www为叶子权重);
- 优化方法:二阶泰勒展开近似损失函数,贪心算法寻找最优分裂(类似决策树,但加入正则项)。
核心参数:
learning_rate
(η\etaη):学习率(收缩每棵树的贡献,防止过拟合,默认0.3);n_estimators
:树的数量(需与学习率权衡,常用“早停法”确定最优值);max_depth
:单棵树的最大深度(默认6,小深度可防过拟合);subsample
:样本子采样比例(默认1,小于1增加随机性);colsample_bytree
:特征子采样比例(默认1,类似随机森林的特征随机);reg_lambda
(λ\lambdaλ):权重正则化系数(默认1);reg_alpha
(α\alphaα):叶子节点数正则化系数(默认0)。
注意事项:
- 对缺失值自动处理(分裂时计算左右子树的损失,选择最优方向);
- 计算效率高(基于直方图的近似分裂,如LightGBM进一步优化);
- 超参数敏感(需调参优化,推荐使用Optuna、Hyperopt等工具)。
3. 其他监督学习算法
K近邻(KNN)
核心知识点:
- 距离度量:欧氏距离(d(x,y)=∑(xi−yi)2d(x,y)=\sqrt{\sum(x_i-y_i)^2}d(x,y)=∑(xi−yi)2)、曼哈顿距离(d(x,y)=∑∣xi−yi∣d(x,y)=\sum|x_i-y_i|d(x,y)=∑∣xi−yi∣)、余弦相似度(cosθ=xTy∥x∥∥y∥\cos\theta = \frac{x^Ty}{\|x\|\|y\|}cosθ=∥x∥∥y∥xTy);
- 投票策略:分类用多数投票,回归用均值;加权投票(距离越近权重越高,wi=1d(x,xi)+ϵw_i = \frac{1}{d(x,x_i)+\epsilon}wi=d(x,xi)+ϵ1)。
核心参数:
n_neighbors
(K值):K太小易过拟合(噪声敏感),太大易欠拟合(平滑过度);通过交叉验证或肘部法选择;weights
:uniform
(等权)或distance
(距离加权);p
:距离度量的幂次(p=1p=1p=1曼哈顿,p=2p=2p=2欧氏)。
注意事项:
- 计算复杂度高(O(N)O(N)O(N)预测时间),不适用于大规模数据(可结合KD树、球树优化,但高维失效);
- 高维数据需降维(如PCA)或特征选择(缓解维度灾难);
- 特征需标准化(否则尺度大的特征主导距离计算)。
朴素贝叶斯(Naive Bayes)
核心知识点:
- 贝叶斯定理:P(Y=k∣X=x)=P(X=x∣Y=k)P(Y=k)P(X=x)P(Y=k|X=x) = \frac{P(X=x|Y=k)P(Y=k)}{P(X=x)}P(Y=k∣X=x)=P(X=x)P(X=x∣Y=k)P(Y=k),其中P(X=x∣Y=k)P(X=x|Y=k)P(X=x∣Y=k)由“朴素”假设(特征条件独立)分解为∏i=1nP(Xi=xi∣Y=k)\prod_{i=1}^n P(X_i=x_i|Y=k)∏i=1nP(Xi=xi∣Y=k);
- 常见变体:
- 高斯朴素贝叶斯(连续特征,假设P(Xi=xi∣Y=k)∼N(μk,i,σk,i2)P(X_i=x_i|Y=k) \sim N(\mu_{k,i}, \sigma_{k,i}^2)P(Xi=xi∣Y=k)∼N(μk,i,σk,i2));
- 多项式朴素贝叶斯(文本计数特征,用多项式分布建模);
- 伯努利朴素贝叶斯(二值特征,用伯努利分布建模)。
核心参数:
alpha
(拉普拉斯平滑参数):防止类别或特征的条件概率为0(默认1.0,越大平滑越强);fit_prior
:是否学习类别先验概率(默认True,否则用均匀分布)。
注意事项:
- “朴素”假设常不成立(特征间可能存在依赖),但实际中仍能取得不错效果(如文本分类);
- 对输入特征分布敏感(如高斯朴素贝叶斯假设正态分布);
- 适用于小样本、高维数据(如垃圾邮件过滤)。
二、无监督学习:从数据中“发现”结构
1. 聚类算法
K-means
核心知识点:
- 目标函数(类内平方和):J=∑k=1K∑xi∈Ck∥xi−μk∥2J = \sum_{k=1}^K \sum_{x_i \in C_k} \|x_i - \mu_k\|^2J=∑k=1K∑xi∈Ck∥xi−μk∥2,其中μk\mu_kμk为簇CkC_kCk的均值;
- 优化步骤(Lloyd算法):初始化中心→分配样本到最近中心→更新中心→重复至收敛;
- K-means++:改进初始化(后续中心与已选中心尽可能远),减少迭代次数。
核心参数:
n_clusters
(K值):通过肘部法(SSE随K变化的拐点)或轮廓系数(s(i)=b(i)−a(i)max(a(i),b(i))s(i) = \frac{b(i)-a(i)}{\max(a(i),b(i))}s(i)=max(a(i),b(i))b(i)−a(i),a(i)a(i)a(i)为样本i到同簇其他样本的平均距离,b(i)b(i)b(i)为到最近异簇样本的平均距离)选择;init
:k-means++
(默认)或random
(随机初始化);max_iter
:最大迭代次数(默认300)。
注意事项:
- 对初始中心敏感(K-means++可缓解);
- 无法处理非凸形状簇(如环形);
- 需标准化特征(否则尺度大的特征主导距离计算)。
DBSCAN
核心知识点:
- 核心概念:
- ε-邻域:样本xxx的ε-邻域为{y∣∥x−y∥≤ε}\{y | \|x-y\| \leq \varepsilon\}{y∣∥x−y∥≤ε};
- 核心对象:ε-邻域内样本数≥
min_samples
; - 密度直达:若xxx是核心对象,yyy在xxx的ε-邻域内,则yyy由xxx密度直达;
- 密度可达:通过一系列密度直达样本连接;
- 算法流程:标记核心对象→从核心对象出发扩展簇→未访问的非核心对象标记为噪声。
核心参数:
eps
(ε):邻域半径(关键参数,可通过k-distance图确定:计算每个样本到第k近邻的距离,排序后找拐点);min_samples
:核心对象的最小邻域样本数(默认min_samples=2*维度
);metric
:距离度量(默认欧氏距离,文本可用余弦相似度)。
注意事项:
- 对密度差异大的数据效果差(如同时存在密集簇和稀疏簇);
- 高维数据中距离度量失效(需降维或使用特定度量);
- 噪声点需结合业务场景处理(如异常检测)。
2. 降维算法
PCA(主成分分析)
核心知识点:
- 数学原理:通过正交变换将原始特征xxx投影到主成分z=WTxz = W^Txz=WTx,其中WWW的列是协方差矩阵Σ=1NXTX\Sigma = \frac{1}{N}X^TXΣ=N1XTX的特征向量,特征值λi\lambda_iλi表示主成分的方差贡献;
- 方差解释率:前k个主成分的累计方差贡献率∑i=1kλi∑i=1dλi\frac{\sum_{i=1}^k \lambda_i}{\sum_{i=1}^d \lambda_i}∑i=1dλi∑i=1kλi(通常保留80%-95%);
- 核PCA:通过核函数处理非线性数据(如RBF核)。
核心参数:
n_components
:保留的主成分数量(可设为整数、浮点数(方差解释率阈值)或mle
(自动选择));svd_solver
:奇异值分解求解器(auto
、full
、arpack
、randomized
,大数据推荐randomized
)。
注意事项:
- 仅捕捉线性关系(非线性结构需用核PCA或t-SNE);
- 对异常值敏感(需先做异常检测);
- 主成分无明确物理意义(仅用于降维)。
t-SNE
核心知识点:
- 目标函数:最小化高维空间与低维空间的KL散度(KL(P∣∣Q)=∑i≠jpijlogpijqijKL(P||Q) = \sum_{i\neq j} p_{ij}\log\frac{p_{ij}}{q_{ij}}KL(P∣∣Q)=∑i=jpijlogqijpij),其中pijp_{ij}pij为高维空间中样本i,j的相似性(基于t分布),qijq_{ij}qij为低维空间的相似性;
- 困惑度(Perplexity):Perp(Pi)=2H(Pi)Perp(P_i) = 2^{H(P_i)}Perp(Pi)=2H(Pi),H(Pi)H(P_i)H(Pi)为样本i的条件熵,控制邻域大小的平滑度(常用5-50,默认30)。
核心参数:
perplexity
:困惑度(关键参数,影响局部与全局结构的平衡);n_iter
:最大迭代次数(默认1000,需足够大以收敛);learning_rate
:学习率(默认200,过大易发散,过小收敛慢)。
注意事项:
- 计算复杂度高(O(N2)O(N^2)O(N2)),仅适用于小样本(N<104N<10^4N<104);
- 结果具有随机性(需多次运行取平均);
- 不可逆(低维到高维无法还原)。
三、半监督学习与强化学习:拓展传统边界
1. 半监督学习
核心知识点:
- 自训练(Self-training):用标签数据训练模型→预测无标签数据→选择高置信度样本加入标签数据→迭代训练;
- 图半监督(Label Propagation):构建样本相似性图(边权重Wij=exp(−∥xi−xj∥22σ2)W_{ij} = \exp(-\frac{\|x_i-x_j\|^2}{2\sigma^2})Wij=exp(−2σ2∥xi−xj∥2)),通过迭代更新标签概率(f(t+1)=αD−1Wf(t)+(1−α)yf^{(t+1)} = \alpha D^{-1}W f^{(t)} + (1-\alpha)yf(t+1)=αD−1Wf(t)+(1−α)y,DDD为度矩阵,yyy为初始标签)。
注意事项:
- 自训练可能放大噪声(需设置严格的置信度阈值);
- 图半监督的边权重计算耗时(大规模数据需近似)。
2. 强化学习
核心知识点:
- 马尔可夫决策过程(MDP):状态sss、动作aaa、奖励rrr、转移概率P(s′∣s,a)P(s'|s,a)P(s′∣s,a)、折扣因子γ\gammaγ;
- Q-learning:离线策略,更新Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)]Q(s,a) \leftarrow Q(s,a) + \alpha[r + \gamma\max_{a'}Q(s',a') - Q(s,a)]Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)];
- 策略梯度(REINFORCE):通过蒙特卡洛估计梯度∇θJ(θ)≈E[∑t∇θlogπθ(at∣st)Rt]\nabla_\theta J(\theta) \approx \mathbb{E}[\sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) R_t]∇θJ(θ)≈E[∑t∇θlogπθ(at∣st)Rt];
- DQN(深度Q网络):用神经网络近似QQQ函数,结合经验回放(Experience Replay)和目标网络(Target Network)稳定训练。
注意事项:
- 样本效率低(需大量交互数据,可通过模仿学习或离线强化学习缓解);
- 超参数敏感(学习率、折扣因子γ\gammaγ、经验回放容量等);
- 稳定性挑战(如DQN的过估计问题,可用双DQN(Double DQN)改进)。
四、算法选择与未来趋势
1. 如何选择算法?
- 小数据+可解释性:逻辑回归、决策树;
- 大数据+高精度:LightGBM、XGBoost;
- 非线性+高维:核SVM、随机森林、深度学习;
- 无标签数据:K-means(聚类)、自训练(半监督);
- 序列决策:PPO、DQN(强化学习)。
2. 未来趋势
- 小样本学习:元学习(Meta Learning)、提示学习(Prompt Learning)减少标注需求;
- 可解释性增强:SHAP值、LIME局部解释工具普及;
- 多模态学习:融合文本、图像、语音的跨模态模型(如CLIP、GPT-多模态);
- 自动机器学习(AutoML):端到端解决特征工程、模型选择、调参(如H2O.ai、AutoKeras)。
结语
机器学习算法的核心是“用数据优化模型,用模型解决问题”。掌握每个算法的数学原理、核心参数、适用场景,并结合实际问题调优,才能在AI浪潮中游刃有余。未来,算法的边界将持续拓展,但“理解问题-选择模型-验证效果”的底层逻辑始终不变。