机器学习算法核心总结

引言

机器学习算法是人工智能的核心工具,但面对众多模型时,如何快速掌握其核心逻辑、关键参数与应用场景?本文在经典框架基础上,补充每个算法的核心知识点、关键参数、常见问题及调参技巧,帮助读者从"知道"到"精通"。


一、监督学习:从标签中"学习"规律


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:选择l1l2正则;
  • class_weight:调整类别权重(如处理不平衡数据,设置balanced自动按类别频率反比加权)。

注意事项

  • 对非线性关系需手动构造特征(如多项式项、交互项);
  • 特征需标准化(否则梯度下降收敛慢);
  • 类别不平衡时,需结合class_weight或过采样(SMOTE)。

支持向量机(SVM)

核心知识点

  • 硬间隔SVM:寻找最大间隔超平面,数学形式为max⁡w,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:每棵树分裂时的特征子集大小(可选sqrtlog2或固定值,影响多样性);
  • 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太小易过拟合(噪声敏感),太大易欠拟合(平滑过度);通过交叉验证或肘部法选择;
  • weightsuniform(等权)或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)为到最近异簇样本的平均距离)选择;
  • initk-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:奇异值分解求解器(autofullarpackrandomized,大数据推荐randomized)。

注意事项

  • 仅捕捉线性关系(非线性结构需用核PCA或t-SNE);
  • 对异常值敏感(需先做异常检测);
  • 主成分无明确物理意义(仅用于降维)。

t-SNE

核心知识点

  • 目标函数:最小化高维空间与低维空间的KL散度(KL(P∣∣Q)=∑i≠jpijlog⁡pijqijKL(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+γmax⁡a′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浪潮中游刃有余。未来,算法的边界将持续拓展,但"理解问题-选择模型-验证效果"的底层逻辑始终不变。

相关推荐
NuyoahC5 分钟前
笔试——Day43
c++·算法·笔试
Black_Rock_br21 分钟前
本地部署的终极多面手:Qwen2.5-Omni-3B,视频剪、音频混、图像生、文本写全搞定
人工智能·音视频
2301_8219199227 分钟前
决策树8.19
算法·决策树·机器学习
用什么都重名30 分钟前
《GPT-OSS 模型全解析:OpenAI 回归开源的 Mixture-of-Experts 之路》
人工智能·大模型·openai·gpt-oss
秋难降43 分钟前
别再用暴力排序了!大小顶堆让「取极值」效率飙升至 O (log n)
python·算法·排序算法
CV-杨帆1 小时前
使用LLaMA-Factory的数据集制作流程与训练微调Qwen3及评估
人工智能
龙腾亚太1 小时前
基于深度强化学习的无人机自主感知−规划−控制策略
机器学习·无人机·强化学习·深度强化学习
AI决策者洞察1 小时前
Vibe Coding(氛围编程):把代码交给 AI 的瞬间,也交出了未来的维护权——慢慢学AI162
人工智能
德育处主任1 小时前
终结开发混乱,用 Amazon Q 打造AI助手
人工智能·aigc