追剧学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 后期:李文
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“大数据文摘”微信公众号

相关文章
|
26天前
|
机器学习/深度学习 人工智能 安全
探索AI的未来:从机器学习到深度学习
【10月更文挑战第28天】本文将带你走进AI的世界,从机器学习的基本概念到深度学习的复杂应用,我们将一起探索AI的未来。你将了解到AI如何改变我们的生活,以及它在未来可能带来的影响。无论你是AI专家还是初学者,这篇文章都将为你提供新的视角和思考。让我们一起探索AI的奥秘,看看它将如何塑造我们的未来。
65 3
|
2月前
|
机器学习/深度学习 数据采集 人工智能
AI与机器学习:从理论到实践
【10月更文挑战第2天】本文将深入探讨AI和机器学习的基本概念,以及它们如何从理论转化为实际的应用。我们将通过Python代码示例,展示如何使用机器学习库scikit-learn进行数据预处理、模型训练和预测。无论你是AI领域的初学者,还是有一定基础的开发者,这篇文章都将为你提供有价值的信息和知识。
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习之解释性AI与可解释性机器学习
随着人工智能技术的广泛应用,机器学习模型越来越多地被用于决策过程。然而,这些模型,尤其是深度学习模型,通常被视为“黑箱”,难以理解其背后的决策逻辑。解释性AI(Explainable AI, XAI)和可解释性机器学习(Interpretable Machine Learning, IML)旨在解决这个问题,使模型的决策过程透明、可信。
41 2
|
21天前
|
机器学习/深度学习 数据采集 人工智能
揭秘AI:机器学习的魔法与代码
【10月更文挑战第33天】本文将带你走进AI的世界,了解机器学习的原理和应用。我们将通过Python代码示例,展示如何实现一个简单的线性回归模型。无论你是AI新手还是有经验的开发者,这篇文章都会给你带来新的启示。让我们一起探索AI的奥秘吧!
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的奥秘:机器学习入门指南
【10月更文挑战第30天】本篇文章是一份初学者友好的机器学习入门指南,旨在帮助读者理解并开始实践机器学习。我们将介绍机器学习的基本概念,包括监督学习、无监督学习和强化学习等。我们还将提供一些实用的代码示例,以帮助读者更好地理解和应用这些概念。无论你是编程新手,还是有一定经验的开发者,这篇文章都将为你提供一个清晰的机器学习入门路径。
37 2
|
1月前
|
机器学习/深度学习 数据采集 人工智能
揭秘AI的魔法:机器学习如何改变我们的世界
【10月更文挑战第22天】在这篇文章中,我们将深入探讨机器学习的奥秘,揭示它是如何在我们的日常生活中扮演着越来越重要的角色。从简单的数据分类到复杂的预测模型,机器学习的应用已经渗透到各个领域。我们将通过实例和代码示例,展示机器学习的基本概念、工作原理以及它如何改变我们的生活。无论你是科技爱好者还是对AI充满好奇的初学者,这篇文章都将为你打开一扇通往未来的大门。
|
2月前
|
机器学习/深度学习 存储 人工智能
揭秘机器学习背后的神秘力量:如何高效收集数据,让AI更懂你?
【10月更文挑战第12天】在数据驱动的时代,机器学习广泛应用,从智能推荐到自动驾驶。本文以电商平台个性化推荐系统为例,探讨数据收集方法,包括明确数据需求、选择数据来源、编写代码自动化收集、数据清洗与预处理及特征工程,最终完成数据的训练集和测试集划分,为模型训练奠定基础。
52 3
|
2月前
|
机器学习/深度学习 人工智能 安全
自动化测试的未来:AI与机器学习的结合
随着技术的发展,软件测试领域正迎来一场革命。自动化测试,一度被认为是提高效率和准确性的黄金标准,如今正在被人工智能(AI)和机器学习(ML)的浪潮所推动。本文将探讨AI和ML如何改变自动化测试的面貌,提供代码示例,并展望这一趋势如何塑造软件测试的未来。我们将从基础概念出发,逐步深入到实际应用,揭示这一技术融合如何为测试工程师带来新的挑战和机遇。
68 3
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的未来:AI与机器学习的融合
【9月更文挑战第29天】在软件测试领域,自动化测试一直是提高测试效率和质量的关键。随着人工智能(AI)和机器学习(ML)技术的飞速发展,它们正逐步渗透到自动化测试中,预示着一场测试革命的来临。本文将探讨AI和ML如何重塑自动化测试的未来,通过具体案例展示这些技术如何优化测试流程,提高测试覆盖率和准确性,以及它们对测试工程师角色的影响。
94 7
|
2月前
|
机器学习/深度学习 人工智能 算法
揭秘AI:机器学习的魔法与现实
【9月更文挑战第33天】在这篇文章中,我们将一探究竟,揭开机器学习神秘的面纱,通过直观的解释和代码示例,了解其背后的原理。无论你是初学者还是有一定基础的学习者,这篇文章都将为你提供有价值的信息。让我们一起探索机器学习的世界,发现它的奥秘和魅力!