追剧学AI (6) | 概率论在机器学习中的迁移运用,手把手建一个垃圾邮件分类器

简介:

人工智能中的数学概念一网打尽!欢迎来到YouTube网红小哥Siraj的系列栏目“The Math of Intelligence”,本视频是该系列的第6集,讲解
概率论在机器学习中的运用,看完视频后,大家会学到一个生活中非常实用的技能喔!

image

(大数据文摘已获得Siraj本人翻译授权)

大家好,我是Siraj。

让我们将目光高度聚焦在概率论在机器学习中扮演的角色,通过从头开始构建一个垃圾邮件分类器。

数学概念在生活中的应用

生活中充满了不确定性,我们尝试一些自己觉得会成功的事情,但我们无法确定,比如今天是否会下雨,或者在众人注视下跳舞是否合适,亦或是我是否该在这段感情中投入更多。概率论给我们搭建了一个大的框架来进行上述的决策,而通过这么做, 我们能做出更有效的决策。

数学的一些分支理论方法,能够在我们有完整信息时帮助我们做出决定,但是概率论能够训练我们,在规律性与不确定性并存时做出决定。就像我们真实的生活,它是用来衡量某事发生的可能性。

而分析服从一定概率分布的事件规律这一学科,叫做统计学。一个简单的例子便是抛硬币,只会存在两种结果,即正或者反,我们可以对正面出现的概率进行建模,因为我们知道两个要素,即事情可能发生的方式以及总共能出现的结果,在这个例子中便是50%。

image


就像蓝牙的工作频率一样,这是一个随机的变量,它代表着一件我们无法确定的事,无法确定的事并无法像代数那样用变量进行表述。相反的,它有一组可能的取值,也称作样本空间,以及这组里的每一个取值可能发生的概率是通过这样表示的。它们既可以是离散的,只表示一定数量的值,也可以是连续的,能够取到一定范围内的任何值。


image


假设现在有两件可能发生的事情 A和B,比如,我们抛一枚硬币,以及掷一枚六面的骰子。我们可以用三种方式来衡量它们的可能性,即当硬币是正面时,骰子是4的概率,这便是条件概率。

我们也可以对两件事情同时发生的概率建模,比如说,硬币落在正面同时骰子落在4的概率是什么,这便是联合概率。而如果我们想要知道某种特定结果的概率,比如说,仅仅只是硬币或者仅仅只是骰子的投掷概率,这种便被称为边际概率。

贝叶斯统计

在机器学习中我们做了很多类似的假设,有些时候它们是错的(一家公司),现在十分流行使用贝叶斯定理,它构建于条件概率的原理之上。

它之所以被称为定理,是因为我们可以通过逻辑来证明它的真实性。理论中说道,对于两个事件A和B,如果我们知道在A已知的条件下B发生的条件概率,以及A事件发生的概率,我们能计算得到已知B事件的条件下A发生的条件概率。

换句话来说,已知B的条件下,A发生的后验概率,能够通过下述方法计算得到,即将已知的可能性乘以先验概率,并将乘积除以已知的概率值,事件的先验概率 (the prior是英文中对先验概率的简称),它是利用已有的信息计算得出的概率。


image

某一天有雨的事前概率可以计算为0.6,在过去的100年里这个日期60%都有雨,我们从一个事前概率入手,现在我们得到了新的信息,从而更准确的重新估计此概率。

如贝叶斯统计学家Lindley所言,掏出枪,当你看到...(此处为2pac Hit'em Up歌词),等等...他说的是今天的事后概率就是明天的事前概率,我们可以利用这个定理,根据新的知识来更新概率。

如果木板断裂,这个小车而坠毁的概率是多少?木板断裂的概率为0.3,小车坠毁的概率为0.5。利用贝叶斯定理,坠毁几率为20%,事故避免啦,那么如何将此应用于机器学习中呢?

有这么一个线性分类器的家族,它们基于贝叶斯定理,被称为朴素贝叶斯分类器,它们往往表现得非常好,尤其是对于小样本来说,因此它们要优于其他更强大的替代品。

实战上手垃圾电子邮件的分类

朴素贝叶斯分类器广泛应用于一系列不同的领域,从诊断疾病,到情绪分析,到我们接下来要做的垃圾电子邮件的分类。

它们对数据做了两个很大的假设,第一个假设,样本是独立且同分布的,它们是两两相互独立的随机变量,是从相近的概率分布中得出的;第二个假设,特征的条件独立性,这意味着样本的概率,可以从训练数据中直接估计得出,而不是去评估X的所有可能性。因此给定一个N维特征向量,我们可以计算类条件概率,意思是说有多大可能性可以观测到这个特定模式,假定它属于类别Y的话,在实践中,这种假设被违反了相当长的时间,尽管它们的表现还是很不错的。

image
第一个假设


image
第二个假设

为了使用朴素贝叶斯做一个预测,我们将计算属于每个类别中的情况的概率,并使类值达到最高,对朴素贝叶斯分类器来说,这种分类数据是一个很好的用例。首先我们来加载数据文件,它是CSV格式,所以我们可以使用流行的数据处理模块pandas打开文件,并利用其读取功能将每一行存储在数据框中,每个电子邮件都标记为垃圾或非垃圾邮件。

我们可以将数据分割成一个测试我们模型的训练集,和一个评估其预测能力的测试集,对于我们在贝叶斯定理背景下的垃圾邮件分类问题,我们可以将A设为电子邮件是垃圾邮件的概率。而B设为电子邮件的内容,因此如果电子邮件是垃圾邮件的概率,大于它不是垃圾邮件的概率,那么我们将其分类为垃圾邮件,否则我们就不会由于贝叶斯定理在两种情况下都会导致B的概率作为除数。

因此可以将其从我们的比较方程中约去,计算A和非A的概率很简单,它们不过是我们的训练集中,垃圾邮件和非垃圾邮件的百分比,更为困难的部分是计算,A的条件下B的概率和非A的条件下B的概率,为了做到这个,我们需要“词袋”模型(BOW)。意思是我们把一段文字作为一组无重复词群来提取,忽略每个单词的顺序。

对于每个单词,我们计算出它出现在垃圾邮件中 和非垃圾邮件中的百分比,如果要计算一封完整邮件的另一种条件概率,我们就看邮件中出现的每个单词的之前的条件概率相乘之后的结果,这个是在分类中进行, 而不是在训练时。

我们可以构造自己的分类函数,这类函数在碰到每封邮件的时候就会启用,并且使用我们之前定义的方程去对它们进行分类,这个就是全部现在我们能很容易地对新邮件进行分类 把他们分成垃圾或者非垃圾邮件。

如果我们想要分类的邮件中的单词,不在我们的训练集里呢?不管怎样,我们要解决这个极端例子的问题。解决的方法是用一种叫,它可以让我们将代码就作为”Alpha“变量输入,这个意味着每一次我们加1,所以它永远不会是零,因为如果不是这样操作的话,他会把某个单词的概率设定成零 (比如说”警察“),这样的话 整个邮件的概率也变成了零,不管这封邮件中出现了多少个其它垃圾性词组,我们至今都还没有好的答案。

就是如果我们把模型自己变成随机会怎么样,的意思是像结构中的嵌入随机变量,变分自动编码器,很棒的一篇论文,我会发你的,请务必,我们或许还能把我们的模型造得和你一样变幻莫测,我很多变的,对于我们的模型有没有什么我们可以改进的地方?

当然啦!我们本可以用一些更有效率的技术,而不是词袋,并且用egram而不是数每个单词,但是朋友们,今天这个视频已经内容够多的了。

总结一下,概率论将有助于我们正式地将生活中的不确定因素用模型建立出来,这简直太棒啦,贝叶斯定律描述一件事情的概率是基于,之前所有可能和这个事件相关的条件,朴素贝叶斯分类器,将带有独立性假设的贝叶斯定律应用于各种特征之中。

比赛时间

这周得奖的是Hammad Shaikh的笔记,展现了如何运用主成分分析从而使一组多维的数据组视觉化,并且检测出一个人是否有糖尿病。他的笔记给我留下很深的印象,一定要,一定要去看看。

接下来第二名Christian Beekman,他用了3中不同的自动解码器将工厂数据视觉化,非常赞!

这周的挑战是写你自己的贝叶斯分类器!基于一个文本数据集 并且要比我的演示有更好的结果,具体的请移步——
https://github.com/llSourcell/naive_bayes_classifier/

赢家会在下周宣布,请大家订阅更多的编程视频。现在,我也只能接受不确定性啦!

谢谢大家观赏!

原文发布时间为:2017-09-03
翻轴:曾维新,chelle,马卓群
校对:Jenny,Sophie 后期:李文
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“大数据文摘”微信公众号

相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
AI加速引擎PAI-TorchAcc:OLMo训练加速最佳实践
阿里云机器学习平台PAI开发的Pytorch训练加速框架PAI-TorchAcc已接入最新开源的大语言模型 OLMo。在保证模型效果和易用性的前提下,PAI-TorchAcc相对 PyTorch 性能在 OLMo 1B 上加速比达到 1.64X,在 OLMo 7B 上加速比达到 1.52X。本文分析了 PAI-TorchAcc 的性能收益来源。
|
3月前
|
机器学习/深度学习 人工智能 算法
展望2024: 中国AI算力能否引爆高性能计算和大模型训练的新革命?
2023年是人工智能发展的重要转折年,企业正在从业务数字化迈向业务智能化。大模型的突破和生成式人工智能的兴起为企业实现产品和流程的革新提供了先进工具,引领产业迈入智能创新的新阶段。在这个新时代,企业不再仅关注如何增强智能化能力,而更加注重如何利用人工智能实现产品和流程的革新。
|
17天前
|
机器学习/深度学习 人工智能 运维
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(二)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
50 1
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(一)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
53 1
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
|
5天前
|
机器学习/深度学习 数据采集 人工智能
|
5天前
|
机器学习/深度学习 人工智能 算法
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
大模型落地实战指南:从选择到训练,深度解析显卡选型、模型训练技、模型选择巧及AI未来展望---打造AI应用新篇章
大模型落地实战指南:从选择到训练,深度解析显卡选型、模型训练技、模型选择巧及AI未来展望---打造AI应用新篇章
大模型落地实战指南:从选择到训练,深度解析显卡选型、模型训练技、模型选择巧及AI未来展望---打造AI应用新篇章
|
1月前
|
机器学习/深度学习 人工智能 机器人
Meta首席科学家Yann LeCun:AI毁灭人类的概率为零
【2月更文挑战第22天】Meta首席科学家Yann LeCun:AI毁灭人类的概率为零
14 2
Meta首席科学家Yann LeCun:AI毁灭人类的概率为零
|
1月前
|
人工智能 前端开发 PyTorch
AI加速引擎PAI-TorchAcc:整体介绍与性能概述
PAI-TorchAcc(Torch Accelerator)是阿里云人工智能平台PAI开发的Pytorch上的大模型训练加速框架。PAI-TorchAcc提供了一套基于Pytorch的简洁、易用的接口,无需进行模型转换就可以无缝地接入HuggingFace上的模型,并用多种分布式策略进行训练加速。本文详细介绍PAI-TorchAcc的产品能力与性能。

热门文章

最新文章