從2019-nCoV趨勢預測問題,聯想到關於網路安全態勢預測問題的討論
0. 引言
在這篇文章中,筆者希望和大家討論一個話題,即未來趨勢是否可以被精確或概率性地預測。
對筆者所在的網路安全領域來說,由於網路攻擊和網路入侵常常變現出隨機性、非線性性的特徵,因此純粹的未來預測是非常困難的。筆者希望通過對2019Nconv疫情的趨勢預測問題的研究,搞清楚一個問題,即輿情的資料是否可以預測?如何預測?
同時我們將【疫情預測】和【網路安全的趨勢預測】進行橫向對比,闡述網路安全領域態勢預測的主要技術挑戰。
1. 我們為什麼需要態勢預測
在日益複雜的網路環境和動態變化的攻防場景下,如果能夠預測網路未來的安全狀況及其變化趨勢,可以位網路安全策略的選取、安全響應、以及主動防禦提供更好的主動性,儘可能地降低網路攻擊造成的危害。
所謂預測,是指在認識引起事物發展變化的外部因素和內部因素的基礎上,探究各內外因素影響事物變化的規律,進而估計和預測事物將來的發展趨勢,得出其未來發展變化的可能情形。
預測的實質即知道了過去、掌握了現在,並以此為基礎來估計未來。
依據預測的性質、任務來劃分,態勢預測可以分為定量預測和定型預測:
- 定量預測:利用原始資料和資訊,藉助數學模型和方法,分析資料前後之間的關係,得出其未來的發展變化規律,進而達到預測目的,主要方法有
- 時間序列
- 人工神經網路
- 灰色理論
- 迴歸分析
- 定性預測:主要依靠個人的經驗積累和能力,利用有限的原始資料進行推理、判斷和估測,主要方法有
- 專家評估法
- 類推法
- 判斷分析法
- 市場調查法
定型預測主要依靠領域專家的個人經驗來完成,本文不作過多討論。我們將注意力主要放在定量預測上,通過資料驅動的方式,智慧地完成態勢感知活動才是我們的目的。
態勢預測在獲取、變換及處理歷史和當前態勢資料序列的基礎上,通過建立數學模型,探尋態勢資料之間的發展變化規律,然後對態勢的未來發展趨勢和狀況進行類似推理,形成科學的判斷、推測和估計,做出定性或定量的描述,釋出預警,為安全人員制定正確的規劃和決策提供參考依據。
態勢預測的一般過程為:
- 首先獲取歷史態勢資料序列
- 運用技術方法處理和變換資料序列
- 然後利用數學模型,發現和識別安全態勢資料序列之間的關係和規律,建立包含時間變數、態勢變數的方程關係式
- 通過求解方程得到隨時間變化的態勢函式
2. 態勢預測是否是偽科學?什麼場景下可以進行態勢預測?
0x1:《周易》所謂的見微知著
關於態勢預測,未來預測這類問題,曾經困擾了筆者非常久。從網路安全的實際工程經驗來看,未來的態勢是不可預測的,原因有如下幾點:
- 網路安全攻防的主體是黑客,是量子態思想的人,對不可預測的黑客來說,為何發起、何時發起、針對誰發起攻擊都是未知且不可預測的。如果攻擊者不可預測,那麼如何能預測受害者何時遭受到攻擊呢
- 不僅僅是發起網路攻擊的黑客,就連伺服器的合法管理員,其本身的行為模式也是難以預測的,這就導致伺服器處於正常狀態時,其執行時系統行為資料序列往往也呈現出無規律的波動,這就導致了時序模型無法有效建模,更不用提未來預測了
關於這些疑惑,我們這個小節嘗試從中國古代經典《周易》中得到一些啟發。
《周易·說卦傳》裡寫道:“數往者順,知來者逆,是故易逆數也。”
對此,孔穎達解釋說:“《易》之為用,人慾數知既往之事者,《易》則順後而知之,人慾數知將來之事者,《易》則逆前而數之,是故聖人用此《易》道,以逆數知來事也。”
《周易》認為未來是可以通過“逆數”而預知的,“逆數”與“順數”正相反,
- “順數”是自多而寡,自上而下
- “逆數”卻是自少生多,自下積上
“下”就是事之始,“上”便是事之成”。邵雍在《皇極經世》裡說:“知古亦未必為古,今亦未必為今,皆自我而觀之也。”
這說明了“古今一道”的道理,既然我們能知道古,自然也能知道今,而現在的今也不過是未來的古和過去的未來,所以我們要超出“今”的侷限去認識過去和未來,所謂“安知千古之前,萬古之後,其人不自我而觀之也?”
《周易》裡預知未來的方法非常複雜,我們只簡單的介紹一個容易理解的方法——“知幾”。
邵雍的易圖裡,乾至震左行、坤自巽右行為“順”,反之為“逆”
所謂的“幾”就是《繫辭》裡說的“動之微,吉之先見者”,也就是事情出現的端倪、跡象。
事物的發展總有“窮則變,變則通,通則久”的規律,而在每一次劇變前總會有端倪作為先導,即所謂的“動之微”。這些微小的變化通過由少增多、由始積終,最後引發劇變,所以我們用“逆數”的辦法就可以預知到即將到來的變化。《周易》就曾說:“善不積不足以成名,惡不積不足以滅身”。勿以善小而不為,勿以惡小而為之。
精通易學者,其過人之處在於他總是能夠敏銳的察覺到“幾”的出現,進而推測出未來的結果,進而採取措施,進行趨吉避凶。因此,《繫辭》說:“夫《易》,聖人之所以極深而研幾也。”
- 當紂王開始用象牙做筷子時,箕子就察覺到奢侈之風即將到來,酒池肉林、鹿臺瓊室即將出現,百姓也會因此而離心王室,因此發出長嘆;
- 當晉武帝平定吳國之後,務在驕奢,不復留心治政。何曾就察覺到晉朝已時日無多,將來必有內亂;
- 明朝人萬二讀到朱元璋的詩,裡面說:“百僚未起朕先起,百僚已睡朕未睡。不如江南富足翁,日高五丈猶披被。”他立即看破了端倪,馬上把家資付託予人,自己泛舟而逃,兩年後許多江南大族果然被朝廷抄沒。
箕子見微知著
“知幾”在於發現事物變化的端倪,然後採取行動來趨吉避凶。但更為關鍵的是,我們應該用什麼辦法來發現這個端倪呢?
我們都知道,世界的運動變化都有一定的規律性,在自然界中尤其如此。整個世界都遵循《易》中的“理、象、數”規律運轉著,認識這三個因素,有助於見微知著。那麼什麼是“理、象、數”呢?我們用最通俗的語言來說明。
比如,地球、太陽及月亮按一定的規律執行,必然會在某時某刻某地出現日食或月食的現象。在這裡,
- 日食和月食就是我們所見到的“象”,
- 而造成這些“象”的內在本質原因、內在的“理”就是天體間的執行規律,
- 至於那個“某時某刻某地”則是最終的“數”。
諺語說:“朝霞不出門,晚霞行千里”,
- 霞與氣象為我們所見之“象”,
- 霞反映了空中雲層的變化,故能表現天氣,這是內在的“理”,
- 而“朝”與“晚”就是“數”;
又如在地震發生之前,總會出現動物不安、天象異常等災難的來臨前的端倪。這些都包含著理、象、數的道理。而我們通常所說的“徵兆”並不是別的東西,正是“理象數”中的“象”,也就是“幾”、端倪。
在自然現象中,端倪早已經為人所認可,人們根據自然現象的種種變化,進行農業耕作,日常作息,視其為極平常的事。可是在人類社會領域、計算機資訊領域,端倪卻變成了所謂的“黑天鵝事件”與“不可知論”,為何如此呢?
因為人們都樂意承認自然現象的必然性,卻不肯承認人類社會歷史領域和計算機資訊系統內的必然性。究其原因,還是人類社會領域和計算機資訊系統中的“象”不如自然現象的“象”容易認識,而且這些“象”常常是戴上了具有欺騙性和模糊性的面紗。
筆者觀點:
對於未來態勢預測,筆者認為純粹的突發性、階躍性的未來預測是不可能的,所謂的未來預測,一定是要被預測物件已經一定程度上表現出了一些細微的“跡象”,這些跡象可以是遵循某種物理客觀規律、強先驗推理、或者是事物發展初期表現出的一些測通道行為等。總之,未來態勢預測的大前提是待預測的物件本身包含一定程度上的“確定性規律”,同時這個確定性規律還是可以被我們捕獲到的,即可以被感知的,滿足了這兩個條件,未來態勢預測才有可能。
0x2:經濟學視角下的未來態勢預測
增長與波動是巨集觀經濟研究的兩大主要命題,也是經濟形勢分析最基礎的框架體系,
- 潛在增速決定了經濟執行的均衡趨勢,
- 經濟週期決定了經濟執行的波動態勢。
正如季有春夏秋冬、人有生老病死一樣,週期是客觀存在的,雖然每次長度和深度不完全相同,但經濟總是從繁榮到衰退周而復始地發生著,每個人都身處其中。“歷史不會重演,但總押著同樣的韻腳。”我們有可能採用歸納法、演繹法,在一定概率下推斷未來。
經濟領域所謂的未來預測,本質上是對【趨勢+週期性】的把握與預測。
而研究經濟週期有兩大目的:巨集觀調控和資產配置。
- 巨集觀調控的核心是分析經濟形勢並實施反週期操作,通過採用財政政策、貨幣政策等進行削峰填谷式的操作,熨平波動,促進經濟平穩執行。反思大蕭條誕生了凱恩斯主義,伯南克在研究大蕭條時聲稱找到了避免大蕭條的辦法,2008年以後美聯儲採取QE進行貨幣再膨脹,開啟了美國曆史上最長的經濟復甦。
- 資產配置的核心是研究有效解決資源稀缺問題,美林投資時鐘是資產配置領域的經典方法,通過對經濟增長和通脹兩個指標的分析,將經濟週期分為衰退、復甦、過熱、滯脹四個階段,並依次推薦債券、股票、大宗商品、現金。美國、中國等的歷史資料驗證了投資時鐘的有效性。
現代經典經濟週期理論歸納出了幾大典型商業週期:
- 短波的農業週期(又稱蛛網週期)揭示的是農業對價格的生產反饋週期,1年左右;
- 中短波的庫存週期(又稱基欽週期)揭示的是工商業部門的存貨調整週期,3年左右;
- 中長波的裝置投資週期(又稱朱格拉週期)揭示的是產業在生產裝置和基礎設施的迴圈投資活動,10年左右;
- 長波的建築週期(又稱庫茲涅茨週期)主要是住房建設活動導致的,30年左右;
- 超長波的創新週期(又稱康德拉耶夫週期)是由創新活動的集聚發生及退潮所致,60年左右。
經濟週期執行包括驅動因素和放大機制。
- 初始的驅動因素包括太陽活動、過度投資、有效需求不足、創新、政策衝擊等,
- 放大機制包括乘數加速數、抵押品信貸、貨幣加速器(即商業銀行的順週期行為)、情緒等。
筆者觀點:
在經濟學領域,未來預測的本質是經濟學領域內,經濟執行的規律是可以部分把握的。雖然對於自然災害,整體氣候變換這些因素無法精確把握,但是從整體上看,人類社會的經濟活動是由參與經濟活動的無數人所共同博弈形成的複雜系統,從統計學的觀點來看,由無數隨機事件組成的複雜整體系統,會呈現出一定程度上的確定性概率特性,這個概率特性,就是經濟學家需要去研究和把握的經濟學規律,基於這樣的規律,對未來進行趨勢性和週期性的預測,就成為了可能。
0x3:國家巨集觀經濟中GDP中的未來態勢預測
GDP預測不僅是巨集觀經濟學研究中的重要課題,很多非經濟學專業人士對此也頗感興趣。目前學界所使用的GDP預測方法或預測模型可以根據輸入資料的不同,粗略地分為兩大類:
- 歷史資料擬合模型,它們的共同特點是:只需要輸入GDP歷史資料,通過對已知資料的擬合來嘗試歸納出未來的發展趨勢。具體方法則有
- 移動平均法
- 指數平滑法
- 插值法
- 時間序列模型
- ARIMA模型
- 馬爾可夫鏈模型等等
- 多維輸入模型:對於歷史資料擬合模型來說,不管這類方法得出的預測結果本身有多麼準確,都無法回答大家最關心的問題:我們應該為了改善經濟/經濟的可持續發展做些什麼?當前的經濟發展趨勢將在何時迎來拐點?為了更好地輔助決策,我們往往希望得到一個更加有指導意義的GDP預測模型,這樣的模型除了以往的GDP資料,還需要其他的輸入,而且能夠評估這些輸入對預測結果的影響。
- 通過多維度的輸入資料來預測GDP,這類模型往往帶有鮮明的“自定義特色”,不同的作者對於哪些經濟社會指標與GDP的關係更緊密往往有自己的判斷,而這些判斷在實際的資料驗證過程中有些可能得到支援,而有些則可能被否定。
0x3:物理學視角下的未來態勢預測
物理學領域內的未來預測,更更多的是科學家們對物理底層規律性的準確把握,大部分情況下,其未來預測都是確定性的,例如:
- 明天的太陽幾點升起
- 下一個月潮將於幾點到來
- 哈雷彗星的迴歸準確時間
0x4:傳播學視角下的未來態勢預測
討論傳播學中的態勢感知之前,我們需要先了解一下影響資訊傳播的幾個關鍵因素。
有一書名叫《Contagious, Why Things Catch On》,中文名字叫《瘋傳》,作者是Jonah Berger,長期從事資訊傳播行為的研究。
這本書圍繞著一個主題:
什麼樣的資訊更容易被廣泛傳播?這些資訊有什麼特點?如何把我們的資訊傳遞給更多的人?- 為什麼支付寶的晒賬單、微信的晒歷史會迅速刷屏?
- 為什麼芙蓉姐姐、鳳姐、龐麥郎會迅速走紅?
- 為什麼大家都說杜蕾斯的社會化營銷做得最好?它的營銷方案的哪些特點讓其能夠屢次引發病毒式傳播?
- 你最近向身邊的人強力推薦過什麼?背後有哪些原因?
關於影響資訊傳播的六個因素,作者提出了STEPPS模型:
- social currency:我們分享讓我們看起來棒棒噠東西;
- trigger:我們分享正好在腦袋裡想起來的東西;
- emotion:我們分享讓我們情緒高度喚起的東西;
- public:想讓別人分享,必須先讓更多人看見;
- practical value:我們分享有價值、有用處的東西;
- stories:如何讓情節幫助進行資訊傳播;
回到傳播的態勢預測話題上來,為了體系化研究傳播的態勢預測問題,學術界提出了傳播動力學的理論體系。
病毒的流行、創新產品的推廣、觀點的傳遞都是在不同網路上的形形色色的傳播現象,既存在著現象後的不同起因和特徵,更存在著千絲萬縷的聯絡和共通的演化機理。
現實社會中的計算機病毒傳播、流行病傳播、資訊擴散、創新產品推廣和金融風險擴散都可以描述為“網路傳播動力學”。科學家們致力於揭示它們的傳播機制與規律,分析它們何時爆發、傳播範圍,並提出切實可行的預警與防控措施。
分析上述問題對我們的現實社會有著重要的意義。
- 對於政府而言,可以感知當前的輿情和疫情態勢,從而採取措施來控制網路輿情和大規模流行病的爆發;
- 對於網路電商而言,可以採取個性化推薦策略來營銷產品;
- 對於金融系統而言,可以預警早期金融風險,進而採取措施防止全球性金融危機爆發。
網路傳播動力學吸引了來自物理學、網路空間安全、電腦科學、系統科學和數學等各個領域的專家,他們利用自己所在領域的研究方法來研究上述問題,取得了豐碩的研究成果。事實上,這些網路傳播並非獨立存在於現實生活中,而是相互作用、共同演化,形成了共演化傳播動力學。例如,
- WNCRY勒索病毒在傳播的同時,關於其解決方案和預防措施的資訊也在快速擴散,在極大程度上降低了經濟損失;
- 由於HIV患者的免疫系統受到了損壞,他們更容易被其他傳染病性疾病感染;
- 2019Ecov冠狀病毒在傳播時,相關國家政府機構也在同時採取強力的管控措施,同時民眾對疫情的認識和重視程度也在逐步增加,這導致實際的疫情傳播結果是一個複雜因素的共演化結果;
科學家們對共演化傳播現象、演化斑圖和臨界現象已經做出了一些研究,並發現了一些有趣的現象,如系統會呈現出共存閾值、一級相變和磁滯回線等。
根據共演化傳播研究的物件差異性,可以將其大致分為
- 共演化生物傳播(Coevolution of biological contagions)
- 共演化社會傳播(Coevolution of social contagions)
- 意識—流行病傳播(Coevolution of awareness diffusion and epidemic spreading)
- 資源—流行病傳播(Coevolution of resource diffusion and epidemic spreading)四大類
1. 共演化生物傳播
實證研究表明,計算機病毒、流行病和資訊傳播大多可以刻畫為生物傳播,即個體之間的單次接觸可觸發感染。
其中,經典的:
- SIS
- SIR
- CP模型
都是生物傳播的典型模型。對於複雜網路上的單個生物傳播,系統總是呈現出連續的二級相變,且爆發閾值和臨界現象與網路拓撲結構密切相關。
為定量地刻畫傳播動力學過程,學者們提出了一些經典理論方法,如:
- 異質平均場
- 淬火平均場
- 動態資訊傳遞
- 點對近似
- 邊滲流理論等
總體來講,動態資訊傳遞方法總能很好地刻畫傳播,但對於無關聯區域性樹形網路,異質平均場、邊滲流、邊劃分方法也能取得較好的效果。
2. 共演化社會傳播
與生物傳播不同的是,社會傳播(如行為傳播、創新產品等)往往具有社會加強效應,即個體之間的單次接觸不一定會直接導致傳播,個體之間的接觸存在一個資訊傳播率的問題,即A和B接觸,A有一定的比例會將自己的某種觀念資訊傳遞給B並被B接受。
這種社會加強效應源於採納行為傳播中具有很強的風險性和不確定性,需要多次確認才能夠消除。當引入社會傳播在單個社會傳播中時,最終傳播範圍隨傳播概率呈現出連續或非連續增長,取決於社會加強效應的強度。
此外,系統相變和最終傳播範圍會受到網路拓撲結構和演化機制的影響。例如,集群系數會促進社會傳播。對於兩個社會傳播相繼或同時在網路上傳播時,抑制或協同作用可以將系統相變從非連續改變為連續。
3. 意識—流行病傳播
當流行病爆發時,與之相關的流行病意識或資訊也會同時在各種社交網路上傳播,使得未被感染的個體採取一些措施來保護自己,防止被流行病感染,進而抑制大規矩流行病爆發的可能。
為了定量刻畫意識對流行病傳播範圍的影響,學者們相繼研究了不同耦合機制、不同網路結構對其造成的影響。實證來講,通過分析谷歌趨勢和門診流行病資料,發現意識和流行病傳播存在一種非對稱耦合作用,即流行病傳播促進意識傳播,但意識傳播抑制流行病傳播。
意識—流行病共演化傳播
上圖中,Funk等人首次分析了單個社交網路上的意識—流行病耦合傳播,發現網路結構(如集群系數),會顯著影響意識對流行病的抑制作用。
對於UAU+SIS傳播模型,學者們發現系統存在一個元臨界點(metacritical point),其值與意識傳播和網路拓撲結構密切相關。對於SIR+SIR傳播模型,系統存在一個最優的意識傳播概率,使得流行病的最終傳播範圍被極大程度地抑制
筆者觀點:
傳播的結果和速度雖然受很多方面因素的影響,但是傳播本身遵循一定的底層規律,這個規律是可以被定義,感知,並對未來進行定量和定性的預測的。
4. 資源—流行病傳播
為了治癒流行病,我們往往需要消耗一定的資源(如藥品、財力等)。然而,這些資源往往是具有一定限制的,如何優化資源分配才能極大程度地抑制流行病爆發是一個極其重要的問題。此外,不同的資源分配策略下,系統的相變和臨界現象也會受到影響,這更是物理學者們關注的另一個重要問題。當限制系統總資源時,與經典的流行病傳播模型截然不同,流行病會呈現一級相變。
這一臨界現象表明,少量的資源匱乏可能導致大規模流行病突然爆發。對於資源和流行病共演化傳播模型,即資源量和流行病都隨時間而改變,與有限資源類似,若資源產生率較低時也可能會導致系統呈現出一級相變,如下圖所示),
有限資源控制流行病傳播
此外,個體的不同行為所引發的資源—流行病共演化傳播,也將導致不同型別的相變。這些現象取決於資源和流行病傳播的演化機制和資源分配策略。
Relevant Link:
http://www.360doc.com/showweb/0/0/894564652.aspx http://finance.sina.com.cn/stock/stockzmt/2019-04-06/doc-ihvhiqax0497038.shtml https://user.guancha.cn/main/content?id=30156 https://www.sec-un.org/%E5%AE%89%E5%85%A8%E7%9A%84%E8%BF%9B%E5%8C%96%E8%AE%BA%EF%BC%88%E4%BA%8C%EF%BC%89%EF%BC%9A%E6%9D%A5%E8%AF%B4%E8%AF%B4%E6%80%81%E5%8A%BF%E6%84%9F%E7%9F%A5/ http://blog.sciencenet.cn/blog-40841-1084903.html https://www.zhihu.com/question/20162816 https://link.zhihu.com/?target=https%3A//www.sciencedirect.com/science/article/pii/S0370157319302583 https://zhuanlan.zhihu.com/p/88916343
3. 基於灰色理論進行態勢預測
0x1:灰色理論的產生背景
灰色系統理論是中國學者鄧聚龍教授1982年3月在國際上首先提出來的。灰色系統理論的形成是有過程的。早年鄧教授從事控制理論和模糊系統的研究,取得了許多成果。後來,他接受了全國糧食預測的課題,為了搞好預測工作,他研究了概率統計、時間序列等常用方法,發現概率統計追求大樣本量,必須先知道分佈規律、發展趨勢,而時間序列只致力於資料的擬合,不注重規律的發現。
於是他用少量資料進行了微分方程建模的研究。將歷史資料做了各種處理,找到累加生成,發現累加生成曲線是近似的指數增長曲線,而指數增長正符合微分方程的形式。在此基礎上,進一步研究了離散函式光滑性、微分方程背景值、平射性等一些基本問題,同時考察了有限與無限的相對性,定義了指標集拓撲空間的灰倒數,最後解決了微分方程的建模問題。
從所建模型中,發現單數列微分模型有較好的擬合和外推特性,所需的最少資料只要四個,適合於預測。經過多個領域的使用驗證了模型的預測精度,且使用簡便,既可用於軟科學,如社會、經濟等方面,又可用於硬科學,如工業過程的預測控制。
多數列的微分模型,揭示了系統各因素間的動態關聯性,是建立系統綜合動態模型的基本方法。以單數列的微分方程GM(1,1)為基礎,得到了各類灰色預測方法,將GM(1,1)滲透到局勢決策與經典的運籌學的規劃中,建立了灰色決策,將已經建立的關聯度、關聯空間包括在內,這樣便形成了以系統分析、資訊處理(生成)、建模、預測、決策、控制為主要內容的灰色系統理論。
0x2:灰色系統簡介
灰色理論,以不確定系統為研究物件的一門系統科學新學科。
所謂灰色系統,是介於白色系統(一個系統的內部特徵完全已知,即系統的資訊是完全充分的)和黑色系統(一個系統的內部資訊對外界來說是一無所知的,只能通過它與外界的聯絡來加以觀測研究)之間的系統型別, 是指部分資訊已知,部分資訊未知的貧資訊不確定性系統。
如果一個系統具有層次、結構關係的模糊性,動態變化的隨機性,指標資料的不完備或不確定性,則稱這些特性為灰色性。具有灰色性的系統稱為灰色系統。對灰色系統建立的預測模型稱為灰色模型(Grey Model),簡稱GM模型,它揭示了系統內部事物連續發展變化的過程。
資訊不完全主要包含以下幾種情況:
- 系統因素不完全明確
- 因素關係不完全清楚
- 系統結構不完全知道
- 系統作用原理不完全明瞭
在灰色系統理論中,利用較少的或不確切的表示灰色系統行為特徵的原始資料序列,進行生成變換後,建立用以描述灰色系統內部事物連續變化過程的灰色微分預測模型,成為灰色模型(簡稱GM模型)。通過挖掘系統變化規律,對事物發展規律作出模糊性的長期描述。
從灰色系統中抽象出來的模型。灰色系統是既含有已知資訊,又含有未知資訊或非確知資訊的系統,這樣的系統普遍存在。研究灰色系統的重要內容之一是如何從一個不甚明確的、整體資訊不足的系統中抽象並建立起一個模型,該模型能使灰色系統的因素由不明確到明確,由知之甚少發展到知之較多提供研究基礎。
灰色系統理論是控制論的觀點和方法延伸到社會、經濟領域的產物,也是自動控制科學與運籌學數學方法相結合的結果。
經過多年的發展,灰色理論已建立起系統的結構體系,其主要內容包括:
- 以灰色朦朧集為基礎的理論體系
- 灰色朦朧集、灰色代數系統、灰色矩陣等是灰色理論的基礎
- 以灰色關聯空間為依託的分析體系:灰色系統分析主要包括:
- 灰色關聯分析
- 灰色聚類
- 灰色統計評估
- 以灰色序列生成為基礎的方法體系:灰色序列生成通過序列運算元來實現,灰色序列運算元主要包括:
- 緩衝運算元
- 均值生成運算元
- 以灰色模型未核心的模型體系:灰色模型則按照五個步驟進行模型構建,
- 通過灰色生成或序列運算元的作用弱化隨機性來挖掘潛在規律,
- 經過灰色差分方程與灰色微分方程之間的互換來實現“利用離散的資料序列建立連續的動態微分方程”的新飛躍
- 以系統分析、評估、建模、預測、決策、控制、優化為主體的技術體系
- 灰色預測是基於GM模型做出的定量預測,可分為多種型別
- 灰色決策包括灰色關聯決策、灰色統計、灰色層次決策、灰色局勢決策等
- 灰色控制包括本證性灰色系統的控制問題和以灰色系統方法為基礎構成的控制,如灰色關聯控制和GM(1,1)預測控制等
- 灰色優化技術包括灰色線性規劃、灰色非線性規劃、灰色整數規劃和灰色動態規劃等。
0x3:灰色理論建立依據
灰色理論認為能夠建立微分方程預測模型,其主要依據包括以下幾個方面。
- 灰色理論將隨機量當做在一定範圍內變化的灰色量,將隨機過程當做在一定範圍、一定時區內變化的灰色過程
- 灰色系統將無規律的歷史資料序列經累加後,使其變為具有指數增長規律的上升形狀數列,由於一階微分方程解的形式是指數增長形式,所以可對生成後數列建立微分方程模型。所以灰色模型實際上是生成數列所建模型
- 灰色理論通過灰色的不同生成方式、資料的不同取捨、不同級別的殘差GM模型來調整、修正、提高精度
- 對高階系統建模,灰色理論是通過GM(1,N)模型群解決的。GM(1,N)模型群也是一階微分方程組的灰色模型
- GM模型所得資料必須經過逆生長,即累減生成還原後才能應用
基本思想可以表述如下:
- 用原始資料組成原始序列(0),經累加生成法生成序列(1),它可以弱化原始資料的隨機性,使其呈現出較為明顯的特徵規律。
- 對生成變換後的序列(1) 建立微分方程型的模型即GM模型。GM(1,1) 模型表示1階的、1個變數的微分方程模型。
- 用GM(1,1) 模型進行預測,精度較高的僅僅是原點資料(0)(n) 以後的1到2個數據,即預測時刻越遠預測的意義越弱。這是因為任何一個灰色系統在發展過程中,隨著時間的推移,將會不斷地有一些隨即擾動和驅動因素進入系統,使系統的發展相繼地受其影響。
- 為了解決1階GM(1,1)表徵和描述能力不足的問題,我們可以基於1階的GM模型繼續衍生為高階GM模型,即GM(1,1) 模型群。在GM(1,1)模型群中,新陳代謝模型是最理想的模型。新陳代謝GM(1,1)模型的基本思想為,越接近的資料,對未來的影響越大,同一個輸入資訊,隨著時間的推移,其對趨勢的影響會逐漸減小。也就是說,在不斷補充新資訊的同時,去掉意義不大的老資訊,這樣的建模序列更能動態地反映系統最新的特徵,這實際上是一種動態預測模型。
0x4:灰色模型的應用場景
以sin(π*x/20)函式為例,對比“單調性區間檢驗”和“包含波動的區間檢驗”,觀察灰色模型預測的精度,
通過實驗可以得出以下結論,
- 灰色預測對於單調變化的序列預測精度較高,但是對波動變化明顯的序列而言,灰色預測的誤差相對比較大。
- 究其原因,灰色預測模型通過AGO累加生成序列,在這個過程中會將不規則變動視為干擾,在累加運算中會過濾掉一部分變動,而且由累加生成灰指數律定理可知,當序列足夠大時,存在級比為0.5的指數律,這就決定了灰色預測對單調變化預測具有很強的慣性,使得波動變化趨勢不敏感。
clc clear all % 本程式主要用來計算根據灰色理論建立的模型的預測值。 % 應用的數學模型是 GM(1,1)。 % 原始資料的處理方法是一次累加法。 x=[0:1:10]; x1=[10:1:20]; x2=[0:1:20]; y=sin(pi*x/20); n=length(y); yy=ones(n,1); yy(1)=y(1); for i=2:n yy(i)=yy(i-1)+y(i); end B=ones(n-1,2); for i=1:(n-1) B(i,1)=-(yy(i)+yy(i+1))/2; B(i,2)=1; end BT=B'; for j=1:n-1 YN(j)=y(j+1); end YN=YN'; A=inv(BT*B)*BT*YN; a=A(1); u=A(2); t=u/a; t_test=5; %需要預測個數 i=1:t_test+n; yys(i+1)=(y(1)-t).*exp(-a.*i)+t; yys(1)=y(1); for j=n+t_test:-1:2 ys(j)=yys(j)-yys(j-1); end x=1:n; xs=2:n+t_test; yn=ys(2:n+t_test); det=0; for i=2:n det=det+abs(yn(i)-y(i)); end det=det/(n-1); subplot(2,2,1),plot(x,y,'^r-',xs,yn,'b-o'),title('單調遞增' ),legend('實測值','預測值'); disp(['百分絕對誤差為:',num2str(det),'%']); disp(['預測值為: ',num2str(ys(n+1:n+t_test))]); %遞減 y1=sin(pi*x1/20); n1=length(y1); yy1=ones(n1,1); yy1(1)=y1(1); for i=2:n1 yy1(i)=yy1(i-1)+y1(i); end B1=ones(n1-1,2); for i=1:(n1-1) B1(i,1)=-(yy1(i)+yy1(i+1))/2; B1(i,2)=1; end BT1=B1'; for j=1:n1-1 YN1(j)=y1(j+1); end YN1=YN1'; A1=inv(BT1*B1)*BT1*YN1; a1=A1(1); u1=A1(2); t1=u1/a1; t_test1=5; %需要預測個數 i=1:t_test1+n1; yys1(i+1)=(y1(1)-t1).*exp(-a1.*i)+t1; yys1(1)=y1(1); for j=n1+t_test1:-1:2 ys1(j)=yys1(j)-yys1(j-1); end x21=1:n1; xs1=2:n1+t_test1; yn1=ys1(2:n1+t_test1); det1=0; for i=2:n1 det1=det1+abs(yn1(i)-y1(i)); end det1=det1/(n1-1); subplot(2,2,2),plot(x1,y1,'^r-',xs1,yn1,'b-o'),title('單調遞增' ),legend('實測值','預測值'); disp(['百分絕對誤差為:',num2str(det1),'%']); disp(['預測值為: ',num2str(ys1(n1+1:n1+t_test1))]); %整個區間 y2=sin(pi*x2/20); n2=length(y2); yy2=ones(n2,1); yy2(1)=y2(1); for i=2:n2 yy2(i)=yy2(i-1)+y2(i); end B2=ones(n2-1,2); for i=1:(n2-1) B2(i,1)=-(yy2(i)+yy2(i+1))/2; B2(i,2)=1; end BT2=B2'; for j=1:n2-1 YN2(j)=y2(j+1); end YN2=YN2'; A2=inv(BT2*B2)*BT2*YN2; a2=A2(1); u2=A2(2); t2=u2/a2; t_test2=5; %需要預測個數 i=1:t_test2+n2; yys2(i+1)=(y2(1)-t2).*exp(-a2.*i)+t2; yys2(1)=y2(1); for j=n2+t_test2:-1:2 ys2(j)=yys2(j)-yys2(j-1); end x22=1:n2; xs2=2:n2+t_test2; yn2=ys2(2:n2+t_test2); det2=0; for i=2:n2 det2=det2+abs(yn2(i)-y2(i)); end det2=det2/(n2-1); subplot(2,1,2),plot(x2,y2,'^r-',xs2,yn2,'b-o'),title('全區間' ),legend('實測值','預測值'); disp(['百分絕對誤差為:',num2str(det2),'%']); disp(['預測值為: ',num2str(ys2(n2+1:n2+t_test2))]);View Code
0x5:灰色模型的公理化定義
1. GM(1,1)模型
設 x(0) 為n個元素的數列 x(0) = (x(0)(1),x(0)(2),x(0)(3),....,x(0)(n)),x(0) 的AGO生成數列為:
x(1) = (x(1)(1),x(1)(2),x(1)(3),....,x(1)(n)),其中,
即每一級的數列當前值,都等於上一級數列從開始到當前位置的累加結果。
定義 x(1) 的灰導數為:
令 z(1) 為數列 x(1) 的緊鄰均值數列,即:
則:
於是定義GM(1,1)的微分方程模型為:
即:
其中 x(0)(k)稱為灰導數,a 稱為發展係數,z(1)(k)稱為白化背景值,b 稱為灰作用量。
將時刻 k=2,3,....,n帶入上式中有:
令,,,稱 Y 為資料向量,B 為資料矩陣,u 為引數向量,則 GM(1,1)模型可以表示為矩陣方程 Y = Bu。
由最小二乘法可以求得:
2. GM(1,N)模型
GM(1,N)的定義原理上和GM(1,1)是類似的。
GM(1,1)表示的模型是是 1 階方程,且只含 1 個變數的灰色模型。而 GM(1,N) 即表示模型是 1 階方程,但包含有 N 個變數的灰色模型。
0x6:灰色預測模型
1. 灰色預測的場景分類
灰色預測是對既含有已知資訊又含有不確定資訊的系統進行預測,也就是對在一定範圍內變化的、與時間有關的灰色過程進行預測。通過對原始資料的生成處理和灰色模型的建立,挖掘,發現,掌握和尋求系統變化的規律。
灰色模型生成序列具有較強的規律性,可以用來建立相應的微分方程模型,從而預測事物未來的發展趨勢和未來狀態,並對系統的未來狀態做出科學的定量分析。
按照其功能和特徵,灰色預測可分為時間序列預測、拓樸預測、區間預測、災變預測、季節災變預測、波形預測、系統預測等。
- 時間序列預測:即用觀察到的反映預測物件特徵的時間序列來構造灰色預測模型,預測未來某一時刻的特徵量,或者達到某一特徵量的時間
- 畸變預測:即通過灰色模型預測異常值出現的時刻,預測異常值什麼時候出現在特定時區內,或者指通過灰色模型預測災變值發生在一年內某個特定的時區或季節的災變預測
- 拓樸預測:通過原始資料作曲線,在曲線上按照特定值尋找該定值發生的所有時點,並以該定值為框架構成時點數列,然後建立模型來預測該定值所發生的時點
- 系統預測:通過對系統行為特徵指標建立一組相互關聯的灰色預測模型,預測系統中眾多變數間相互協調關係的變化
從目標結果上看,灰色預測是指:
- 利用 GM 模型對系統行為特徵的發展變化規律進行估計預測,同時也可以對行為特徵的異常情況發生的時刻進行估計計算,以及對在特定時區內發生事件的未來時間分佈情況做出研究等等。這些工作實質上是將“隨機過程”當作“灰色過程”,“隨機變數”當作“灰變數”,並主要以灰色系統理論中的 GM(1,1)模型來進行處理。
灰色預測在工業、農業、商業等經濟領域,以及環境、社會和軍事等領域中都有廣 泛的應用。特別是依據目前已有的資料對未來的發展趨勢做出預測分析。
筆者觀點:
由於網路安全事件具有極大的概率性、複雜性和突然性,對其進行預測相對較為困難。再加上已知、可利用的資訊一般也很少,為了充分利用、挖掘已知的少量資訊,可以利用灰色系統理論來挖掘資料資訊之間的規律,並識別它們之間的關係。
2. 灰色預測模型數理化描述
設已知參考資料列為:
做 1 次累加(AGO)生成數列:
,其中
求均值數列:
則
於是建立灰微分方程為:
相應的白化微分方程為:
記:,,,則由最小二乘法,求得使達到最小值。
求解上述白化微分方程得:
,k=0,1,....,n-1
為了保證建模方法的可行性,需要對已知資料列做必要的校驗處理,設參考資料為:
計算數列的級比,
如果所有的級比 λ(k) 都落在可容覆蓋內,則數列 x(0) 可以作為模型 GM(1,1) 的資料進行灰色預測。否則,需要對數列 x(0) 做必要的變換處理,使其落入可容覆蓋內。即取適當的常數c,作平移變換。
則數列的級比:
由此,我們可以得到預測值:
而且:
得到預測值後,我們還需要對GM模型的預測值進行檢驗,主要有兩種方法,即:
- 殘差檢驗
- 級比偏差值檢驗
(1)殘差檢驗:零殘差為,計算
這裡:
如果,則可認為達到一般要求;如果,則認為達到較高的要求。
(2)級比偏差值檢驗:首先由參考資料計算出級比 λ(k),再用發展係數 a 求出相應的級比偏差:
如果,則可認為達到一般要求;如果,則認為達到較高的要求。
3. 灰色預測建模過程
灰色預測的建模過程大致如下:
- 把原始資料加工成生成數
- 對殘差(模型計算值與實際值之差)修訂後,建立差分微分方程模型
- 進行基於關聯度收斂的分析
- GM模型所得資料進行逆生成還原
- 採用”五步建模“法,建立一種差分微分方程模型,即GM(1,1)預測模型。所謂五步建模包括
- 系統定性分析
- 因素分析
- 初步量化
- 動態量化
- 優化
4. 灰色預測模型的定量化公式分類
灰色預測模型主要分為兩大類,即
- 單序列灰色預測模型
- 區間灰數預測模型
1)單序列灰色預測模型
單序列灰色預測模型認為系統的行為現象儘管”朦朧“,資料儘管複雜,但必然是有序的,存在著某種內在規律,只不過這些規律被紛繁複雜的現象所掩蓋,人們很難直接從原始資料中找到某種內在的規律。
建立灰色模型之前,需要對原始時間序列按照某種要求進行預處理,得到有規律的時間序列資料,即生成列。
常用的灰色系統生成方式有:
- 累加生成
- 累減生成
- 均值生成
- 級比生成
單序列灰色預測模型可細分為:
- GM(1,1)模型
- DGM(1,1)模型
- GM(1,N)模型
- 灰色Verhulst模型
2)區間灰數預測模型
0x7:基於灰色模型進行預測的示例
1. 某地區未來降雨量災變預測
某地區年平均降雨量資料如下表,
某地區年平均降雨量資料
規定 ζ=320,並認為 x_0(i)<=ζ 為旱災。現在的任務是預測下一次旱災發生的時間。
寫出初始數列:
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt y = np.array([390.6, 412, 320, 559.2, 380.8, 542.4, 553, 310, 561, 300, 632, 540, 406.2, 313.8, 576, 587.6, 318.5]) x = np.linspace(0, len(y), len(y), endpoint=True) plt.figure(1) # plt.plot(x,c) plt.plot(x, y, color="blue", linewidth=3.0, linestyle="-", label="raint data", alpha=0.9) # 顏色 線寬 型別 標籤 透明度 # 座標軸的操作 # 座標軸的位置 ax = plt.gca() # 引入座標軸 ax.spines["right"].set_color("none") ax.spines["top"].set_color("none") ax.spines["left"].set_position(("data", 0)) ax.spines["bottom"].set_position(("data", 0)) # 座標軸的刻度顯示位置 ax.xaxis.set_ticks_position("bottom") ax.yaxis.set_ticks_position("left") # 設定座標的顯示範圍 plt.yticks(np.linspace(-1, 1, 5, endpoint=True)) # 設定座標的顯示範圍 # 設定刻度數字大小和邊框 for lable in ax.get_xticklabels() + ax.get_yticklabels(): lable.set_fontsize(16) # 刻度大小 lable.set_bbox(dict(facecolor="white", edgecolor="None", alpha=0.2)) # 刻度下面的小邊框 # 圖例 plt.legend(loc="upper left") # 網格線 plt.grid() plt.show()View Code
由於滿足的x(0)(i)即為異常值,易得下限災變數列為:
其對應的時刻數列為:
將數列 t 做 1 次累加,得到 1 次累加(AGO)生成數列:
建立 GM(1,1)模型,得:
預測到第6個及第7個數據為:
根據殘差校驗,由於
- 22.034 - 17 / 22.034 = 0.2284
- 28.3946 - 17 / 28.3946 = 0.4012
這表明下一次災害將發生在五年以後。
筆者觀點:
GM模型針對包含週期性和連續趨勢性的數列,具備較好的資訊捕獲與預測能力。GM(1,1)模型適用於具有較強指數規律的序列,只能描述單調的變化過程。
2. 利用灰色模型GM(1,1)預測長江汙水排放量
以下表的資料為依據,預測2005-2014年長江的汙水排放量(單位:億噸)。
1995-2004年的長江汙水排放量
從樣本數列圖中可以看出,此問題為一個複雜的非線性系統,樣本資料量少,但需要預測的時間較長,且汙水排放量的變化規律是一個不確定的系統。
%建立符號變數a(發展係數)和b(灰作用量) syms a b; c = [a b]'; %原始數列 A A = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285]; n = length(A); %對原始數列 A 做累加得到數列 B B = cumsum(A); %對數列 B 做緊鄰均值生成 for i = 2:n C(i) = (B(i) + B(i - 1))/2; end C(1) = []; %構造資料矩陣 B = [-C;ones(1,n-1)]; Y = A; Y(1) = []; Y = Y'; %使用最小二乘法計算引數 a(發展係數)和b(灰作用量) c = inv(B*B')*B*Y; c = c'; a = c(1); b = c(2); %預測後續資料 F = []; F(1) = A(1); for i = 2:(n+10) F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a; end %對數列 F 累減還原,得到預測出的資料 G = []; G(1) = A(1); for i = 2:(n+10) G(i) = F(i) - F(i-1); %得到預測出來的資料 end disp('預測資料為:'); G %模型檢驗 H = G(1:10); %計算殘差序列 epsilon = A - H; %法一:相對殘差Q檢驗 %計算相對誤差序列 delta = abs(epsilon./A); %計算相對誤差Q disp('相對殘差Q檢驗:') Q = mean(delta) %法二:方差比C檢驗 disp('方差比C檢驗:') C = std(epsilon, 1)/std(A, 1) %法三:小誤差概率P檢驗 S1 = std(A, 1); tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1); disp('小誤差概率P檢驗:') P = length(tmp)/n %繪製曲線圖 t1 = 1995:2004; t2 = 1995:2014; plot(t1, A,'ro'); hold on; plot(t2, G, 'g-'); xlabel('年份'); ylabel('汙水量/億噸'); legend('實際汙水排放量','預測汙水排放量'); title('長江汙水排放量增長曲線'); grid on;View Code
3. 利用灰色Verhulst模型(即Logistic模型)預測大腸桿菌菌種繁殖速度
將一定量的大腸桿菌菌種接種在液體培養基中,在一定條件下進行培養,觀察其生長繁殖規律。細菌懸液的濃度與混濁度成正比,故可用分光亮度計測定細菌懸液的光密度來推知菌液的濃度。每隔5h記錄OD600的值,得到下表。
我們的任務是預測大腸桿菌未來繁殖的數量。
此問題涉及生物的生長和繁殖規律,其曲線一般呈S型或變異S型,故考慮使用GM Verhulst模型來預測。
%建立符號變數a(發展係數)和b(灰作用量) syms a b; c = [a b]'; %原始數列 A A = [0.025, 0.023, 0.029, 0.044, 0.084, 0.164, 0.332, 0.521, 0.97, 1.6, 2.45, 3.11, 3.57, 3.76, 3.96, 4, 4.46, 4.4, 4.49, 4.76, 5.01]; n = length(A); %對原始數列 A 做累減得到數列 B for i = 2:n H(i) = A(i) - A(i - 1); end H(1) = []; %對原始數列 A 做緊鄰均值生成 for i = 2:n C(i) = (A(i) + A(i-1))/2; end C(1) = []; %構造資料矩陣 D = [-C; C.^2]; Y = H; Y = Y'; %使用最小二乘法計算引數 a(發展係數)和b(灰作用量) c = inv(D*D')*D*Y; c = c'; a = c(1); b = c(2); %得到預測出的資料 F = []; F(1) = A(1); for i = 2:(n+n) F(i) = (a*A(1))/(b*A(1)+(a - b*A(1))*exp(a*(i-1))); end disp('預測資料為:'); F %繪製曲線圖 t1 = 0:n-1; t2 = 0:2*n-1; plot(t1, A, 'ro'); hold on; plot(t2, F); xlabel('時間點均勻取樣/5h'); ylabel('細菌培養液吸光度/OD600'); legend('實際數量','預測數量'); title('大腸桿菌培養S形增長曲線'); grid on;View Code
筆者觀點:
從資訊理論的角度來看,數列未來預測的本質是對歷史數列資料中的資訊的提取和學習。所謂的歷史數列資料資訊,包括:
- 趨勢資訊
- 週期性資訊
- 統計規律性的隨機資訊
只有歷史數列資料中蘊含足夠豐富的資訊,灰色模型才能有效進行建模,進而才能有效地進行未來序列預測。可預測的前提是待預測的數列中包含明確的規律,且這個規律是可以通過數學的方式明確進行定義的,如果待預測物件完成是一個非線性混沌系統,則不太適合用GM模型進行預測。
Relevant Link:
https://zhuanlan.zhihu.com/p/40811400 https://wiki.mbalib.com/wiki/%E7%81%B0%E8%89%B2%E7%B3%BB%E7%BB%9F%E7%90%86%E8%AE%BA https://www.cnblogs.com/ECJTUACM-873284962/p/6721913.html https://cloud.tencent.com/developer/article/1086549 https://blog.csdn.net/jiede1/article/details/54381257 https://blog.csdn.net/WuchangI/article/details/79214882
4. 基於時間序列模型進行態勢預測
0x1:時間序列模型簡介
時間序列預測法是一種統計預測方法,是以時間序列所能反映的社會經濟現象的發展過程和規律性進行引申外推,預測其發展趨勢的方法。它研究預測目標與時間過程的演變關係,根據統計規律性構造擬合 X(t) 的最佳數學模型,濃縮時間序列資訊,簡化時間序列的表示,並用最佳數學模型來進行未來預測。
其中,時間序列是把客觀過程的一個變數或一組變數 X(t) 進行度量,在時刻上得到以時間 t 為自變數、離散化的有序集合:,自變數 t 可以有不同的物理意義,如長度、溫度或其他物理量等。
時間序列的波動是許多因素共同作用的結果。
0x2:時間序列分析的基本特徵
時間序列分析有以下兩個基本特徵:
- 一是時間序列分析根據過去的變化趨勢預測未來的發展,它的前提是假定事物的過去延續到未來。時間序列分析正是根據客觀事物發展的連續規律性,運用過去的歷史資料,通過統計分析以進一步推測未來的發展趨勢。事物的過去會延續到未來這個假設前提包含兩層含義:
- 不會發生突然的跳躍變化,即以相對小的的步伐前進
- 過去和當前的現象可能表明現在和將來活動的發展變化趨向
- 二是時間序列資料變動存在著規律性與不規律性。時間序列中的每個觀察值大小是影響變化的各種不同因素在同一時刻發生作用的綜合結果,從這些影響因素髮生作用的大小和方向變化的時間特性來看,這些因素造成的時間序列資料的變動分為四種類型:
- 趨勢性:某個變數隨著時間進展或自變數變化,呈現一種比較緩慢而長期的持續上升、下降、停留的同性質變動趨向,但變動幅度可能不相等
- 週期性:由於外部影響隨著自然季節的交替出現高峰與低谷的規律
- 隨機性:個別為隨機變動因素,整體呈現統計規律
- 綜合性:實際情況為幾種變動的疊加或組合
時序序列分析的這種特性,就決定了在一般情況下時間序列分析法對於短、近期預測比較顯著,但對於延伸到更遠的將來,就會出現很大的侷限性,導致預測值偏離實際較大而使決策失誤。
Relevant Link:
https://www.cnblogs.com/LittleHann/p/11177458.html
5. 基於迴歸分析模型進行態勢預測
0x1:迴歸分析簡介
基於因果關係進行態勢預測是學界和工業界的一個研究熱點,因果關係法的特點是由若干變數的觀測值來確定這些變數之間的依賴關係,從而由相關變數的未來值和尋找到的變數間的依賴關係來對某個變數進行預測。
迴歸分析就是因果關係法的一個主要類別,是一種統計學上分析資料的方法。基於迴歸分析預測態勢的方法是在分析各種因變數與自變數之間關聯關係的基礎上,確定自變數(態勢值)和因變數(評估指標)之間的邏輯、函式關係式,達到預測態勢的目的。
0x2:迴歸分析的定義和思路
現實世界中,每一種事物都與它周圍的事物相互聯絡、相互影響,反映客觀事物運動的各種變數之間也就存在一定的關係。
變數之間的關係大體可分為兩類:
- 函式關係:客觀事物之間的確定性關係,也可以稱為因果關係。可以用一個確定的數學表示式來反映
- 相關關係:反映事物之間的非嚴格、不確定的線性依存關係,難以用函式精確表達。對於這類關係,我們常用迴歸分析和相關分析來進行測度
- 相關分析是研究兩個或兩個以上隨機變數之間線性依存關係的緊密程度的方法,通常用相關係數表示
- 迴歸分析則是研究某一隨機變數(因變數)與其他一個或幾個普通變數(自變數)之間數量變動關係的方法,它有著明確的自變數和因變數,這是與相關分析顯著不同的地方
迴歸分析是確定兩種或兩種以上變數間相互依賴的定量關係的一種統計分析方法,其基本思路是:
- 從一組樣本資料出發,確定變數之間的數學關係式,對這些關係式的可信程度進行各種統計檢驗,並從影響某一特定變數的諸多變數中找出影響顯著的變數子集。
- 然後利用所求的關係式,根據一個或幾個變數的取值來預測或控制另一個特定變數的取值,並給出這種預測或者控制的精確程度
筆者思考:
對網路安全來說,筆者認為原則上是不存在函式關係的,因為網路安全不是一個自然科學,不存在完全確定的法則性函式。但是相關關係,尤其是強相關關係是存在的。例如:
- 磁碟落盤了一個web檔案,而該web檔案通過行為判斷確定其是一個webshell,而且這個web檔案所在的路徑又在外部可訪問web目錄下
- 從命令列審計中,發現有一個程序向登錄檔自啟動目錄下添加了一個可疑的自啟動項,根據安全人員的先驗經驗,這個行為有99%的置信度代表了伺服器被入侵了
強相關關係是網路安全運營人員的重點工作之一,幾乎大部分的檢測和防禦導向的安全研究,其根本目的都是為了尋找某種強相關關係。
0x3:迴歸模型的種類
迴歸模型是對統計關係進行定量描述的一種數學模型。按照不同的型別,可以將回歸模型分成不同型別,
- 根據迴歸分析涉及的自變數的多少,迴歸模型可以分為一元迴歸模型和多元迴歸模型。在實際工程應用中 ,一元迴歸是非常少見的,大部分是高維的多元迴歸模型
- 根據模型中自變數和因變數之間的關係是否為線性,可以分為線性迴歸模型和非線性迴歸模型,
- 如果迴歸分析中自變數和因變數的關係可以用一條直線近似表示,或者說兩類變數資料分佈大體上呈現直線趨勢,這種迴歸模型稱為線性迴歸模型
- 如果自變數和因變數的關係無法用一條直線近似表示,則為非線性迴歸模型,也稱為曲線迴歸模型
0x4:迴歸分析預測的步驟
迴歸分析預測法是在分析自變數和因變數之間相關關係的基礎上,建立變數之間的迴歸方程,並將迴歸方程作為預測模型,根據自變數在預測期的數量變化來預測因變數的變化。
迴歸分析預測法的一般步驟如下所示:
- 根據預測目標確定自變數和因變數:明確預測的具體目標,也就確定了因變數,如預測具體目標是攻擊行為趨勢,那麼攻擊行為趨勢就是因變數。通過資料採集和態勢提取,尋找與預測目標相關的影響因素,即自變數,並從中選出主要的影響因素
- 建立迴歸預測模型:根據自變數和因變數的歷史統計資料進行計算,在此基礎上建立迴歸分析方程,也就是迴歸分析預測模型
- 建立相關分析:迴歸分析是對具有因果關係的影響因素(自變數)和預測物件(因變數)所進行的數理統計分析處理,只有當自變數與因變數確實存在某種關係時,建立的迴歸方程才有意義。因此,作為自變數的因素與作為因變數的預測物件是否有關、相關程度如何,以及判斷這種相關程度的把握性多大,就成為進行迴歸分析必須要解決的問題。進行相關分析,一般需要求出相關關係,以相關關係的大小來判斷自變數和因變數的相關程度
- 校驗迴歸分析預測模型,計算預測誤差:迴歸分析預測模型是否可用於實際預測,取決於對迴歸分析預測模型的檢驗和對預測誤差的計算。迴歸方程只有通過各種檢驗,且預測誤差較小,才能將回歸方程作為預測模型進行預測
- 計算並確定預測值:最後,利用迴歸分析預測模型計算預測值,並對預測值進行綜合分析以確定最後的預測值
0x5:迴歸分析預測方法
迴歸分析預測方法有很多,大體上有三個度量指標,即自變數的個數、因變數的型別、以及迴歸線的形狀。
1. 線性迴歸
2. 邏輯迴歸
前面說過,使用迴歸預測模型的前提是待預測的物件的變化規律符合某種迴歸關係。我們以nconv疫情傳播的原理為例,
- 病毒在傳播初期,由於政府和民眾重視程度不夠,傳染數字指數增長,也即J型曲線,增長不受抑制,呈爆炸式的。比如一個人可以傳染三個人,三個人傳染九個人,九個人傳染27個人,不停的倍增。
- 在疫情出現之後,全國各地對確診或疑似患者進行隔離,阻止了部分病毒的傳播,因此傳染的速度會逐漸受到壓制,總體上上看,Logistic增長模型適用於nconv疫情傳播前中期的趨勢。
這裡需要注意的是,邏輯迴歸只適合在疫情傳播的前中期進行建模擬合。因為在疫情的中後期,由於強力管控措施、醫療資源投入增大、民眾重視程度提高等原因,病毒傳播的底層規律發生的遷移(在這裡具體說就是R0可再生指數)。
我們這裡以邏輯迴歸的一種變體,logistic增長函式,對疫情的前中期進行訓練,並對未來序列進行預測,目標是預測疫情傳播什麼時候得到收斂,即下行點。
1)logistic增長函式
當一個物種遷入到一個新生態系統中後,其數量會發生變化。假設該物種的起始數量小於環境的最大容納量,則數量會增長。該物種在此生態系統中有天敵、食物、空間等資源也不足(非理想環境),則增長函式滿足邏輯斯諦方程,影象呈S形,此方程是描述在資源有限的條件下種群增長規律的一個最佳數學模型。
- K為環境容量,即增長到最後,P(t)能達到的極限。
- P0為初始容量,就是t=0時刻的數量。
- r為增長速率,r越大則增長越快,越快逼近K值,r越小增長越慢,越慢逼近K值。
def logistic_increase_function(t,K,P0,r): # t:time t0:initial time P0:initial_value K:capacity r:increase_rate exp_value=np.exp(r*(t-t0)) return (K*exp_value*P0)/(K+(exp_value-1)*P0)
2)歷史資料準備
date num 2020/1/10 41 2020/1/11 41 2020/1/12 41 2020/1/13 41 2020/1/14 41 2020/1/15 41 2020/1/16 45 2020/1/17 62 2020/1/18 121 2020/1/19 198 2020/1/20 291 2020/1/21 440 2020/1/22 571 2020/1/23 830 2020/1/24 1287 2020/1/25 1975 2020/1/26 2744 2020/1/27 4515 2020/1/28 5974 2020/1/29 7711 2020/1/30 9692 2020/1/31 11791 2020/2/1 14380 2020/2/2 17205 2020/2/3 20438 2020/2/4 24324 2020/2/5 28018 2020/2/6 31161<