百面机器学习|第八章采样知识点(二)

前言

如果你能找到这里,真是我的幸运~这里是蓝白绛的学习笔记,本集合主要针对《百面机器学习——算法工程师带你去面试》这本书。主要记录我认为重要的知识点,希望对大家有帮助。

第八章 采样

4、高斯分布的采样

  1. 高斯分布用逆变换法采样,基本操作步骤为:
    (1) 产生[0,1]上的均匀分布随机数u
    (2) 令z=\sqrt{2}{\rm erf}^{-1}(2u-1),则z服从标准正态分布。其中{\rm erf}(\cdot)是高斯误差函数,它是标准正态分布的累积分布函数经过简单平移和拉伸变换后的形式,定义如下:{\rm erf}(x)=\frac{2}{\sqrt{\pi}}\int_0^x e^{-t^2}{\rm d}t.上述变换法需要求解{\rm erf}(x)的逆函数,但这并不是一个初等函数,没有显式解,计算起来比较麻烦。
    为了避免这种非初等函数的求逆操作,Box-Muller算法提出了如下解决方案:单个高斯分布的累积分布函数不好求逆,那么尝试两个独立的高斯分布的联合分布。假设x,y是两个服从标准正态分布的独立随机变量,他们的联合概率密度为:p(x,y)=\frac{1}{2\pi}e^{-\frac{x^2+y^2}{2}}.考虑(x,y)在圆盘\{(x,y)|x^2+y^2\leq R^2\}上的概率,F(R)=\int_{x^2+y^2\leq R^2}\frac{1}{2\pi}e^{-\frac{x^2+y^2}{2}}{\rm d}x{\rm d}y通过极坐标变换(x,y)转化为(r,\theta),可以很容易求得二重积分,上式变为:F(R)=1-e^{\frac{R^2}{2}},R\geq0.这里F(R)可以看作是极坐标中r的累积分布函数,F(R)计算公式简单,逆函数容易求,可以用逆变换方法对r进行采样,在[0,2\pi]上对\theta进行均匀采样,这样就得到了(r,\theta),对它进行坐标变换就可以得到符合标准正态分布的(x,y)。采样过程如下:
    (1) 产生[0,1]上的两个独立的均匀分布随机数u_1,u_2
    (2) 令x=\sqrt{-2\ln(u_1)}\cos2\pi u_2,y=\sqrt{-2\ln(u_1)}\sin2\pi u_2,则(x,y)服从标准正态分布,并且相互独立。
    Box-Muller算法由于需要计算三角函数,相对来说比较耗时,Marsaglia polar method方法可以避开三角函数计算,更快。
  2. 高斯分布用拒绝采样法采样:考虑到高斯分布的特性,这里用指数分布来作为参考分布。指数分布的累积分布及其逆函数都比较容易求解。
    由于指数分布的样本空间为x\geq0,而标准正态分布的样本空间为(-\infty,+\infty),因此还需要利用正态分布的对称性来在半坐标轴和全坐标轴之间转化。取\lambda=1的指数分布作为参考分布,其密度函数为q(x)=e^{-x}.累积分布函数为:F(x)=1-e^{-x}.密度函数的逆函数为F^{-1}(u)=-\log(1-u).利用逆变换法很容易得到指数分布的样本,然后再根据拒绝采样法来决定是否接受该样本,接受概率为A(x)=\frac{p(x)}{M\cdot q(x)},其中p(x)=\frac{2}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}(x\geq0)是标准正态分布压缩到正半轴后的概率密度,常数因子M需要满足如下条件:p(x)\leq M\cdot q(x),\forall x>0.实际应用中M需要尽可能小,这样每次接受的概率大,采样效率更高。可取M=\sup_{x\geq0}\frac{p(x)}{q(x)},计算后得到的接受概率A(x)=e^{-\frac{(x-1)^2}{2}}.具体采样过程如下:
    (1) 产生[0,1]上的均匀分布随机数u_0,计算x=F^{-1}(u_0)得到指数分布的样本x
    (2) 再产生[0,1]上的均匀分布随机数u_1,若u_1<A(x),则接受x,进入下一步;否则拒绝,到(1)步骤重新采样。
    (3) 最后再产生[0,1]上的均匀分布随机数u_2,若u_2<0.5,则将x转化为-x,否则保持不变;由此最终得到标准正态分布的一个样本。
    拒绝采样法的效率取决于接受概率的大小,参考分布与目标分布越接近,则采样效率越高。Ziggurat算法本质也是拒绝采样,但采用多个阶梯矩形来逼近目标分布,更高效

5、马尔可夫蒙特卡洛采样法

  1. 在高维空间中,拒绝采样和重要性重采样经常难以寻找合适的参考分布采样效率低下(样本的接受概率小或重要性权重低),此时可以考虑马尔可夫蒙特卡洛(Markov Chain Monte Carlo,MCMC)采样法。
  2. MCMC采样法主要包括两个MC,即蒙特卡洛法(Monte Carlo)和马尔可夫链(Markov Chain)。蒙特卡洛法是指基于采样的数值型近似求解方法,而马尔可夫链则用于采样
  3. MCMC采样法的基本思想:针对待采样的目标分布,构造一个马尔可夫链,使得该马尔可夫链的平稳分布就是目标分布;然后从任何一个初始状态出发,沿着马尔可夫链进行状态转移,最终得到的状态转移序列会收敛到目标分布,由此可以得到目标分布的一系列样本。
  4. 在实际操作中,核心点是如何构造合适的马尔可夫链,即确定马尔可夫链的状态转移概率,涉及马尔可夫链的相关知识,如时齐性、细致平衡条件、可遍历性、平稳分布等。不同的马尔可夫链对应着不同的MCMC采样法,常见的有Metropolis-Hastings采样法吉布斯采样法
  5. 与一般的蒙特卡洛算法不同,MCMC采样法得到的样本序列中相邻的样本不是独立的,因为后一个样本是由前一个样本根据特定的转移概率得到的,或者有一定概率就是前一个样本。如果仅仅是采样,并不需要样本之间相互独立。如果确实需要产生独立同分布的样本,可以同时运行多条马尔可夫链,这样不同链上的样本是独立的。或者在同一条马尔可夫链上每隔若干个样本才取一个,这样的样本也是近似独立的。

6、贝叶斯网络的采样

  1. 概率图模型经常被用来描述多个随机变量的联合概率分布。贝叶斯网络又称信念网络或有向无环图模型。它是一种概率图模型,利用有向无环图来刻画一组随机变量之间的条件概率分布关系。
  2. 对没有观测变量的贝叶斯网络进行采样,最简单的方法是祖先采样(Ancestral Sampling),核心思想是根据有向图的顺序,先对祖先节点进行采样,只有当某个节点的所有父节点都已完成采样,才对该节点进行采样。根据贝叶斯网络的全概率公式p(z_1,z_2,...,z_n)=\prod_{i=1}^npa(z_i),可以看出祖先采样得到的样本服从贝叶斯网络的联合概率分布
    8-6 祖先采样示意图

    如果只需要对贝叶斯网络中一部分随机变量的边缘分布进行采样,可以用祖先采样先对全部随机变量进行采样,然后直接忽视那些不需要的变量的采样值即可。
    例如,如果需要对边缘分布p({\rm Rain})进行采样,先用祖先采样得到全部变量的一个样本,如(Cloudy=T, Sprinkler=F, Rain=T, WetGrass=T),然后忽略掉无关变量,直接把这个样本看成Cloudy=T即可。
  3. 对有观测变量的贝叶斯网络进行采样,最直接的方法是逻辑采样,还是利用祖先采样得到所有变量的取值。如果这个样本在观测变量上的采样值与实际观测值相同,则接受,否则拒绝,重新采样。
    8-6 含有观测变量的贝叶斯网络

    这种方法的缺点是采样效率非常低,随着观测变量个数增加,每个变量状态数目的上升,逻辑采样的效率急剧下降,实际中基本不可用。
    在实际中可以参考重要性采样的思想,不再对观测变量进行采样,只对非观测变量采样,但是最终得到的样本需要附一个重要性权值:w\propto\prod_{z_i\in E}p(z_i|pa(z_i)),其中E是观测变量集合。则中采样方法称作似然加权采样(Likelihood Weighted Samping),产生的样本权值可以用于后续的积分操作
    8-7 似然加权采样实例图
  4. 除此之外还可以用MCMC采样法进行采样。
    (1) 如果用Metropolis-Hastings采样法,只需要在随机向量(Cloudy,Rain)上选择一个概率转移矩阵,然后按照概率转移矩阵不断进行状态转换,每次转移有一定概率的接受或拒绝,最终得到的样本序列会收敛到目标分布。最简单的概率转移矩阵可以是:每次独立地随机选择(Cloudy, Rain)的四种状态之一。
    8-7 Metropolis-Hastings采样法

    (2) 如果用吉布斯采样法,根据条件概率p(Clody|Rain, Sprinkler, WetGrass)和p(Rain|Cloudy, Sprinkler, WetGrass),每次只对(Cloudy, Rain)中的一个变量进行采样,交替进行即可。

7、不均衡样本集的重采样

  1. 基于数据的方法处理样本不均衡问题,最简单的方法是随机采样。采样一般分为过采样(Over-sampling)和欠采样(Under-Sampling)。随机过采样是从少数类样本集中随机重复抽取样本(有放回)以得到更多样本;随机欠采样是从多数类样本集中随机选取较少的样本(有放回或无放回)。
    8-7 SMOTE算法

    过采样的缺点:对少数类样本进行了多次复制,扩大了数据规模,增加了模型训练的复杂度,容易造成过拟合
    欠采样的缺点:会丢弃一些样本,可能损失部分有用信息,造成模型只学到了整体模式的一部分。
  2. SMOTE算法过采样时不是简单地复制样本,而是采用一些方法生成新样本。SMOTE算法对少数类样本集中的每个样本x,从它在的少数类样本集中的K近邻中随机选一个样本y,然后在x,y的连线上随机选取一点作为新合成的样本。
    SMOTE算法的缺点:为每个少数类样本合成相同数量的新样本,可能会增大类间重叠度,并且会生成一些不能提供有益信息的样本。
    SMOTE算法的改进算法:Borderline-SMOTEADASYN等。Borderline-SMOTE只给那些处在分类边界上的少数类样本合成新样本。ADASYN则给不同的少数类样本合成不同个数的新样本。此外,还可以采用一些数据清理方法(如基于Tomek Links)来进一步降低合成样本带来的类间重叠,以得到更加良定义的类簇,从而更好地训练分类器。
  3. Informed Undersampling可以解决欠采样带来的数据丢失问题。常见的Informed Undersampling算法有:Easy Ensemble、Balance Cascade、NearMiss、One-sided Selection等算法。
    (1) Easy Ensemble:每次从多数类样本集S_{maj}中随机抽取一个子集E(|E|\approx|S_{min}|),然后用ES_{min}训练一个分类器,重复若干次,将多个分类器结果融合
    (2) Balance Cascade:级联结构,在每一级中从多数类S_{maj}中随机抽取子集E(|E|\approx|S_{min}|),然后用ES_{min}训练该级分类器;然后将S_{maj}中能够被当前分类器正确判断的样本剔除掉,继续下一级操作,重复若干次得到级联结构,将分类器结果融合
    (3) NearMiss:利用K近邻信息挑选具有代表性的样本。
    (4) One-sided Selection:采用数据清理技术。
    实际应用中,具体的采样操作可能并不总是如上述几个算法一样,但是思路一致。例如,基于聚类的采样方法,利用数据的类簇信息来指导过采样或欠采样操作;数据扩充方法也是一种过采样,对少数类样本进行一些噪声扰动或变换以构造出新样本;Hard Negative Mining则是一种欠采样,把比较难的样本抽出来用于迭代分类器。
  4. 基于算法的处理样本不均衡问题的方法:可以通过改变模型训练时的目标函数(如代价敏感学习中不同类别有不同的权重)来矫正这种不平衡性;当样本数据及其不均衡时,也可以将问题转化为单类学习(one-class learning)、异常检测(anomaly detection)等。

小结

这是本章的第二部分,讲了高斯分布的逆变换采样和拒绝采样、马尔可夫蒙特卡洛采样、贝叶斯网络的采样以及处理不均衡数据集的各种采样方法。除了SMOTE算法比较熟以外,其余的又是把书抄了一遍。

结尾

如果您发现我的文章有任何错误,或对我的文章有什么好的建议,请联系我!如果您喜欢我的文章,请点喜欢~*我是蓝白绛,感谢你的阅读!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容