用现实世界类比解释 10 种机器学习算法

10 Machine Learning Algorithms Explained Using Real-World Analogies

用现实世界类比解释 10 种机器学习算法

我上高中的时候,学习复杂的数学问题,我总是会想,我们为什么要学习它们,或者它们有什么用。我无法理解也找不到它们在现实世界中的应用。由于机器学习也是一个许多人都想探索的热门话题,机器学习算法背后复杂的数学和抽象概念使得初学者难以欣赏和学习其应用。

这就是“类比学习”发挥作用的地方。它能让你将复杂的概念与现实世界的类比联系起来,帮助你保持好奇心和创造性思维。这在你以后将这些算法应用于解决现实世界的问题时非常有帮助。受到这种方法的启发,我将通过将它们与现实世界的类比联系起来,来解释10种常见的机器学习算法,让我们开始吧。

1. 线性回归

线性回归是一种监督式机器学习算法,它试图在你的特征和目标变量之间拟合最佳直线,以便实际值和预测值之间的差异尽可能小。

类比: 假设你是一名园丁,你想测试你需要给植物施多少量的肥料才能促进其生长。为此,你记录了肥料的用量(特征/自变量)以及一个月的植物生长情况(因变量或目标变量)。现在,你有了信息,并将其绘制在散点图上,然后尝试找出一条穿过这些点的最佳直线,使得所有点与该线的偏差最小。一旦你有了这条线,你就可以根据使用的肥料量来预测植物未来的生长情况。

2. 逻辑回归

这在某种程度上类似于线性回归,也是一个监督式学习问题,但线性回归预测的是连续的目标变量,而逻辑回归用于二元分类问题,它预测的是二元结果的概率,比如“是”或“否”、“真”或“假”的概率。

类比: 例如,如果你看过《美国达人秀》,我们就知道只有两种选择:要么选手晋级下一轮,要么不晋级。所以,你会考虑各种因素,比如他们的当前表现、过去的经验、他们的表演是否独特等等,并根据这些因素来判断选手晋级下一轮的能力。基于此,你按下红色(拒绝)按钮或绿色(接受)按钮。

3. 决策树

决策树是一种监督式学习算法,它根据特征值递归地将数据划分为子集。节点上的每一次划分都是一个决定,它决定了遍历的方向并有助于做出预测。

类比: 你有没有玩过和朋友玩“20个问题”的游戏?决策树就是这样工作的。让我来分享一下这个游戏是怎么玩的。你的朋友心里想一个东西,你必须猜出来,你唯一能做的就是问他们是或否的问题来缩小可能的答案范围。每一个答案都帮助你做出决定,并排除选项,直到你猜出正确答案。

4. 随机森林算法

随机森林是一种集成学习技术,它使用在数据不同部分训练的多个决策树。然后,它将每棵树的预测结果结合起来做出最终决定。

类比: 考虑一个商业中的投资者和股东委员会,他们需要就一项新交易做出决定。每个人都有自己的思维过程和经验。根据他们的分析,他们每个人都会给出自己的判断。最后,所有判断都会被综合起来做出最终决定。

5. 支持向量机 (SVM)

SVM是一种监督式机器学习算法,它使用一条直线(超平面)来划分类别,使其距离最大化。当新的数据点进来时,更容易识别它属于哪个组/类别。

类比: 如果你是一个体育迷,你就能理解球场上两个对立球队粉丝之间的竞争。所以,你试图将这两组人尽可能地分开,比如,系上一条红丝带,当有新人加入时,根据他们穿的衬衫或支持的球队等特征,你可以相应地安排座位。

6. 朴素贝叶斯算法

这是一种基于贝叶斯定理的监督式机器学习算法,它假设特征是独立的。它在考虑一些先验信息的情况下计算每个类的概率,然后选择概率最高的类。它主要用于分类问题。

类比: 我们都知道垃圾邮件,对吧?所以,基本上,过滤器会查找一些常用词,如“免费”、“折扣”、“限时”或“点击这里”,而不会考虑这些词出现的上下文。虽然这可能会错误地对某些情况进行分类,但在处理大量电子邮件时却节省了大量时间。它将这些垃圾邮件词视为独立特征来确定一封电子邮件是垃圾邮件的可能性。

7. K-最近邻 (KNN) 算法

KNN是一种监督式学习算法,它假设相似的数据点在特征空间中会更接近(就像亲密的朋友坐在教室里一样)。它使用K个最近的已知邻居来预测未知数据点的标签,其中K是超参数,代表投票邻居的数量。

类比: 假设你想尝试一些新餐馆,有几个选择。所以你问你的朋友(KNN中的邻居)推荐。他们每个人都推荐了他们最喜欢去的地方,然后你根据大多数人的推荐来决定去哪里。

8. K-均值

K-均值是一种无监督式学习算法,它根据数据点的位置将其分配到唯一的聚类中。它首先随机初始化质心,并计算每个点到这些质心的距离。然后,每个点都被分配到最近质心的聚类中。每个聚类中的新数据点被平均以找到新的质心。这个过程一直重复,直到质心不再改变,这意味着数据点已经被完美地分到聚类中。

类比: 假设你是一个读书社的成员,需要创建3个小组,比如18名学生。最初,他们会随机将他们分成3个6人的小组。然后在第二次迭代中,他们根据从表格收集到的兴趣重新分配。然后,在他们的互动之后,他们会进行更改,直到创建好最终的小组,里面都是兴趣一致的人。

9. 主成分分析

PCA是一种无监督式学习算法。它是一种降维技术,可以识别数据的关键(重要)成分,并将其映射到一个较低维的空间,使其更易于分析。

类比: 我们大多数人都旅行过,我知道打包东西很头疼。假设我们只有一个行李箱,我们该怎么办?我们首先要装最重要的东西,然后尝试压缩不那么重要的东西,或者从包里取出它们。PCA的工作原理就是这样,识别重要特征并浓缩或去除不太相关的特征。

10. 梯度提升

这是一种集成学习算法,它将多个弱模型组合成一个强模型。它以迭代方式工作,每个模型都试图改进前一个模型所犯的错误,从而提高整体性能。

类比: 有没有遇到过你一开始对某个科目感到挣扎,但后来逐渐提高的情况?在这种情况下通常会遵循什么方法?你参加一次考试,收到成绩,然后努力克服你的缺点或你不理解的主题。这个过程会逐渐提高你在该科目的整体表现。

到这里,我的文章就结束了。我真的很喜欢用类比来解释这些概念,希望你觉得它们和我一样有帮助。如果你喜欢这种方法,或者对其他主题有建议,请在评论区告诉我!

14 条对“10 种机器学习算法的现实世界类比解释”的回复

  1. Mohd Rasheed 2024年9月5日凌晨1:41 #

    写得不错,Mehreen。

  2. Aarya 2024年9月5日晚上6:15 #

    有见地

    • James Carmichael 2024年9月6日早上7:21 #

      感谢 Aarya 的反馈!

      • Adenike Adegoke-Elijah 2024年9月6日上午10:45 #

        非常有见地且引人入胜。我现在更理解这些算法了。非常感谢。

  3. Bhargav Patel 2024年9月6日晚上5:56 #

    很好的类比示例,它确实有助于理解每种算法及其应用!做得好!谢谢!

    • James Carmichael 2024年9月7日早上8:08 #

      Bhargav,不用谢!我们感谢您的反馈和支持!

    • James Carmichael 2024年9月7日早上8:09 #

      感谢您的反馈和支持!

  4. osi 2024年9月8日下午12:57 #

    • James Carmichael 2024年9月9日凌晨3:44 #

      谢谢您的反馈,Osi!我们非常感激!

  5. Harun 2024年9月9日早上5:57 #

    非常有见地

    • James Carmichael 2024年9月10日早上6:40 #

      谢谢您的反馈,Harun!

  6. kamil mohammed 2024年9月25日上午10:28 #

    K-Means 编程系统是一个非常简单且能解决问题的并行于模拟的手段!

    • James Carmichael 2024年9月26日早上7:32 #

      您好 Kamil…是的,K-Means 聚类是一个相对简单且有效的算法,广泛用于解决各种聚类问题。它基于一个迭代过程,根据特征相似性将数据点分组到预定义的聚类数量中。该算法特别适用于将数据组织成有意义的子组或类别。

      当您说它“并行于模拟”时,我假设您指的是 K-Means 与模拟系统或连续数据处理存在一些相似之处,特别是因为它通过根据数据关系迭代地优化聚类质心来工作。本质上,K-Means 通过以下方式工作:

      1. **将每个数据点**分配给最近的聚类中心。
      2. **根据分配点的平均值重新计算聚类质心**。
      3. **迭代此过程**直到收敛,这意味着聚类中心不再发生显著变化。

      ### K-Means 的关键思想
      – **距离度量**:该算法使用距离度量,通常是欧氏距离,来计算点与质心之间的接近程度。
      – **质心**:K-Means 试图找到聚类的最优质心,即数据点与其对应质心之间的平方距离之和最小化。
      – **迭代优化**:K-Means 重复更新聚类分配和质心,直到收敛。

      下面是一个简单的 K-Means Python 实现,让您有一个实际的认识。

      ### K-Means 的 Python 代码
      python
      import numpy as np
      import matplotlib.pyplot as plt
      from sklearn.datasets import make_blobs

      # 生成一些数据
      X, y = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

      # 计算点与质心之间距离的函数
      def compute_distance(X, centroids)
      distances = np.zeros((X.shape[0], len(centroids)))
      for i, centroid in enumerate(centroids)
      distances[:, i] = np.linalg.norm(X - centroid, axis=1)
      return distances

      # K-Means 聚类算法
      def kmeans(X, n_clusters, n_iter=100)
      # 随机初始化质心
      centroids = X[np.random.choice(X.shape[0], n_clusters, replace=False)]

      for _ in range(n_iter)
      # 第1步:将每个数据点分配给最近的质心
      distances = compute_distance(X, centroids)
      labels = np.argmin(distances, axis=1)

      # 第2步:更新质心
      new_centroids = np.array([X[labels == k].mean(axis=0) for k in range(n_clusters)])

      # 检查收敛(如果质心不变)
      if np.all(centroids == new_centroids)
      break

      centroids = new_centroids

      return centroids, labels

      # 将 K-Means 应用于数据
      n_clusters = 4
      centroids, labels = kmeans(X, n_clusters)

      # 绘制结果
      plt.scatter(X[:, 0], X[:, 1], c=labels, s=50, cmap='viridis')
      plt.scatter(centroids[:, 0], centroids[:, 1], s=200, c='red', marker='X')
      plt.title("K-Means 聚类")
      plt.show()

      ### K-Means 如何类比于模拟系统
      – **连续调整**:就像在模拟系统中输入可以连续变化一样,K-Means 根据分配给它们的数据点连续调整聚类质心。更新过程是渐进的和迭代的,这与模拟控制系统中的反馈循环非常相似。
      – **接近度和最小化**:两个系统都涉及距离(或差异)最小化的概念,无论是 K-Means 中的欧氏距离,还是模拟系统中其他形式的连续调整。
      – **迭代优化**:就像模拟系统通过反馈优化输出一样,K-Means 根据输入数据迭代地优化聚类位置。

      如果您看到了模拟系统和 K-Means 之间的相似之处,那可能是因为两者都涉及基于连续变化的输入对参数(例如 K-Means 中的聚类质心)进行动态调整。

      如果您想深入研究这种类比,或者需要对 K-Means 的任何方面或其实现进行进一步澄清,请随时提出!

  7. Udocan 2024年10月2日晚上7:04 #

    我认为,在定义之前给出类比可以加强理解和联系。或者也许这只是我大脑的工作方式。

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。