您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

我们如何理解不同的分类算法原理

时间:2021-04-14 09:27:40  来源:今日头条  作者:

有时可以将机器学习算法视为一个黑匣子,那么我们如何以更直观的方式来解释它们呢?

在下图中,给定蓝点和红点,我们可以看到有一个图案。 作为人类,我们可以使用"直觉"将它们分开,并预测新点的颜色。

例如,我们大多数人可能会说图中的黑点属于蓝点类别。 但是,如何用数学表达这种"直觉"呢? 您会发现不同的直觉导致了我们所知道的所有算法……

直观地,我们如何理解不同的分类算法原理

 

如果蓝色圆点和红色圆点可能对您来说很抽象,那么让我们来看一些真实的例子。

· 肿瘤的诊断(B代表良性,M代表恶性),具有两种不同的肿瘤特征。

直观地,我们如何理解不同的分类算法原理

 

· 垃圾邮件检测:具有两个变量,美元符号的频率和单词"删除"的频率。

直观地,我们如何理解不同的分类算法原理

 

您可能已经知道一些可行的分类算法:逻辑回归,kNN,LDA(线性判别分析),SVM,决策树等。

但是了解它们是否直观?

首先,为简化问题,我们将在本文中考虑一维情况(我们将在另一篇文章中考虑二维情况)

如下图所示,我们只有一个预测变量,即X,目标变量是Y,具有两个类别,红点和蓝点。

直观地,我们如何理解不同的分类算法原理

 

请注意,从数学上讲,"红色"或"蓝色"没有任何意义,因此我们将此变量转换为二进制变量:" 1"代表"蓝色"," 0"代表"红色"。 这对应于一个问题:点是蓝色的吗? 1表示True,0表示False。 当然,这只是一个约定。

在真实的单词示例中,"点是蓝色的吗?" 可以是:肿瘤是否恶变? 电子邮件是否是垃圾邮件?

第一原则:邻居分析

对于给定的点,其想法是查看点的邻居。

邻居是什么? 最接近的?

"关闭"是什么意思? 最短的距离?

什么是距离? 在这里,它仅表示x的两个值之间的差(x是实数)。

直观地,我们如何理解不同的分类算法原理

 

现在,给定一个新点,我们可以计算出该点与所有其他点之间的距离。 我们可以选择最接近的。

但是多少? 这种方法的主要问题是:我们选择多少点?

首先,我们将其称为k,并说k = 5。

现在我们可以检查邻居的阶级。 如果您拥有一类的多数,则可以通过多数类进行预测。 在我们的例子中,如果邻居的多数类为1,则新点很可能属于1类。

注意"多数"原则。 因此,如果我们选择k = 4,那么将很难决定。 因此,如果k为奇数,则有助于做出明确的决定。

现在可以计算出新点的概率了,下面的图形如下:

直观地,我们如何理解不同的分类算法原理

 

对于K最近邻,这个原理称为kNN。

现在,此算法的特殊之处在于,由于您不知道要保留哪些点,因此必须为每次预测保留所有这些点。 这就是为什么我们说此算法不是基于模型的,而是基于实例的。

第二条原则:全球比例和正态分布

上面我们刚刚说过,选择数字k很不方便,我们没有对观察结果建模。

那么,现在我们该怎么办? 首先,让我们考虑所有人口。 如果这样做,则对于所有新点(多数类)的预测都将相同,而概率将是多数类的比例。

这可能有点简单。 为了做得更好,我们可以考虑点的正态分布。 为什么呈正态分布? 好吧,它很简单,并且简化了所有计算。 这真的是一个很好的理由吗? 好吧,这就是我们所谓的"建模"。

所有模型都是错误的,但有些是有用的。 —著名的统计学家乔治·博克斯(George Box)

现在,我们不用问邻居,而是可以问一个更好的问题:我离蓝点或红点有多远。 换句话说:给定一个新点,该点是蓝色或红色的概率是多少?

· 新点与蓝点之间的距离有多近? 我们考虑蓝点的概率密度函数(记为PDF_b),而距离(或更确切地说,接近度)为PDF_b(x)

· 新点与红点之间的距离有多近? 我们考虑红点的概率密度函数(记为PDF_r),并且距离(或更接近)为PDF_r(x)

直观地,我们如何理解不同的分类算法原理

 

为了知道新点更接近哪种颜色,我们只需要比较两个概率密度即可。 在下图中,黑色曲线表示比率:PDF_b /(PDF_b + PDF_r)

直观地,我们如何理解不同的分类算法原理

 

现在,在建模方面令人惊奇的是:使用kNN,您必须保留所有点来做出决定,现在只需要使用几个参数(例如均值和标准偏差)来定义 正态分布。

在先前的数据集中,我们有相同数量的蓝点和红点。 如果数量不同,我们可以按比例对两个密度进行加权。

直观地,我们如何理解不同的分类算法原理

 

现在,该原理已被以下算法使用:线性判别分析,二次判别分析,朴素贝叶斯分类器。

它们之间有什么区别?

还记得我们必须计算法线密度吗? 为了获得正态分布,我们必须计算平均值和标准偏差。 对于这种方法,这很容易。 但是对于标准偏差,我们有两种选择。 我们可以计算每个类别的标准偏差,或者为简化起见,我们可以考虑两个类别的标准偏差相同。 为何如此 ? 我们可以使用两个标准偏差的加权值。 现在为什么要"线性"还是"二次"? 为此,我们必须查看正态概率密度函数,是的,公式,以及所有指数,平方,pi等。所以让我们再做一次。

那朴素的贝叶斯呢? 对于一维,LDA和朴素贝叶斯实际上是相同的。 他们又有什么不同呢? 在下一篇文章中,我们将讨论二维情况。

第三原则:前沿领域分析

根据先前的原理,我们可以看到在对整个数据集建模之后,我们得出了一个决策边界。

现在,我们想知道:如果目标是寻找边界,为什么我们不直接分析边界区域?

可以用M(用于边距)定义"边界区域",M是我们选择定义"边界区域"的两点之间的距离。 我们可以将红色圆点的候选点标记为A,将蓝色圆点的候选点标记为B。 用数学术语来说,我们有:

M = B-A

首先,让我们考虑一下这两个类是线性可分离的。 然后,我们可以计算出最大的红点(我们得到A)和最小的蓝点(我们有了B)。 (请注意,在一维情况下,最小值和最大值很容易定义。但是,当维数较高时,最大值和最小值可能会更复杂。)

现在非常直观地,我们可以选择两个值的平均值作为决策边界。

直观地,我们如何理解不同的分类算法原理

 

但是,如果类0的一个值非常接近类1怎么办? 然后,我们将具有如下图所示的边界:

直观地,我们如何理解不同的分类算法原理

 

现在我们有了这样的直觉,第二种情况下定义的决策边界并不是最佳的:边界区域很小。 现在,如果我们保留先前的M,并让异常指向,该怎么办,如下所示:

直观地,我们如何理解不同的分类算法原理

 

并且我们可以为异常点添加一个惩罚项,可以是异常点与A之间的距离。

直观地,我们如何理解不同的分类算法原理

 

甚至更好的是,我们可以用系数对惩罚进行加权,并将其称为C。因此,最终决策标准是:

M-C×(红色异常点-S_r)

(保证金减去加权罚款)

通常,如果存在多个异常点,我们可以对所有异常点求和:

M-C×(∑(红色异常点-S_r)+ ∑(S_b-蓝色异常点))

这样,我们还解决了如下图所示的点不可线性分离的情况的问题(请记住,我们说过,我们首先可以考虑点是线性可分离的,以便获得直观的"边界 区域"。)

直观地,我们如何理解不同的分类算法原理

 

现在,此原理已用于SVM(支持向量机),为了获得SVM的最终版本,我们必须进行一些小的调整(我们将在另一篇文章中进行讨论)。 为什么将其称为"支持"? 好吧,因为您使用了不同的点(称为"支持向量")以最大化边距(或更准确地说是受罚边距)。

原则四:寻找最优曲线

为此,让我们考虑将y建模为x的函数的直线。

y = a×x + b

为了简化此问题的解决,我们可以考虑直线将通过每个类的平均值,如下图所示。

直观地,我们如何理解不同的分类算法原理

 

现在,当y = 0.5时可以考虑x的值,这可以作为决定y属于0类还是1类的决策边界。

但是对于这种模型,对于x的大值,您将得到y> 1,对于x的小值,y <0。 所以,我们能做些什么? 让我们平滑一下。 像这样 ?

直观地,我们如何理解不同的分类算法原理

 

来吧,我们可以做得更好,这样吗?

直观地,我们如何理解不同的分类算法原理

 

为了进行上图中的平滑处理,我们可以使用例如以下功能

p(x)= 1 /(1 + exp(-(a×x + b)))

要了解为什么使用此函数,您可以注意到我们找到了初始直线:y(x)= a×x + b,我们可以定义:sigma(y)= 1 /(1 + exp( -y)))

所以我们有:p(x)= sigma(y(x))= 1 /(1 + exp(-(a×x + b)))

为了可视化平滑效果,我们可以在下面看到sigma的图形

· 当x非常大时,输出非常接近1

· 当x很小时,输出非常接近0

直观地,我们如何理解不同的分类算法原理

 

现在的任务是查找参数:a和b。 为了实现这一目标,我们可以考虑对每个点进行正确分类的概率。

· 对于蓝点,概率值为p(x);

· 对于红点,概率值为1-p(x)。

直观地,我们如何理解不同的分类算法原理

 

准则是总概率的最大化:我们将所有概率(对于0类和1类)相乘。 并且我们尝试使结果最大化。

P_overall =乘积(类别1为p(x))×乘积(类别0为(1-p(x))

或更简单的形式

P_overall =乘积(p(x)×y +(1-p(x))×(1-y))

然后,数学上的技巧是取对数并取导数等。但是事实证明,没有一种简单的方法(封闭式)可以找到参数,而我们必须用数值方法求解。

下面我们可以看到a和b不同值的情况。 垂直线段代表每个点的概率。 所有这些概率的乘积应最大化,以优化a和b。

直观地,我们如何理解不同的分类算法原理

 

这就是逻辑回归使用的原理,因为我们之前看到过sigma函数的名称,称为逻辑函数。

(如果您发现此解释不够直观,则可以阅读本文:直观地讲,我们如何(更好)理解逻辑回归)

第五原则:避免错误

最终原则是关于选择决策边界时可能犯的错误。

现在有什么错误:

· 如果在该区域中有多数蓝点,则红点是错误;

· 如果红色点占多数,则蓝色点就是错误。

找到决策边界后,点将分为两个区域。 想法是描述区域的"均匀性":错误越少,就越好。

现在,让我们找到一个描述区域"同质性"的函数。 例如,考虑p作为1类的比例。 并且我们得到(1-p)对于类别0的比例。

现在有了p和(1-p),我们能做什么? 让我们从非常简单的操作开始。

· 总和? 嗯,再想一想。

· 产品。 嗯,这是一张图表。

直观地,我们如何理解不同的分类算法原理

 

因此该函数是对称的,这是必需的特性,因为此函数应适用于任何一个类。 此函数的输出可以指示区域的"均匀性":越低越好

· 当p接近1时,几乎所有的点都是蓝色的,该指示器非常低

· 当p接近0时,几乎所有点都被撕裂,则指示器也非常低

· 当p为0.5时,我们有相同数量的红点和蓝点,这不是所需的状态。 该指标处于最高水平。

为了找到决策边界,我们必须测试x的不同值。 对于x的每个值,将创建两个区域:左侧区域和右侧区域。 对于每一侧,我们可以计算指标,然后用每个区域中点的比例对它们进行加权,以获得总体指标。

现在我们可以测试所有点作为决策边界,并查看指标如何变化。

直观地,我们如何理解不同的分类算法原理

 

现在我们可以采用指标的最低级别来找到x的最佳值。 请注意,由于我们具有阶跃函数,因此我们可以计算x的两个值的均值,以定义指标的最低水平。

现在,此原则的特别之处在于,您可以继续在每个区域中找到其他决策边界。 我们将在另一篇专门讨论该原理的文章中看到,这样做的好处是您可以轻松处理非线性情况。

因此,我们可以一步一步地找到最佳边界。

在这里,我们有关于每个步骤不同决策边界的决策树。

直观地,我们如何理解不同的分类算法原理

 

现在的问题是:我们什么时候停止? 可能有不同的规则……

该原则也被认为是"分而治之"。 它允许增长决策树。 这些树也是更复杂算法(例如,Random Forest或Gradient Boosting machines)的基础。

 


 

当我们谈论机器学习和人工智能时,我们总是谈论神经网络,但是为什么我们在这里没有提到它们呢? 好吧,实际上,我们确实看到了一个简单的神经网络示例,即逻辑回归…

对于机器学习从业者,您可能会注意到,我自愿不使用技术术语,也许您可以在适当的上下文中注释和放置技术术语:硬边距,软边距,梯度下降,凸度,超平面,先验概率,后验概率 ,损失函数,交叉熵,最大似然估计,过度拟合…

让我们回顾一下:

· 原则1:检查邻居,我们得到KNN

· 原则2:考虑全球比例和正态分布,我们可以进行LDA,QDA或NB。

· 原则3:研究边界区域,并尝试使其"干净"且大。 我们得到了SVM。

· 原则4:画一条直线,使其平滑并尝试调整。 我们得到逻辑回归

· 原则5:分而治之。 我们得到决策树。

请注意,我们并未完成五项原则的所有推理:

· 用kNN确定k in

· 决策树中的停止规则

· 系数C的确定

· 确定逻辑回归的a和b

 

(本文翻译自Angela Shi的文章《Intuitively, How Can We Understand Different Classification Algorithms Principles》,参考:
https://towardsdatascience.com/intuitively-how-can-we-understand-different-classification-algorithms-principles-d45cf8ef54e3)



Tags:分类算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
有时可以将机器学习算法视为一个黑匣子,那么我们如何以更直观的方式来解释它们呢?在下图中,给定蓝点和红点,我们可以看到有一个图案。 作为人类,我们可以使用"直觉"将它们分开,并...【详细内容】
2021-04-14  Tags: 分类算法  点击:(275)  评论:(0)  加入收藏
导读通常我们在解决某个问题的时候,会设计多种分类算法在训练的时候我们还会调节各种超参以及使用各种trick以获取最优的分类模型,那这时候我们应该如何来衡量这个最优呢?分类...【详细内容】
2020-09-27  Tags: 分类算法  点击:(95)  评论:(0)  加入收藏
摘要: 本文以knn算法为例简要介绍如何使用分类算法来完成回归任务。关键字: knn算法,回归任务。之前的文章(K近邻(knn)算法是如何完成分类的?)已经介绍了knn算法的思想以及如何使...【详细内容】
2020-06-23  Tags: 分类算法  点击:(116)  评论:(0)  加入收藏
▌简易百科推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(1)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(9)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(7)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(6)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(19)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(16)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(13)  评论:(0)  加入收藏
前面文章在谈论分布式唯一ID生成的时候,有提到雪花算法,这一次,我们详细点讲解,只讲它。SnowFlake算法据国家大气研究中心的查尔斯&middot;奈特称,一般的雪花大约由10^19个水分子...【详细内容】
2021-11-17  小心程序猿QAQ    Tags:雪花算法   点击:(24)  评论:(0)  加入收藏
导读:在大数据时代,对复杂数据结构中的各数据项进行有效的排序和查找的能力非常重要,因为很多现代算法都需要用到它。在为数据恰当选择排序和查找策略时,需要根据数据的规模和类型进行判断。尽管不同策略最终得到的结果完...【详细内容】
2021-11-04  华章科技    Tags:排序算法   点击:(37)  评论:(0)  加入收藏
这是我在网上找的资源的一个总结,会先给出一个我看了觉得还行的关于算法的讲解,再配上实现的代码: Original author: Bill_Hoo Original Address: http://blog.sina.com.cn/s/bl...【详细内容】
2021-11-04  有AI野心的电工和码农    Tags: KMP算法   点击:(36)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条