机器学习预备知识之概率论(上)

随着Hadoop等处理大数据技术的出现和发展,机器学习也越来越走进人们的视线。其实早在Hadoop之前,机器学习和数据挖掘早已经作为单独的学科而存在,那为什么在hadoop出现之后,机器学习如此的引人注目呢?一个重要原因是hadoop的出现使很多人拥有了处理海量数据的技术支撑,进而发现数据的重要性,而要想从数据中发现有价值的信息,选择机器学习似乎是必然的趋势。当然也不排除舆论的因素,其实本人一直对很多人宣称掌握了机器学习持怀疑态度。而要想理解机器学习的精髓,数学知识是不可或缺的,比如线性代数,概率论和微积分、向量空间等,而如果没有一定的数学基础,使用机器学习也只能是知其然而不知其所以然了。基于这个原因,将系统地总结学习机器学习中用到的一些数学知识,当然不可能面面俱到,但会尽可能准确。

这篇文章首先学习概率论知识,概率论在机器学习中占主要地位,因为概率论为机器学习算法的正确性提供了理论依据,学习算法的设计经常依赖于对数据的概率假设以及在某些算法中被直接使用等。

排列组合

排列:从n个不同元素中,任取m(m≤n,m与n均为自然数)个元素按照一定的顺序排成一列,称为从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,称为从n个不同元素中取出m个元素的排列数,用符号 A(n,m)表示。A(n,m)=n(n-1)(n-2)……(n-m+1)=n!/(n-m)!。通常我们所说的排列指的是所有排列的个数,即A(n,m)。

组合:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。C(n,m)=A(n,m)/m!,C(n,m)=C(n,n-m)。通常我们所说的组合指的是所有组合的个数,即C(n,m)。

组合和排列的区别单从公式来看的话,C(n,m)=A(n,m)/m!,而为什么要除以m!呢?从定义分析,排列是一个有序的序列,也就是将元素x,y放在位置1,2和放在2,1是两个不同的序列,而组合关心的仅仅是是否选取了某个元素,而不考虑顺序,也就是x,y放在位置1,2还是2,1都被认为是相同的组合。由于m个元素在m个位置有m!中排列方式,而这对组合来说只是一种组合,因此需要除以m!。

随机变量

在概率论中,随机变量扮演了重要的角色。千万不要将随机变量和通常所提到的变量相混淆,以为随机变量就是其值具有随机性的变量,而实际上,随机变量是函数,将试验结果映射为实数,更一般地理解为,随机变量是人为定义的基于试验结果的函数,该函数的定义域为试验结果的取值,其值域根据不同情境而不同。通常使用大写字母表示随机变量。

假设随机变量X表示将投掷六面骰子的结果映射为实数,可以定义X将投掷的结果i映射为i,比如投掷的结果为2,则X的结果就为2。还可以定义如果投掷结果为偶数,则X的结果为1,否则为0,这种类型的随机变量被称为指示器变量,用于表示某一事件是否发生。

随机变量X取值a的概率表示为P(X = a) 或P X(a),使用Val(X)表示随机变量的取值范围。

联合分布、边缘分布和条件分布

随机变量的分布指的是取某些值的概率,由定义可知分布本质上是概率,使用P(X)表示随机变量X的分布。当提及多于一个变量的分布时,该分布称为联合分布,因为此时概率由涉及的所有变量共同决定。考虑下面这个联合分布的例子,X为投掷骰子的随机变量,取值为[1,6],Y为抛掷硬币的随机变量,取值为[0,1],二者的联合分布为:


P


X=1


X=2


X=3


X=4


X=5


X=6


Y=0


1/12


1/12


1/12


1/12


1/12


1/12


Y=1


1/12


1/12


1/12


1/12


1/12


1/12

使用P(X=a,Y=b)或PX,Y(a,b)表示X取a,Y取b时的概率,使用P(X,Y)表示X,Y的联合分布。给定随机变量X和Y的联合分布,可以定义X或者Y的边缘分布,边缘分布指的是某个随机变量自身的概率分布,为了计算某个随机变量的边缘分布,需要将联合分布中其它随机变量相加,公式为:

条件分布指出了在当其它随机变量已知的情况,某个特定随机变量的分布。而对于某个随机变量X在Y=b的情况下取值为a的条件概率可以定义如下,并可根据该公式确定该变量的条件分布:

可以将上述公式扩展到基于多个随机变量的条件概率,比如,基于两个变量的:

使用符号P(X|Y=b)表示在Y=b的情况下,X的分布。P(X|Y)X分布的集合,其中每个元素为Y取不同值时X的分布。

在概率论中,独立性意味着一个随机变量的分布不受另一个随机变量的影响,使用下面的数学公式定义随即变量X独立于Y:

根据该公式及条件分布的公式可以推导出如果X独立于Y,那么Y也独立于X,推到过程如下:

根据上面的推到过程可以得出P(X,Y)=P(X)P(Y),也就是该公式是X和Y相互独立的等价公式。

更进一步可以定义条件独立,即已知一个或者多个随机变量的值,其余某些变量相互独立则称为条件独立,已知Z,X和Y相互独立的数学定义如下:

最后再看两个重要的定理,分别为链式规则和贝叶斯规则。链式规则的公式如下:

贝叶斯规则的公式如下:

贝叶斯公式通过计算P(Y|X)的值来得到P(X|Y)的值。该公式可以通过条件公式推导而出:

分母的值可通过上面提到的边缘分布计算得出:

离散分布和连续分布

广义上讲,存在两类分布,分别为离散分布和连续分布。离散分布意味着该分布下的随机变量只能取有限的不同值(或者结果空间是有限的)。可以通过简单地枚举随机变量取每个可能值的概率来定义离散分布,这种枚举的方式称为概率质量函数,因为该函数将单位质量(总的概率,1)分割然后分给随机变量可以取的不同值。

连续分布意味着随机变量可以取无穷的不同值(或者结果空间是无穷的),使用概率密度函数(probability density function,PDF)定义连续分布。概率密度函数f为非负的,可积分的函数:

随机变量X的概率根据概率密度函数可得:

特别的,一个连续分布的随机变量的值为任何给定单个值的概率为0,比如连续分布的随机变量X取值为a的概率为0,因为此时积分的上限和下限都为a。

由概率密度函数可引申出累积分布函数,该函数给出了随机变量小于某个值的概率,与概率密度函数的关系为:

因此根据不定积分的含义,

时间: 2024-10-29 19:13:30

机器学习预备知识之概率论(上)的相关文章

机器学习预备知识之概率论(下)

期望值和方差 随机变量的期望值E(X),也称为平均数或者均值,使用下面的公式计算,这两个公式分别用于计算离散随机变量和连续随机变量的期望值: 使用上面的公式计算指示器变量(取值要么为1要么为0的随机变量)可得: 下面是与期望有关的两个重要定理,第一个是期望的线性性质: 无论随机变量是否相互独立,期望的线性性质都成立.而第二个定义只有在随机变量相互独立时才成立: 期望其它重要的性质还有:如果C是常数则E(C)=C,E(CX)=CE(X). 方差用于衡量一个分布的离散程度,使用下面的公式计算方差:

android金阳光自动化测试——学习历程:自动化预备知识上&&下

章节:自动化基础篇——自动化预备知识上&&下 网易云课堂: 上:http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=877113&courseId=712011 下:http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=877114&courseId=71

2. 自然语言处理预备知识

自然语言处理的预备知识 熟练掌握Python 微积分,线性代数 (MATH 51, CME 100) 基本的概率论和统计(CS109) 机器学习基础(CS229) 自然语言处理参考书 Dan Jurafsky and James H. Martin. Speech and Language Processing (3rd ed. draft) [link] Yoav Goldberg. A Primer on Neural Network Models for Natural Language

《软件可靠性方法》笔记(一)---第二章 预备知识

时间:2016.11.12: 地点:南京江宁实验室: 状态:迷茫的研一: 为什么会读到这本书?导师推荐的.可以说第一开始听到这本书名时完全是一脸蒙蔽,就像选本科毕设题目时是一样的...就是在上半年当老师告诉我他是做形式化的,我一度以为我特么的难道联系到自动化学院了?我可是一门心思向计算机的.后来直到暑假在家闲的发慌翻翻本科时候的软件课本书时,居然看到了一章讲形式化的...蜜汁尴尬,毕竟当年这门课最后我得了优.咳咳,扯远了.这本书还是蛮适合刚接触形式化的人看的,但是得有一定的数学功底(所以说我一开

[转]预备知识—程序的内存分配

因为经典,所以转发. 一.预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 栈区(stack)  —   由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 堆区(heap)   —   一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回    收.注意它与数据结构中的堆是两回事,分配方式倒是类似于链表. 全局区(静态区)(static) —,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,

word2vec 中的数学原理详解(二)预备知识

  word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感.一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员.读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考. 相关链接 (一)目录和前言 (二)预备知

《软件调试的艺术》笔记--预备知识

1.gcc的-g选项 如果要使用gdb进行调试,必须在编译时在gcc中加入-g选项,使用参数 -g 表示将源代码信息编译到可执行文件中. 如果不使用-g选项: #include <stdio.h> int main(void) { int i = 1; i = i + 1; printf("i = %d\n",i); return 0; } gcc main.c gdb a.out (gdb) b main Breakpoint 1 at 0x4004f8 (gdb) r

【转】关于LIS和一类可以用树状数组优化的DP 预备知识

原文链接 http://www.cnblogs.com/liu-runda/p/6193690.html 预备知识 DP(Dynamic Programming):一种以无后效性的状态转移为基础的算法,我们可以将其不严谨地先理解为递推.例如斐波那契数列的递推求法可以不严谨地认为是DP.当然DP的状态也可以是二维/三维的,某一维的含义也不仅仅是指某个数列的第几项. 树状数组(BIT or fenwick tree):一种高效地动态维护一个序列并动态求取前缀和的数据结构.修改某个元素/求一次前缀和的

C++ primer plus读书笔记——第1章 预备知识

第1章 预备知识 1. Ritchie希望有一种语言能将低级语言的效率.硬件访问能力和高级语言的通用性.可移植性融合在一起,于是他在旧语言的基础上开发了C语言. 2. 在C++获得一定程度的成功后,Stroustrup才添加了模版,这使得进行泛型编程成为可能. 3. Linux中要支持C++11,编译源文件时要使用-std = c++0x选项: g++ -std = c++0x use_auto.cpp 4. 程序执行完毕后,有些IDE自动关闭窗口,而有些IDE不关闭.为查看输出,可以在程序的最