大家好!我叫拜倫‧溫格德 (Byron Wingerd),是 JMP 的系統工程師之一。我通常與東海岸的製藥公司合作。今天我將討論如何偵測微小的偏移。這需要查看過程數據或分析數據,並嘗試了解微小偏移何時發生以及如何檢測它們。回顧數據,查看數據並嘗試了解過去可能發生偏移的時間。我們討論的是如何從持續捕獲的資料雜訊中發現訊號。
我有一些警告要提醒你。你的流程並不愛你。你的系統,無論你的流程是什麼,無論是測量系統還是製造系統,還是淨化系統,無論它是什麼流程,它對輸入變化的敏感度都比你的進料品質控制方法更高。我的意思是什麼?你所尋找的東西,例如純度,如果你能偵測到它,那當然很好,但你無法偵測到那些你意想不到的東西。
除此之外,供應商的C of A(產品合格證),尤其是化學品的C of A,有時會被批次間抄襲。除非你擁有極其靈敏的檢測方法,否則你很難對原料的細微變化發出預警。對絕大多數人來說,這些改變根本不存在。
我還有一個警告要告訴你。你的追蹤和趨勢分析程式?它們不太好用。部分原因是我們。我們變得自滿。大家都說,如果警報太多,人們就會開始忽略它們。但另一方面,警報消失了。一切看起來都很好,一切都在掌控之中。我們什麼都不用擔心。我們也不再仔細查看數據了。我們無法偵測到會影響流程的因素,而且一切看起來都很好,所以我沒有仔細查看,我們可能會遇到麻煩。
我們為什麼要使用管制圖?我們為什麼要使用統計製程管制 (SPC)、控制變數法 (CPV),或隨便叫什麼?首要的一點是,我們要區分常見原因和特殊原因變異。這是一種響應我們檢測到的流程變化的機制。有了統計數據,我們可以對發現的問題非常敏感。我們也可以自動發出警報,以便在我們疏忽大意的時候發現問題。
但整個追蹤和趨勢分析並非可有可無。如果你從事製藥業,這是法律要求的。如果你從事其他類型的製造,ISO9000 也提到了這一點。這並非可有可無。我們都應該這樣做,並監控我們的流程。
另一個警告是,你的流程可能正在悄悄地警告你一些即將發生並讓你陷入困境的事情。我的意思是,有些製造實驗是意外發生的。有些情況千鈞一發,例如,差點失控,或是差點對那批產品失控。有些奇怪的事情並沒有失控,但你會發現,你可以在數據中發現一些細微的變化。問題是,你看不到那些你沒有註意到的東西。
另一方面,你不想被隨機性所迷惑,只想追逐隨機訊號。這就是控製圖的精髓所在。我們只想回應特殊原因變異,而不是常見原因變異。我們處於這個邊緣,就像查看介於兩者之間的資料一樣。
我想談談我們工具箱中一些用於檢測微小變化的工具的應用。我們有累積和圖(CUSUM charts)。這些圖非常棒。理想情況下,它們應該用於前瞻性地尋找已經發生的變化。它觀察的是過程中上升或下降的累積和。我們有不同的方法來解釋這些變化。另一個非常好的方法是指數加權移動平均圖(EWMA charts),也稱為指數加權移動平均圖(Expanentially Weighted Moving Average charts)。這些圖真的很棒。
然後我們可以深入探討變點檢測的概念。這涉及多變量分析中的一些內容,我們將討論一種稱為融合套索(Fused Lasso)的方法,然後我們甚至可以使用一些樹狀方法,例如分區、預測篩選、自舉森林等,來尋找正在發生的微小變化、轉變和漂移。 JMP 中有一些很棒的工具可以分析這些變化,我想談談其中的一些關鍵工具。
CUSUM 是一款出色的工具,可用於檢測過程中的細微變化,尤其是那些緩慢發生然後開始加速的漂移。我們可以透過查看圖表中非常明顯的模式來發現這些變化。過去,我們用的是 V-Mask 之類的工具,你只需要查看 V-Mask 以及 V-Mask 中資料的走向,感覺就像在揮手示意。它確實有效,非常可靠。但在 JMP 中,我們幾年前重建了這個平台,使其看起來更像常規的控製圖。使用起來非常方便。
控製圖,即累積和圖,使用了一些參數。其中有西格瑪,表示你想偵測到多大的差異。還有領先優勢,例如快速的初始響應。還有H值和K值,它們用來計算我們能偵測到多大的變化,以及我們使用的西格瑪值,也就是K-西格瑪區間。為了達到最佳效果,需要調整一些參數。
現在,我們提到的另一個控製圖是 EWMA。這是一種記憶體有限的控製圖,其中 CUSUM 關注的是累積和。 EWMA 具有記憶性,就像你讓先前的觀察對它產生多大的影響?你可以對這段記憶進行指數加權。同樣,它有一些參數。它包含目標值、Sigma,尤其是 Lambda。 Lambda 是平滑函數,就像在等待的過程中,你記憶中多久以前發生的事,或是什麼都不記得,或是介於兩者之間的事。
這兩種方法都是尋找偏移和漂移的常用方法,但使用它們需要一些背景知識和專業知識。你必須知道如何運用它們來精確地檢測出你想要的東西,因為如果你過度調整參數,你可能會檢測到不存在的東西,或者錯過已經存在的東西,而無法做出真正準確的判斷。
如果有某種方法,讓我們能夠使用某種類似機器學習的工具來做出這些判斷,並且不受我們的背景和理解的影響,那不是很好嗎?嗯,那會很酷。有一種方法可以幫助我們做到這一點,它叫做融合套索 (Fused Lasso)。它是工具箱的一部分,是高級現代迴歸方法。我們可以使用它來使用廣義迴歸。廣義回歸是 JMP Pro 的一項功能。它是一種懲罰迴歸方法。
過去,人們曾討論過將其作為一種尋找變化點的方法。它涉及一些複雜的數學運算和一些關於如何在數據中找到這些變化點的複雜想法。我必須承認,10年前,Clay Barker 在他的一次關於 Genreg、變化點檢測和融合套索的演講中提出了這個想法。
我覺得它最終成了一個腳註,而且非常重要。我用這個方法已經好幾年了,但我發現很少人知道。我的意思是,我認真聽克萊‧巴克說的每一句話,他是我的英雄。但其他人可能就不是了。
這時,你可能會說:「嘿,拜倫,我得稍微踩一下剎車。高級現代回歸方法?Genreg?我有點絕望,因為你在談論像JMP Pro這樣的軟體,還有一些我根本不想學的複雜數學。」 事實證明,這只是稍微複雜一點。它的設定相對容易,而且你可以設定一種檢測訊號的方法,這種方法可能比那些更簡單的方法更有優勢。
簡單介紹一下背景。人們長期以來一直在使用類似 JMP 中的分區平台之類的工具。如果你把時間當作 X,把 Y 作為你正在查看的回應,你就可以用它來找到平均值隨時間變化的位置,尤其是在使用一些正則化的時間表(例如行號之類的)時。它非常擅長尋找過程資料可能發生偏移的位置,例如可能發生的平均值偏移。它可以找到一些斷點。它在這方面非常擅長。
有幾個小問題。如果斷點太近,它就找不到它們。如果噪音太大,它也找不到它們。如果有很多斷點,它可能只會找到第一個,而找不到後面的。但這是一個非常酷的想法,因為你所做的,就像融合套索一樣,是試圖找到均值相似的組的鄰居,然後找出均值之間的差異。這正是分區所做的事。
回到這個進階迴歸技術,我們需要做的是建立一個特殊的資料結構,用一個非常簡單的(我說的「簡單」是指很短,但實際上並不簡單)的 JSL 語句來建立一個矩陣。這個矩陣就像投影片裡的那樣。想像對角線矩陣,第一列全是 1,下一列是 0,然後全是 1。再下一列是 0、0,然後全是 1。我們想要在資料表中查看的每一行都有一列。
如果我們有一百行數據,就會有一百列。如果有一千行數據,這個對角矩陣就會有一千列。為了簡單起見,稍後我將其稱為“發現矩陣”,但這完全是一個錯誤的杜撰術語。不過,對我來說,它確實有效。
過去,我們可以使用這個發現矩陣,也可以使用分區平台,做同樣的事情。這使得檢測突變的靈敏度更高,因為我們會找到某一列,它對應於平均值的變化。該列是資料集中的行。這種方法效果很好,而且設定起來也很簡單。
JMP 在過去幾年裡取得了長足進步。 JMP 中我最喜歡的功能之一是「預測篩選」。它的作用是建立大量決策樹,然後計算它們的平均值。
好的,關鍵在於:在預測篩選中,它會建立 100 棵樹,它會從發現矩陣中隨機抽取列樣本,並從我的資料中隨機抽取行樣本,只需查看我試圖解釋的 Y 值的隨機樣本即可。它會建造一棵樹。它會一遍又一遍地重複這個過程。
實際情況是,一個偏移可能與另一個偏移很接近,但這些偏移並不會出現在所有樹中。我們可以找到那些彼此接近的其他偏移。我們可以在整個資料集中找到大量的偏移。這解決了分區的一些問題,例如無法找到彼此接近的偏移,以及如果發生了多個偏移,則無法找到它們。這讓我們能夠找到更多。
我設置了一個沙盒來測試它的實際效果。多小才算小?我的沙盒是什麼樣子的?我想找出1-2個西格瑪(Sigma)變化的因素。我想找到系統性的改變。這就像我之前提到的那些意外的製造實驗或原料變化。它們並沒有讓我們失去控制,但可能稍微改變了一下。當這批材料用完後,變化又會回落。這些都是在生產過程中發生的微小變化,這讓我能夠回溯並診斷其中的一些變化。我想要的是真正發生的細微變化。
你可以想像一下這樣的情況:在我的沙盒中,我大約有200行資料。在前100行中,我在33行處進行了一次加1的平移,然後在66行處進行了一次減1的下移。假設我的平均值是3,我將其上移到4,然後再次回到3,這就是我的平均值。這其中存在一些噪音。這張圖非常清晰、漂亮。你看著它,會想:「好吧,拜倫,你開始這樣看數據吧,我總是可以找到這樣的數據。」 好的,但我最後會告訴你其中的奧妙。
在藍色區域,我沒有發現任何移位。前100行,我有一個明確的移位。第二個移位,什麼都沒有。這就是噪音所在。我不應該在這一部分發現任何東西,而我應該總是在33和66處發現一個移位。
當訊號很容易找到時,說我有一種方法可以做到這一點,這相當大膽。但假設我的數據看起來像這樣。假設我有幾千組數據。它們都疊加在一起繪製。這裡有一個模糊區域,我總是想找到33和66之間的偏移。平均而言,你仍然可以看到這些數據,然後說:「是的,拜倫,我完全看得出來。」 但其中一些會非常乾淨地偏移,而另一些則不會偏移,還有一些只是噪音,或者只是在那邊藍色區域隨機出現的遊走。我檢測到變化的準確率有多高?
舉個例子,能更清楚說明這一點。大約在33歲時,第一次轉變,我一眼就能看出,嘿,有些東西上升了。但第二次轉變,它就像一個下降的趨勢。這不太清楚。在我接近尾聲時,沒有漂移或轉變,它是在上升嗎?還是呈鋸齒狀?我不確定。這些轉變可能不太容易被發現或察覺。
好的,我先稍微說點兒,先給你們看看它在現實生活中是什麼樣子的,然後我們再回過頭來評估一些結果。好了,這是我的工具箱。我有一個隨機資料樣本,這個樣本,它有一個向上的偏移,用紅線標記,還有一個向下的偏移,也用紅線標記。這只是一個資料控製圖。光看這個,我很難說,是的,這裡面真的有東西。
我來到這裡,查看了累積和控製圖,紫色線條代表可能發生偏移的位置。我們可以清楚地看到,紫色線條與紅色線條對齊,累積和控製圖正在檢測這種偏移。如果我改變這裡的 K、H 和 Sigma 值,可以提高靈敏度。假設這個值是 0.15。現在,透過改變我查看的 K,我可以把它調小一點。我們再把它改得更小一些。我沒有找到 66,但它在這裡發現了一些變化,這個變化在 80-90 的範圍內。這表明發生了一些變化。但這是一個很好的測試。
我可以調低到這裡,這是我的 EWMA 圖。我把它放大一點。我有一個 Lambda 滑塊,我可以調整。如果我調到這裡,就沒有記憶值了。如果我調到這裡,就全是記憶值了。它和 CUSUM 圖幾乎一模一樣。我說過這個,我知道經常做控制圖的人會聽我的。請不要因為我這麼說就把我踢出去,但事實就是如此。在這裡,透過降低這個值或增加 Lambda,我可以在 33 左右找到變化點,但在 66 左右我什麼也找不到。
讓我們來看看第三種方法。這裡我用的是預測篩選法,我剛剛畫了一個帕累托圖。在預測篩選法中,我設定了我的發現矩陣。我們可以快速看一下資料集。不,我不會去看資料集。相信我,它就在那裡。我在這裡看到的是第一個猜測。它顯示第33行可能有一個偏移,而第二個猜測,也就是排名第二的,是65。我們在這裡看到142,然後是35,然後是40,然後是80,最後是70。我們的前幾個猜測都完全符合預期。
我所做的就是在這個圖表上為預測器螢幕上顯示的每一行畫一條藍線。它們解釋的比例就是這裡藍線的粗細。這說明,我認為我們看到了 33 左右的一個值,我認為我們看到了 65 左右的一個值。這很好地發現了平均值在變化過程中的偏移,因為您可以看到這裡,有一個點,如果您完全忽略這個點,那麼看起來這個值相對於那個值發生了偏移。但我們的肉眼可以捕捉到這一點,其他方法也可以捕捉到這一點,並嘗試將其納入。但它並沒有包含在所有的樹中,所以它讓我們找到了那個偏移,這很酷。
這能正常工作的頻率是多少?我想知道。我要回到PowerPoint這裡。讓我們重新開始吧。我模擬了數千個這樣的獨立資料集。每個資料集都同樣嘈雜,有些很容易檢測到,有些很難檢測到,但總數有數千個。我對每一組資料集運行了預測分析器,提取了前10個排名,然後檢查你選對了行嗎?
這就是我的發現。大多數時候,我們選取的點非常接近或剛好位於我們定義的移位點上。在極少數情況下,我們會選取位於雜訊值超過 100 的點,而我確信這些點不會有任何變化。看起來效果不錯。
讓我們來看看一些統計數據。這是基於 8,000 個不同的沙箱。到我們進行發現時,這個數字可能會更大。使用預測篩選進行評分時,我們只使用了 100 棵樹,我們查看了排名前 10 位的樹,我們有一個±3 的視窗。 33 個樹±3,66 個樹±3。它在這個範圍內進行篩選嗎?對於這兩棵樹,95% 的時間同時位於前 10 位,是的。它發現了 33 個樹,90% 的時間在 33 位元發生偏移,66 個樹,92% 的時間在 33 位元發生偏移。它在發現這些樹方面做得相當不錯,這太棒了。
在這張圖中,我試圖表達敏感性和特異性的概念。這是在預測篩選中,我們得到前10個排名,也就是前10個因素。我想問的是,它在±3個視窗內,還是±12個視窗內,佔比是多少?第一個選擇幾乎總是被選中。在噪音中,第一個選擇,尤其是前五個選擇,出現的頻率非常低。這是一種非常好、非常靈敏的方法。
結論:首先,在 JMP 中,小偏移偵測可以透過多種方法實現,但融合套索方法的概念非常棒。 JMP 19 圖形產生器中將會有一個小彩蛋,它是其中一個特色功能。我不確定,但 19 版本發佈時可以看看。這些進階方法非常簡單,因為您只需使用腳本即可產生發現矩陣。無需任何調整,這種融合套索方法就能發揮出色效果。只需一點技巧和大量機會。
有沒有一個腳本可以讓我自己用?你們會分享那個沙盒工具嗎?是的。等Discovery上線的時候,會有一個很棒的插件。你可以選擇數據,使用沙盒工具和Explorer工具,進行多種位移偵測。另外,我會重新發布Clay用來製作Discovery矩陣的劇本。希望這有用,或至少有趣。希望在Discovery見到你們。如果你們在走廊上看到我,記得跟我打個招呼。我應該在那裡。
待會兒再見。保持警惕。