Machine Learning: 十大基本机器学习算法

发布于:2025-03-13 ⋅ 阅读:(12) ⋅ 点赞:(0)

机器学习算法分类:监督学习、无监督学习、强化学习

基本的机器学习算法:

        线性回归、支持向量机(SVM)、最近邻居(KNN)、逻辑回归、决策树、k平均、随机森林、朴素贝叶斯、降维、梯度增强。

机器学习算法大致可以分为三类:

  • 监督学习算法 (Supervised Algorithms):   在监督学习训练过程中,可以由训练数据集学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。该算法要求特定的输入/输出,首先需要决定使用哪种数据作为范例。例如,文字识别应用中一个手写的字符,或一行手写文字。主要算法包括神经网络、支持向量机、最近邻居法、朴素贝叶斯法、决策树等。
  • 无监督学习算法 (Unsupervised Algorithms):    这类算法没有特定的目标输出,算法将数据集分为不同的组。
  • 强化学习算法 (Reinforcement Algorithms):   强化学习普适性强,主要基于决策进行训练,算法根据输出结果(决策)的成功或错误来训练自己,通过大量经验训练优化后的算法将能够给出较好的预测。类似有机体在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。

【一句话总结】
         监督学习:跟着老师学(有标准答案)
        无监督学习:自己找规律(无标准答案)
        强化学习:边玩边学(用奖惩调参数)


1. 线性回归算法 Linear Regression

        回归分析(Regression Analysis)是统计学的数据分析方法,目的在于了解两个或多个变量间是否相关、相关方向与强度,并建立数学模型以便观察特定变量来预测其它变量的变化情况。

      线性回归算法(Linear Regression)的建模过程就是使用数据点来寻找最佳拟合线。

2. 支持向量机算法(Support Vector Machine,SVM)

        支持向量机/网络算法(SVM)属于分类型算法。SVM模型将实例表示为空间中的点,将使用一条直线分隔数据点。需要注意的是,支持向量机需要对输入数据进行完全标记,仅直接适用于两类任务,应用将多类任务需要减少到几个二元问题。   尤其在二分类任务中效果显著。

原理:寻找最优超平面,最大化不同类别数据间的间隔。通过核函数(如高斯核)将数据映射到高维空间解决非线性问题。

3. 最近邻居/k-近邻算法 (K-Nearest Neighbors,KNN)

       KNN算法基于一个非常直观的思想:对于一个未知类别的数据点,可以通过查看它在特征空间中距离最近的K个邻居的类别或数值信息,来决定该数据点的类别或预测其值。

曼哈顿距离(街区距离):绝对值和,L1范数

欧氏距离(直线距离):平方和开方, L2范数

算法的主要步骤如下:

1. 计算距离:常用的距离度量方法有欧氏距离、曼哈顿距离等。对于一个待预测的数据点,计算它与训练集中所有数据点的距离。

2. 选择最近邻:根据计算得到的距离,选取距离最小的K个数据点

    ​优点:无需训练,简单直观,适合多分类问题


 最常用的「K 折交叉验证」步骤(以 5 折为例)

  1. 分块:把数据随机分成 5 份(每份叫「折」Fold)。
    (例:奶茶用户数据 1000 条 → 分 5 组,每组 200 条)
  2. 循环训练
    • 第 1 轮:用第 2-5 组(800 条)训练模型,测第 1 组(200 条)→ 得准确率 85%
    • 第 2 轮:用第 1,3-5 组训练,测第 2 组 → 得准确率 88%
    • ……(重复 5 次,每轮换不同的组当测试集)
  3. 汇总结果:5 次准确率的平均分(如 86.6%),作为模型真实水平。
1. k 越小:听「最铁邻居」的,可能踩坑
  • 例子:你选餐厅时,只问最近的 1 个邻居(k=1)。
    → 若邻居是素食者,ta推荐的素菜馆,可能不适合爱吃肉的你(过拟合,被局部噪声带偏)。
  • 优点:捕捉细节(比如小众宝藏店)。
  • 缺点:怕异常值(比如邻居那天心情不好乱推荐)。
  • 适合:数据干净、想保留细节的场景(如手写数字识别)。
2. k 越大:听「全班意见」,可能平庸
  • 例子:你问全班 50 个人(k=50),最终选了评分最高的连锁餐厅。
    → 虽然不踩雷,但可能错过你喜欢的特色小店(欠拟合,模糊了个体差异)。
  • 优点:抗噪声(少数差评被稀释)。
  • 缺点:忽略局部特征(比如你家楼下的隐藏好店)。
  • 适合:数据噪声大、想平滑结果的场景(如用户偏好预测)。

4. ​逻辑回归(Logistic Regression)​

原理:通过Sigmoid函数将线性组合映射到[0,1],输出概率值进行二分类,损失函数为交叉熵。参数估计使用最大似然法。

最大似然法:

最大似然法 =「数据侦探」  核心:根据结果反推最合理的「剧本」(参数)。

最大似然法是一种基于概率模型的参数估计方法,其核心思想是通过观测数据反推最可能生成这些数据的模型参数


5. 决策树算法 Decision Tree

        决策树是通过一系列规则对数据进行分类的过程。它提供一种在什么条件下会得到什么值的类似规则的方法。决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树。

       不同的算法(ID3、C4.5、CART)在特征选择上使用不同的指标,但递归分割数据构建决策树的基本思想是一致的。

  • 信息增益(ID3 算法):

        信息熵:信息熵是用来衡量数据纯度的指标,它表示数据的不确定性程度。

        信息增益:信息增益是指在划分数据集前后信息熵的减少量,它表示使用某个特征进行划分后,数据集的纯度提高了多少。

ID3 算法在构建决策树时,会选择信息增益最大的特征作为当前节点的分割特征。

  • 增益率(C4.5 算法):

   信息增益存在的问题:信息增益倾向于选择取值较多的特征,因为取值较多的特征会将数据集划分成更多的子集,从而使信息熵降低得更多。为了解决这个问题,C4.5 算法引入了增益率。

C4.5 算法在构建决策树时,会选择增益率最大的特征作为当前节点的分割特征。

  • 基尼指数(CART 算法):

基尼指数:基尼指数也是用来衡量数据纯度的指标,它表示从数据集中随机抽取两个样本,其类别不一致的概率。

CART 算法在构建决策树时,会选择基尼指数最小的特征作为当前节点的分割特征。

        原理:递归分割数据,选择信息增益(ID3)、增益率(C4.5)或基尼指数(CART)最大的特征作为节点,生成树形结构。

一棵决策树的生成过程主要分为以下3个部分:

  •   特征选择: 是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法。
  • 决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。
  • 决策树剪枝: 决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。

注意:对于那些各类别样本数量不一致的数据,在决策树当中信息增益的结果偏向于那些具有更多数值的特征。

6. k-平均算法 K-Means

      k-平均算法(K-Means)是一种无监督学习算法,为聚类问题提供了一种解决方案。
K-Means 算法把 n 个点(可以是样本的一次观察或一个实例)划分到 k 个集群(cluster),使得每个点都属于离他最近的均值(即聚类中心,centroid)对应的集群。重复上述过程一直持续到重心不改变。

原理:通过迭代优化,将数据划分为K个簇,使簇内样本距离质心最近。目标是最小化簇内平方误差。

7. 随机森林算法 Random Forest

        随机森林算法(Random Forest)的名称由 1995 年由贝尔实验室提出的random decision forests 而来,正如它的名字所说的那样,随机森林可以看作一个决策树的集合。
随机森林中每棵决策树估计一个分类,这个过程称为“投票(vote)”
。理想情况下,我们根据每棵决策树的每个投票,选择最多投票的分类。

原理集成多棵决策树,通过Bagging(有放回抽样)和随机特征选择降低方差,最终投票或平均结果。

8. 朴素贝叶斯算法 Naive Bayes        

        朴素贝叶斯的核心思想基于贝叶斯定理,通过计算后验概率来进行分类。其“朴素”之处在于假设特征之间是条件独立的,这一假设虽然在实际应用中并不总是成立,但在许多情况下,朴素贝叶斯依然能够取得令人满意的分类效果。这使得朴素贝叶斯成为许多实际应用中的首选模型,尤其是在处理高维数据和大规模数据集时,展现出其独特的优势。

        贝叶斯学派(Bayesian)在概率模型的参数估计中,认为参数是未观察到的随机变量,并且可以为其假设一个先验分布(prior distribution)。然后,基于观测到的数据,通过贝叶斯定理计算参数的后验分布(posterior distribution)。这一过程体现了贝叶斯统计的核心思想:将先验知识与观测数据结合,更新对参数的信念。

        朴素贝叶斯是一种超级 “单纯” 的分类算法,核心思想就像 “看菜下饭”—— 通过统计 “特征组合” 出现的概率来判断类别。


 为什么叫 “朴素”?

        因为它做了一个 “天真” 的假设:所有特征之间完全独立(比如西瓜的 “表皮” 和 “重量” 互不影响)。虽然现实中特征可能相关(比如重的西瓜可能更成熟,表皮更光滑),但这个假设让计算变得超级简单,而且在文本分类(如垃圾邮件过滤)等场景中效果惊人。

        朴素贝叶斯就像一个 “统计小能手”,先数清楚每个类别里各个特征出现的次数,再假设特征之间互不干扰,最后用 “概率投票” 决定新样本的类别 —— 简单粗暴,但好用!


9. 降维算法 Dimensional Reduction

        在机器学习和统计学领域,降维是指在限定条件下,降低随机变量个数,得到一组“不相关”主变量的过程,并可进一步细分为特征选择和特征提取两大方法。

        一些数据集可能包含许多难以处理的变量。特别是资源丰富的情况下,系统中的数据将非常详细。在这种情况下,数据集可能包含数千个变量,其中大多数变量也可能是不必要的。在这种情况下,几乎不可能确定对我们的预测影响最大的变量。此时,我们需要使用降维算法,降维的过程中也可能需要用到其他算法,例如借用随机森林,决策树来识别最重要的变量。

原理:减少特征数量,保留主要信息。线性方法如PCA(主成分分析)通过方差最大化投影。

特点

  • 优点:降低计算成本,去除噪声,可视化高维数据
  • 缺点:可能丢失部分信息(如PCA对非线性关系失效)
  • 应用:图像压缩、数据预处理,用于特征工程阶段

10. 梯度增强算法 Gradient Boosting

        梯度增强算法(Gradient Boosting)使用多个弱算法来创建更强大的精确算法。它与使用单个估计量不同,而是使用多个估计量创建一个更稳定和更健壮的算法。

原理:迭代训练弱学习器(通常为决策树),每轮拟合残差的负梯度,逐步减少损失函数(如MSE、交叉熵)。XGBoost、LightGBM为其优化版本。

 面试常问: 

  • 「随机森林和 GBDT 的区别???」—— 前者是并行投票的「佛系树群」,后者是串行纠错的「卷王树群」
  •   每个算法配一个简笔画小场景,比如 KNN 画 5 个小人围着新用户,SVM 画一条宽线隔开猫猫狗狗