当前位置: 首页 > 科技观察

概率论在机器学习中的迁移与应用,构建垃圾邮件分类器

时间:2023-03-21 23:47:59 科技观察

转轴|曾伟新、chelle、马卓群校对|Jenny,Sophie大家好,我是Siraj。让我们从头开始构建垃圾邮件分类器,着眼于概率论在机器学习中的作用。数学概念在生活中的应用生活充满了不确定性。我们尝试一些我们认为会成功的事情,但我们并不确定,比如今天会不会下雨,或者在大家面前跳舞是否合适,或者我是否应该为这段关系投入更多。概率论为我们提供了一个大框架来做出上述决策,通过这样做,我们可以做出更有效的决策。一些数学分支有理论方法可以帮助我们在拥有完整信息的情况下做出决策,但是概率论可以训练我们在规律性和不确定性并存的情况下做出决策。就像我们的现实生活一样,它被用来衡量某事发生的概率。分析服从一定概率分布的事件规律的学科称为统计学。一个简单的例子是抛硬币。只有两种结果,正面或反面。我们可以为正面的概率建模,因为我们知道两个因素,事情发生的方式和可能结果的总数。在此示例中,结果为50%。就像蓝牙的工作频率一样,这是一个随机变量,它代表了我们无法确定的东西,无法确定的东西不能像代数那样用变量来表达。相反,它有一组可能的值,也称为样本空间,并且集合中每个值可能出现的概率由此表示。它们可以是离散的,只代表一定数量的值,也可以是连续的,能够在一定范围内取任何值。假设现在有两种可能的事情A和B,例如,我们掷硬币并掷六面骰。我们可以通过三种方式衡量它们的可能性,即当硬币正面朝上时,骰子掷出4的概率,这就是条件概率。我们还可以对两件事同时发生的概率进行建模,比如硬币正面朝上的概率是多少,骰子正面出现4的概率是多少,这就是联合概率。如果我们想知道某个结果的概率,比如说,只是一枚硬币或只是一次掷骰子,那就叫做边际概率。贝叶斯统计在机器学习中我们做了很多这样的假设,有时它们是错误的(一家公司),现在很流行使用贝叶斯定理,它建立在条件概率的原理之上。它被称为定理,因为我们可以通过逻辑证明它的真实性。该理论说对于两个事件A和B,如果我们知道在A已知的条件下B发生的条件概率,以及A事件发生的概率,我们就可以计算出在已知的条件下A发生的条件B事件概率。也就是说,已知B,则A发生的后验概率可以通过已知概率乘以先验概率再除以已知概率值得到,事件的先验概率(prior是缩写)ofpriorprobability英文),即利用现有信息计算出的概率。某一天下雨的事前概率可以计算为0.6。在过去的100年里,这个日期的60%都下过雨。我们从事前概率开始。现在我们有了新的信息,我们可以更准确地重新估计这个概率。正如贝叶斯统计学家林德利所说,拔出枪,当你看到...(此处为2pacHit'emUp歌词),等等...他说今天的事后概率是明天的事前概率,我们可以使用这个定理根据新知识更新概率。如果木板坏了,汽车撞车的概率是多少?木板坏掉的概率是0.3,车子撞坏的概率是0.5。用贝叶斯定理,死机的几率是20%,事故就避免了,那么这个怎么应用到机器学习上呢?有这样一个基于贝叶斯定理的线性分类器家族,称为朴素贝叶斯分类器,它们往往表现非常好,尤其是对于小样本,因此它们优于其他更强大的替代方案。朴素贝叶斯分类器广泛应用于一系列不同的领域,从诊断疾病到情感分析,再到垃圾邮件分类,我们接下来会做这些。他们对数据做出两大假设。第一个假设是样本是独立同分布的。它们是从相似概率分布中抽取的两个独立随机变量;第二种假设特征是条件独立的,这意味着可以直接从训练数据中估计样本的概率,而不是评估X的所有可能性。因此给定一个N维特征向量,我们可以计算类别条件概率,表示观察到这种特定模式的可能性,假设它属于Y类。在实践中,这个假设在很长一段时间内都被违反了。时间,尽管他们仍然表现得很好。***假设2ndAssumption为了使用朴素贝叶斯进行预测,我们将计算属于每个类别的案例的概率,并使类别值***,对于朴素贝叶斯分类器,这种分类数据是一个很好的用例。首先让我们加载数据文件,它是CSV格式的,所以我们可以使用流行的数据处理模块pandas打开文件并使用其读取功能将每一行存储在数据框中,每封电子邮件都被标记为垃圾邮件或非垃圾邮件。我们可以将数据分成训练集来测试我们的模型,以及测试集来评估其预测能力。对于我们在贝叶斯定理背景下的垃圾邮件分类问题,我们可以设置A为该邮件是垃圾邮件的概率。而B设置为邮件的内容,所以如果邮件是垃圾邮件的概率,大于不是垃圾邮件的概率,那么我们就将其归类为垃圾邮件,否则由于贝叶斯定理两者都不会两种情况都导致B为除数的概率。所以它可以从我们的比较方程中删除。计算A和非A的概率很简单。它们只是我们训练集中垃圾邮件和非垃圾邮件的百分比。比较困难的部分是计算,A的概率条件下B的概率和非A条件下B的概率。为了做到这一点,我们需要一个“词袋”模型(BOW)。这意味着我们将一段文本提取为一组不重复的词组,忽略每个词的顺序。对于每个单词,我们计算在垃圾邮件和非垃圾邮件中出现的百分比,如果我们要计算完整邮件的另一个条件概率,我们看邮件中每个单词的前一个条件概率相乘的结果就完成了在分类中,而不是在训练中。我们可以构建我们自己的分类函数,该函数将在遇到每封电子邮件时调用,并使用我们之前定义的方程式对它们进行分类,这就是现在我们可以轻松地对新电子邮件进行分类将它们分类为垃圾邮件或非垃圾邮件。如果我们要分类的电子邮件中的单词不在我们的训练集中怎么办?不管怎样,我们要解决这个极端情况。解决办法是用一个叫的东西,它可以让我们把代码输入为一个“Alpha”变量,也就是说每次我们加1,所以它永远不会为零,因为否则,他会把某个概率词为零(比如“警察”),所以整封邮件的概率变为零,无论这封邮件中出现多少其他垃圾邮件短语,我们仍然没有好的答案。如果我们让模型本身随机,就会发生这种情况,这意味着像结构中的嵌入式随机变量,变分自动编码器,很棒的论文,我会把它发给你,拜托,我们不妨让我们的模型像你的一样不可预测,我改变很多,我们的模型有什么可以改进的吗?当然!我们本可以使用一些更有效的技术来代替词袋,并使用egrams而不是计算每个单词,但是朋友们,这个视频今天的内容已经足够了。综上所述,概率论将帮助我们对生活中的不确定因素进行形式化建模,这很棒。贝叶斯定律描述了一个事件发生的概率,它基于与该事件相关的所有可能的先前事件。Conditionalon是一个朴素贝叶斯分类器,将具有独立性假设的贝叶斯定律应用于各种特征。来源:https://www.youtube.com/watch?v=PrkiRVcrxOs&t=6s【本文为栏目组织大数据文摘原创翻译,微信公众号“大数据文摘(id:BigDataDigest)”】点击在这里可以看到作者更多的好文章