古老的spc也可以用機器學習(一)-k均值算法

大家都很清楚SPC的中文叫統(tǒng)計過程控制耘拇,它的作用是發(fā)現(xiàn)過程數(shù)據(jù)中的異常行為缺狠,SPC有8種以上的判異規(guī)則,每一中判異規(guī)則對應可能的異常原因型雳,非常實用当凡。

現(xiàn)在大數(shù)據(jù)、機器學習應用越來越廣泛纠俭,而機器學習算法的一個常見應用就算異常檢測沿量,接下來的一系列內(nèi)容的更新都會分別介紹不同的機器學習算法來進行異常檢測,包括算法基本原理冤荆、系統(tǒng)實現(xiàn)和應用朴则。

注意:SPC是異常判定的一種方法,其他機器學習同樣可以做異常判定钓简,不要認為標題的K均值算法是SPC哦乌妒,標題而已。但我們可以把其他異常判定算法的異常判定結(jié)果放到SPC控制圖中外邓。

本文介紹的是一種叫做K-mean(k均值)的聚類分析方法撤蚊。

“ 聚類分析(英語:Cluster analysis)亦稱為群集分析,是對于統(tǒng)計數(shù)據(jù)分析的一門技術(shù)损话,在許多領域受到廣泛應用拴魄,包括機器學習,數(shù)據(jù)挖掘席镀,模式識別匹中,圖像分析以及生物信息,顧客分類豪诲,文章分類等顶捷。聚類是把相似的對象通過靜態(tài)分類的方法分成不同的組別或者更多的子集(subset),這樣讓在同一個子集中的成員對象都有相似的一些屬性屎篱,常見的包括在坐標系中更加短的空間距離等服赎。一般把數(shù)據(jù)聚類歸納為一種非監(jiān)督式學習葵蒂。”

K均值算法過程如下:

  • 首先我們選擇一些類/組重虑,并隨機初始化它們各自的中心點践付。中心點是與每個數(shù)據(jù)點向量長度相同的位置。這需要我們提前預知類的數(shù)量(即中心點的數(shù)量)缺厉。
  • 計算每個數(shù)據(jù)點到中心點的距離永高,數(shù)據(jù)點距離哪個中心點最近就劃分到哪一類中。
  • 計算每一類中中心點作為新的中心點提针。
  • 重復以上步驟命爬,直到每一類中心在每次迭代后變化不大為止。也可以多次隨機初始化中心點辐脖,然后選擇運行結(jié)果最好的一個饲宛。
機器學習K均值異常檢測

隨機選擇2個點(k=2)C1和C2,將剩下的所有點,根據(jù)距離C1和C2的距離的遠近,劃分給C1或者C2

機器學習K均值異常檢測

根據(jù)獲得的兩類點嗜价,重新計算兩類點中的質(zhì)心(到該類所有點的距離最短)重新將所有的點歸到兩個新的質(zhì)心的其中之一艇抠。 重復上面的過程,直到每一類中心在每次迭代后變化不大為止久锥。

k均值Python實現(xiàn)算法如下:

簡單一點练链,我們用一維數(shù)據(jù)來演示(檢測數(shù)據(jù)很多是一維的)。

1)導入機器學習模塊(這里我們使用了scikit-learn)

<pre style="box-sizing: border-box; margin: 0px 0px 1rem; padding: 0px; border: none; outline: none; -webkit-tap-highlight-color: transparent; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 14px; overflow: auto; display: block; color: rgb(33, 37, 41); -webkit-font-smoothing: antialiased; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"> import pandas as pd import numpy as np from sklearn.cluster import KMeans
</pre>

2)算法實現(xiàn)

<pre style="box-sizing: border-box; margin: 0px 0px 1rem; padding: 0px; border: none; outline: none; -webkit-tap-highlight-color: transparent; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 14px; overflow: auto; display: block; color: rgb(33, 37, 41); -webkit-font-smoothing: antialiased; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"> y =[470,509,500,511,435,489,483,483,482,483,504,472,464,481,501,581,507,558,569,467,382,464,482,474,482,478,477,536,485,502,489,507,432,507,470,482,485,482,505,470,487,476] km = KMeans(n_clusters=2) km.fit(y) y['fcst'] = km.predict(y)
</pre>

輸入一個y奴拦,定義分成兩類(自動一類正常媒鼓,一類不正常), 字段fcst記錄了預測的分類結(jié)果错妖,有兩個分類0和1绿鸣,但我們不知道哪一類才算正常,我們一個合理的假定暂氯,分類中多的是正常的潮模,少的是異常的。

3)異常判定的處理

<pre style="box-sizing: border-box; margin: 0px 0px 1rem; padding: 0px; border: none; outline: none; -webkit-tap-highlight-color: transparent; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 14px; overflow: auto; display: block; color: rgb(33, 37, 41); -webkit-font-smoothing: antialiased; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 300; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"> `label0 = y[y.fcst==0]['fcst'].count()
label1 = y[y.fcst==1]['fcst'].count()
if label1<=label0:
y['isAbnormal ']=y['fcst']
else:
y.loc[y['fcst'] == 0, 'isAbnormal'] = 1
y.loc[y['fcst'] == 1, 'isAbnormal'] = 0

y.columns = ['data','fcst','isAbnormal']
y['isAbnormal']= y['isAbnormal'].astype(int)
y = y[['data','isAbnormal']]`
</pre>

記錄分類為1的數(shù)量和分類為0的數(shù)量痴施,最終用字段isAbnormal記錄是否異常擎厢,0為正常,1為異常辣吃。

結(jié)果如下:

機器學習K均值異常檢測

至此动遭,我們已經(jīng)完成了一種機器學習的異常檢測。

SPC系統(tǒng)實現(xiàn):

接下來看看我們在SPC系統(tǒng)上的實現(xiàn)神得。

我們把K均值算法得到的異常點厘惦,直接顯示在SPC控制圖上,請看下圖哩簿。也可以選擇不顯示宵蕉。

機器學習K均值異常檢測

這樣我們就可以在SPC控制圖上顯示其他異常判定算法的異常判定結(jié)果了≡途玻現(xiàn)在知道機器學習怎么和SPC結(jié)合在一起如何使用了吧。

如果你想了解上面的功能的測試羡玛,

下方鏈接可以在線體驗和上圖完成一樣的功能别智。

http://www.simplespc.cn/demos/single1.php

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市稼稿,隨后出現(xiàn)的幾起案子薄榛,更是在濱河造成了極大的恐慌,老刑警劉巖渺杉,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛇数,死亡現(xiàn)場離奇詭異挪钓,居然都是意外死亡是越,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門碌上,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倚评,“玉大人,你說我怎么就攤上這事馏予√煳啵” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵霞丧,是天一觀的道長呢岗。 經(jīng)常有香客問我,道長蛹尝,這世上最難降的妖魔是什么后豫? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮突那,結(jié)果婚禮上挫酿,老公的妹妹穿的比我還像新娘。我一直安慰自己愕难,他們只是感情好早龟,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著猫缭,像睡著了一般葱弟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猜丹,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天翘悉,我揣著相機與錄音,去河邊找鬼居触。 笑死妖混,一個胖子當著我的面吹牛老赤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播制市,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼抬旺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祥楣?” 一聲冷哼從身側(cè)響起开财,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎误褪,沒想到半個月后责鳍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡兽间,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年历葛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘀略。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡恤溶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帜羊,到底是詐尸還是另有隱情咒程,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布讼育,位于F島的核電站帐姻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奶段。R本人自食惡果不足惜饥瓷,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忧饭。 院中可真熱鬧扛伍,春花似錦、人聲如沸词裤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吼砂。三九已至逆航,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渔肩,已是汗流浹背因俐。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抹剩。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓撑帖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親澳眷。 傳聞我的和親對象是個殘疾皇子胡嘿,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容