異常検知(異常検知)

序文

       この章では、最後の章の内容が続いている質問教師なし学習、クラスタリング(クラスター)と次元削減(次元削減)問題の数を紹介する私たちの前に、我々はこの内の別の章をご紹介します教師なし学習の異常検出(異常検出)の問題の問題。

       最後に、それと間違って理解することがある場合、私はあなたに感謝し、あなたが私たちの教育を受けている願っています!

章XIII異常検出(異常検出)

13.1モチベーションの問題

       この異常検出問題がある理由をまず第一に、我々は、質問をしたいですか?今、私はあなたにこれを説明するために例を使用します。このような航空機エンジンなどの特性が発生X1 =熱(熱が発生)、X2 =振動強度(振動の強度)等で、我々は、そのようなデータのセットを取得します。

{ X ^ {(1)}、X ^ {(2)}、...、X ^ {(M)}}、我々が得航空機エンジンデータが正常であると仮定すると、我々は今、新しいエンジンデータがX_ {試験}示すように、我々は新たなニーズを取得し、図中の図中のデータを予測しているデータを1 、既知のデータセットの間で私たちの新しいデータと仮定して、私たちは、新しいデータが、我々はこれまで知られているデータセットから、我々はそれが珍しいことを予測することができますされている場合、それは正常であることを予測することができます。これが私たちの異常検出処理の簡単なデモです。

                                                                         1つの既知のデータと新しいデータセット

      フロントでは、我々はまた、我々のデータセットからのデータの新しい外観はほぼ正常であると予測されたと述べ、これまで例外で、その後、どのくらいの距離が近いですか?どのように遠くにそれははるかにそれからですか?我々は、我々は、データセットの中央寄り、通常の可能性が大きい、すなわち、図2に示すように、我々は、確率モデルPの構築、我々はデータセットを提示知っている(X)新しいデータが確率を予測します予測Pの新たなデータ(X_ {試験})、遠いデータセットとその逆から、大きくても小さく通常の尤度と比較して、P(であろうX_ {試験})は、ここでは、異常しきい値を小さく与えられする\ varepsilonときに我々 、 P(X_ {試験})< \ varepsilon時間は、例外である; P(場合X_ {試験})> = \ varepsilon時間は、通常に比べ。

                                                                             図2のデータセット

      フロントはまた、当社の確率関数p(x)は私たちに実際にアプリケーションの異常検出について何かを与えるためにここに、新しいデータの異常かどうかを確認する方法を教えてくれ。裁判官の前に加えて、あなたに航空機エンジンの例を与えるためには、いくつかの機能に応じて(x)が異常であるが、我々は、インターネットユーザーは、このような詐欺師としての異常かどうかに基づいていくつかの情報を検索し、その上、我々は、pを構築することを検出しましたその後、P(X)による< \ varepsilon正常な人々は、多くの場合、機能セットxの一部として単語を検索私たちのように、私たちの容疑者に来る、既知のデータセットのためのGoogleの検索に表示される異常な単語の確率は非常に小さくなりますしたがって、所定の異常しきい値に応じて、我々は我々の容疑者のオブジェクトを取得しますが、これは、最近適用された一つの側面である、それは、我々はに応じて検出することができます範囲を狭めるということ異常がある人ではない百パーセント確認ものの再び1つの調査の結果。別のアプリケーションがデータセンターのコンピュータモニタのケースで、我々はいくつかの機能×1 =メモリ使用(メモリ使用量)を設定することができ、x2は=ディスクの数は、アクセス /秒( CPUの(ディスクアクセスの数)、X3 = CPUの負荷を負荷)というように、我々は、確率モデルp(x)は、今ではその確率P-(X-)を計算することにより、コンピュータがあるとし、これらの変数から構築することができ、< \ varepsilon、我々は発生する可能性があり、このコンピュータの問題を取得することができ、必要が行きますメンテナンスなど。

13.2ガウス分布

       後、私たちは、あなたがガウス分布は、次のセクションに直接このセクションをスキップすることができます理解していれば、異常を検出するために、ガウス分布のアルゴリズムを使用しますので、ここでは、あなたの簡単な紹介ガウス分布が得られました。ガウス分布については、我々はあまりにも頻繁分布と呼ばれています。データ・セットXの場合は\にR&LT、平均とXガウス分布\ミューと分散\シグマ^ {2}、我々はと呼ばれるX \ SIM N(\それ\シグマ^ {2})\シグマ確率モデルであり、標準偏差と比較しP(X、それ\ \シグマ^ {2})= \ FRAC {1}は{\ SQRT {2 \ PI} \シグマ} EXP( -  \ FRAC {(X-MU \)^ 2} {2 \シグマ^ {2}})、図に示す画像。、全体のパターンは、対称3、中間値であります私たちが意味する\ミュー、と我々は分散して脂肪、薄い姿を測定することです。

                                                                           图3 高斯分布

      下面我们来给大家举几个例子,来比较直观的认识\ミュー\シグマ对整个图形的影响。如图4所示,我们可以看到当\ミュー都是0时,高斯分布图形的对称轴就是x=0,而当\シグマ减小一半时,整个图形变得更尖锐了,而当\シグマ增加一倍时,整个图形变矮胖了,所以我们可以得出\シグマ越小图形越瘦高,\シグマ越大,图形越矮胖,不过有一点要注意就是整个图形的面积是1,这是概率分布的结论。而如果我们只改变\ミュー,则会发现整个图形在平移,移动到我们新的以\ミュー为对称轴。

                                                                            图4 改变\ミュー\シグマ对高斯分布的影响

     现在我们给出我们的数据集{X ^ {(1)}、X ^ {(2)}、...、X ^ {(M)}},怎样构造出高斯分布了?要想得到高斯分布,首先我们需要得到高斯分布的两个重要参数均值\ミュー和方差\シグマ^ {2},首先均值\ MU = \ FRAC {1} {M} \ sum_ {i = 1} ^ {M} X ^ {(I)},然后方差\sigma ^{2}=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu )^2,我们就会得到x的分布x\sim N(\mu ,\sigma ^{2}),好了关于高斯分布就介绍到这里了。

13.3 利用高斯分布进行异常检测算法

       前面已经给大家铺垫了高斯分布的知识,下面我将给大家介绍怎样用高斯分布来实现异常检测算法。对于训练集

{x^{(1)},x^{(2)},...,x^{(m)}},每一个训练集我们假设有n个特征,X\inR^{n},我们假设每一个特征x_{i}都服从高斯分布,则会有x_{1}\sim N(\mu _{1},\sigma _{1}^{2}),x_{2}\sim N(\mu _{2},\sigma _{2}^{2}),...,x_{n}\sim N(\mu _{n},\sigma _{n}^{2}),我们对于每一个特征就会有对应的概率函数p(x_{1};\mu _{1},\sigma _{1}^{2}),p(x_{2};\mu _{2},\sigma _{2}^{2}),...,p(x_{n};\mu _{n},\sigma _{n}^{2}),而我们整个的p(x)=p(x_{1};\mu _{1},\sigma _{1}^{2})p(x_{2};\mu _{2},\sigma _{2}^{2})...p(x_{n};\mu _{n},\sigma _{n}^{2})为每一个概率密度函数相乘,这里用相乘其实是假设了每个特征是独立了,实际上如果有些不独立效果也很好,所以不用纠结这些特征是否都独立。我们对于p(x)的式子可以简写为p(x)=\prod_{j=1}^{n}p(x_{j};\mu _{j},\sigma _{j}^{2})(在这里\prod是求积符号)。

       我们重新给大家梳理下整个算法的过程:

1.选择你认为可以判断为异常类的有参考性的特征x_{i}

2.同过数据集{x^{(1)},x^{(2)},...,x^{(m)}}根据\mu _{j}=\frac{1}{m}\sum_{i=1}^{m}x_{j}^{(i)}\sigma_{j} ^{2}=\frac{1}{m}\sum_{i=1}^{m}(x_{j}^{(i)}-\mu_{j} )^2得到\mu _{1},\mu _{2},...,\mu _{n},\sigma _{1}^{2},\sigma _{2}^{2},...,\sigma _{n}^{2}

3.给定一个新的数据x,我们计算p(x)=\prod_{j=1}^{n}p(x_{j};\mu _{j},\sigma _{j}^{2})=\prod_{j=1}^{n}\frac{1}{\sqrt{2\pi }\sigma _{j}}exp(-\frac{(x_{j}-\mu _{j})^2}{2\sigma _{j}^{2}}),如果p(x)<\varepsilon则可以判断为异常。

       下面我们用一个具体的例子来说明下问题。如图5所示,我们都能有一堆数据,并且每个数据有两个特征x1和x2,对于这两个特征都是服从高斯分布,我们分布计算得到了他们的均值和标准差分别为\mu _{1}=5,\sigma _{1}=2;\mu _{2}=3,\sigma _{2}=1,我们画出两个的概率分布图如图6所示。所以我们整个的p(x)就是两者的乘积了,最后的概率分布图如图7所示,每一个点的高度来表示概率。假设我们现在有两个新的数据x_{test}^{(1)},x_{test}^{(2)},我们通过计算得到p(x_{test}^{(1)})=0.0426,p(x_{test}^{(2)})=0.0021,我们还有\varepsilon =0.02,所以我们可以通过p(x_{test}^{(1)})=0.0426\geq \varepsilon ,p(x_{test}^{(2)})=0.0021< \varepsilon,得到x_{test}^{(1)}是正常的,而x_{test}^{(2)}是异常的。而对于图5中的大圆圈外的部分就是对应着我们图7中高度为0的那部分,这也符合我们之前的结论,当p(x)越小时,则是异常的可能性越大,即离数据集越远。

                                                                       图5 异常数据检测例子

                                                                    图6 x1和x2的概率分布图

                                                                                   图7 p(x)的分布图

13.4 发展和评估一个异常检测系统

       前面我们已经给大家介绍了怎样用高斯分布来进行异常检测,那么我们怎样评估这个系统是否合理了?即我们怎样判断我们最终判断为异常的结果是正确的。假设我们有一组数据是具有标签的,即我们知道这些数据是正常的还是异常的,听起来和前面的监督学习类似,但我想说的是这两者还是有区别的,不能混为一谈,在后面我将详细给大家做比较。我们用y=0来表示一个数据是正常的,用y=1来表示一个数据是异常的,接下来我们把数据分成三类和之前一样,我们有训练集:x^{(1)},x^{(2)},...,x^{(m)}用来计算出我们的概率函数p(x),交叉集:(x_{cv}^{(1)},y_{cv}^{(1)}),(x_{cv}^{(2)},y_{cv}^{(2)}),...,(x_{cv}^{(m_{cv})},y_{cv}^{(m_{cv})}),测试集:(x_{test}^{(1)},y_{test}^{(1)}),(x_{test}^{(2)},y_{test}^{(2)}),...,(x_{test}^{(m_{test})},y_{test}^{(m_{test})})

        我们用最初的飞机发动机问题来举例,假设我们现在有10000个好的发动机,20个异常的发动机,我们对数据做如下处理,让训练集为6000个好的发动机(可以理解为y=0),而我们的交叉集和测试集分别为2000个好的发动机(y=0)和10个异常发动(y=1),两者数据不一样。而有的人可能会对数据进行这样的处理:训练集还是为6000个好的发动机,而交叉集和测试集为同样的4000个好的发动机,异常发动机分别两者10个。对于后者的处理方法,我是不建议的,对于数据用同一组这样不好,因为我们是需要用交叉集来进行选出合适的参数,最后用测试集来测试整个系统的合理性如何,所以最好两者的数据不一样比较好。

       所以我们对训练集可以得到p(x),然后针对交叉集或者测试集的x,我们有y=\left\{\begin{matrix} 1 &if & p(x)<\varepsilon (anomaly)\\ 0 &if & p(x)\geq \varepsilon (normal) \end{matrix}\right.,由于这个数据集是明显的斜偏类数据,因为大部分都是正常类数据,而异常类数据很少,所以我们不能用以往的判定方法,在前面章节我也给大家介绍了一些针对斜偏类数据的处理,比如用True positive、false positive、  false negative、true negative,或者用Precision/Recall,或者F1-score等等来进行评估这个是否最好,通过在交叉集中选出最好的\varepsilon

13.5 异常检测法和监督学习法比较

      在前面也给大家说明了,这两者不能混为一谈,那我们什么时候该用异常检测法或者监督学习法了?我们在这里对两者做一个比较。1.对于异常检测,就是我们有一个很明显的感受,就是有很少的y=1这类数据,而是有大量的y=0这类数据,而我们的监督学习不管是y=0或是y=1都有大量的数据。2.异常检测中,我们对于一个新的异常类很难在已知的数据集中找到类似的特征,即我们对于给定的异常数据集很难总结出异常类类似的样貌,很有可能对于我们一个新的异常数据,我们在已知的异常数据集中找不到类似的数据。而我们的监督学习中,由于有大量地y=1数据集,所以我们可以描述出异常类的大致样貌特征,对于给出的新的异常数据我们也比较容易在训练集中找到类似的数据。

       下面我们用前面我们所用到过的例子来对此进行归类,比如Fraud detection、Manufacturing(e.g. aircraft engines)、Monitoring machines in a data center等等都是异常检测类的,而Email spam classification、Weather prediction、Cancer classification等等都是监督学习这一类的。

13.6 选择什么样的特性

        首先对于特征,有的特征并不是高斯分布,所以我们需要简单的做些处理,比如对于如图8左边所示的数据分布,我们可以取一个对数log(x),则可以变成图8右边的数据分布,这个时候我们的数据就接近高斯分布了。

                                                                         图8 对x取对数log(x)变成接近高斯分布
        关于异常检测的错误分析,我们希望的是当我们检测的结果是正常类的时候,我们会有很大的p(x),而我们检测结果是异常类的时候,我们会有很小的p(x),但是有很多时候会出现无论是正常类还是异常类我们都得到了很大的p(x),如图9所示,当我们只有特征x1时,假设我们有一个异常数据,通过p(x),我们发现p(x)>\varepsilon,我们就会误判为是正常数据,而如果我们又添加一个特征x2,如图10所示,我们就会发现这个数据不在正常数据范围内,就可以成功判断为异常数据。所以选择特征很重要,我们应该选择那些容易区分异常数据的值,通常是很大或者很小的值。有时候可以增添x3=x2/x1这样的特征来模拟x2和x1两者的关联变化。

                                                                                   图9 当只有特征x1时

                                                                                           图10 添加了特征x2
  13.7 多元高斯分布

       在前面给大家讲了如何选择我们的特征,现在我们来给大家讲讲多元高斯分布,在前面我们对于有多个特征的时候,我们是分布计算出每个特征的概率密度函数,再相乘得到最终的p(x),在这里我们不再分布计算每个单独的,而是直接计算出p(x)。首先给大家介绍两个变量,\mu \in R^{n}\Sigma \in R^{n\times n}(协方差矩阵),这和前面给大家说过的均值和方差意义一样,只是在这里是矩阵的形式。所以我们的p(x;\mu ,\Sigma )=\frac{1}{(2\pi )^{\frac{n}{2}}\left | \Sigma \right |^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu )^{\top }\Sigma ^{-1}(x-\mu ))

       下面我们用图形的方式,让大家比较直观的了解\mu\Sigma对高斯分布的影响,如图11所示,\mu =\begin{bmatrix} 0\\0 \end{bmatrix},而\Sigma都为对角矩阵,且对角上的值都相等,我们可以发现每个图的峰顶都是在(0,0)这个位置,这是由\mu决定的,而我们\Sigma对角线上的值越大则图形越矮胖,越小则越瘦高,这和前面一元的高斯分布结论是一样的。

                                                                                     图11 \mu =\begin{bmatrix} 0\\0 \end{bmatrix},而改变\Sigma

       如图12所示,当我们改变\Sigma对角元素的值,使对角元素上的值不一样时,通过俯视图会发现图形不再是一个圆,而是一个椭圆,这也很容易理解,\Sigma的每个值代表一个特征变量,所以分布影响各自特征变量的胖瘦。

      

                                                                         图12 使\Sigma对角元素的值不一样

     如图13所示,当我们使\Sigma的每个位置都有值时,即\Sigma不再是一个对角矩阵,这个时候我们会发现,整个图形是倾斜的,不再是一个正的,这时副对角线上的值为正。

                                                                                 图13 使\Sigma不再是一个对角矩阵

      当\Sigma副对角线上的值为负时,我们会发现,图形倾斜的方向相反了,如图14所示。

                                                                        图14 当\Sigma副对角线上的值为负时

       前面给大家说的都是改变\Sigma对高斯分布的影响,最后我们来说说\mu对图形的影响,如图15所示,其实和一元高斯分布一样,改变的是整个图形的整体分布,也就是中心的位置和\mu值一致。

                                                                                          图15 改变\mu的值

13.8 使用多元高斯分布来进行异常检测

       多変量ガウス分布を導入する1で、そしてもちろん私たちの目的は、異常を検出するためにそれを使用することです。与えられたデータセット{ためx^{(1)},x^{(2)},...,x^{(m)}}、我々が採用\mu =\frac{1}{m}\sum_{i=1}^{m}x^{(i)}し、\Sigma =\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu )(x^{(i)}-\mu )^{\top }2つの変数P(X)を得\mu、そして\Sigma次いでによってp(x)=\frac{1}{(2\pi )^{\frac{n}{2}}\left | \Sigma \right |^{\frac{1}{2}}}exp(-\frac{1}{2}(x-\mu )^{\top }\Sigma ^{-1}(x-\mu ))(X)大P(X)を計算し、最後にPに従って< \varepsilon異常クラスを決定します。

        フロントでは、我々は、pを導入する方法を見つける(x)の第一のp(各機能を得ることですx_{i};\mu _{i},\sigma _{i}^{2})、その後、P(X)を乗算し、それらの間の任意の接続はありますか?以下のために\Sigma私たちの当初に応じて得られる\sigma _{1}^{2},\sigma _{2}^{2},...,\sigma _{n}^{2}、構築\Sigma =\begin{bmatrix} \sigma _{1}^{2} &0 &0 &0 \\0 &\sigma _{2}^{2} &0 &0 \\... & ... & ... &... \\0 & 0&0 &\sigma _{n}^{2} \end{bmatrix}我々は比較を持っている両方のために、元の要求がpのためである(xは)メソッドは、2つの変数間の関係を把握することは容易ではない、それは、このような二つの変数へX3 = X1 / X2などの新しい変数を構築するために、独自のマニュアルを必要とします連絡先は共に考慮し、私たちの多変量ガウス分布は、両者の関係をつかむ自動的にすることができます。mがnより少ない、小さい場合しかし、元のアプローチはよく検出することができる、と我々の多変量ガウス分布ではなく、我々は要求として\Sigma逆行列を、場合M <N、\Sigma不可逆的な、それに注意を払う必要があります我々は通常、M> =多変量ガウス分布をするとき10N使用されるとき。、それぞれが自分の利益を持って、あなたが実際に使用されるだけで、最も適切な方法を選択することができます。

 

 

おすすめ

転載: blog.csdn.net/qq_36417014/article/details/84584285