書名: 工業大數據分析算法實戰作者名: 田春華本章字數: 1860字更新時間: 2023-05-06 17:52:30
1.4.3 分析算法背后的樸素思想
數據分析算法可以從優化角度去看,也可以從概率的角度去看。從優化的角度,數據分析算法的目的是在一定的模型結構約束(例如線性模型、神經網絡結構模型)下,最大化某個性能指標或極小化某個懲罰函數[38] ;從概率的角度,因變量的均值和方差仍然用確定性函數關系(參數化)表示,概率分布描述了這些關系刻畫的不確定性和參數的先驗分布,目標是極大化似然度、后驗概率分布,獲得參數的點/區間估計,或者概率估計(也稱為貝葉斯估計)。
一個問題的定義有很多方式:①指令式(Imperative),通過算法邏輯詳細定義求解過程,很多啟發式規則問題都屬于這一類;②聲明式(Declarative),將問題建模與求解引擎獨立開來,用戶只需要建模,求解過程交給算法引擎,整數規劃和機器學習算法都屬于這一類;③激勵式(Incentive),用獎勵或懲罰的方式獲得期望的行為結果(隱性結構),而不是強行約束的方式。例如,深度學習中GAN(Generative Adversarial Network,生成對抗網絡)、DBM(Deep Belief Network,深度信念網絡)都是利用損失函數的方式,讓學習出來(或降維后)的向量和原始向量接近(偏差部分要么認為是噪聲,要么是模型擬合誤差),或者保持某種性質(例如距離不變性,樣本間在原始高維空間的距離與在變換后低維空間的距離不變,或保持有序性)。
懲罰函數包括擬合的損失函數(擬合誤差、似然度),以及模型結構的復雜度(插值、稀疏)。不同的損失函數代表著對不同誤差的容忍程度。例如,在回歸問題中,相對常用的均方誤差,絕對值誤差意味著對大的偏差容忍度高一些,另外,坡道(Ramp)損失函數對誤差較大的區域進行截斷,使得較大的誤差不會大程度地影響整個誤差函數,這樣出來的模型魯棒性更強些。
模型結構可以是因變量與預測量(自變量)間的全局關系,也可以通過直接定義相鄰預測變量間的相似度(核函數)形成,可以說是隱性的局部結構。距離上可以采用歐氏距離,也可以采用其他距離,不同距離的選擇隱含著某種特性。例如,兩個時序向量采用余弦相似度距離主要關心相位同步性,幅度不重要;采用DTW(Dynamic Time Wrapping,動態時間規整)距離則允許局部拉伸壓縮,相位不重要,幅度仍然重要。模型結構的選擇取決于業務問題中的不變性(Invariant)。例如,圖像分類結果通常應該是關于位移、旋轉、放大/縮小不變的。也就說,一只貓的圖片,無論貓做什么位移、旋轉、放大/縮小,研判結果都應該是一樣的,CNN(Convolutional Neural Network,卷積神經網絡)模型結構中的池化(不論在什么位置)、多層次卷積(對應放大或縮小,也對應不同層面特征的提取和旋轉)可能很好地滿足這些不變性的要求。
模型的求解算法分為以下幾類:①解析表達式(包括矩陣計算),如線性回歸模型;②存在明確梯度甚至Hessian矩陣,可以通過梯度算法收斂;③變量空間上的分而治之,例如決策樹模型等;④多個變量間的迭代求解,先固定一部分變量,利用性質定理或局部優化算法,求解剩余變量(局部優化解),然后再固定這些剩余變量,求解原來的部分變量,例如EM聚類、K-means算法等;⑤轉化為典型范式的模型,特別是在整數規劃上,存在很多模型范式,該范式下存在很多高效的算法。有時候可以通過增加參數,將非線性整數優化模型轉化為整數規劃模型,借用通用高效的引擎求解。
任何模型一定是簡化的,不要為了細枝末節的因素,讓模型過度復雜。要考慮模型的可解性,利用其性質定理縮小搜索范圍,或者采用梯度信息指示搜索方向,或者采用分而治之(divide-conquer)策略,將一個復雜全局問題分解為簡單的子空間求解問題。《圖解機器學習》的讀者可能都會感覺到:最小二乘法和線性模型可以解釋神經網絡、支持向量機等很多復雜模型。
很多工科背景人更相信確定性關系,對概率性關系常常持有懷疑態度。這個思維定式需要轉變。首先,概率是一種關系描述方式,很多關系天然是隨機的,例如,一個單詞的音頻中,音素的持續時間和停頓時長都是隨機的,不同人不同,同一個人兩次說話都不可能完全相同,但總體上有一定規律,這樣的規律用概率模型去描述比確定性模型或規則描述更合適。其實,概率可以近似看作一種研判的“置信度”,很多問題的研判本身也不是非黑即白的,存在模糊地帶。其次,很多過程本質是確定的,但結果對模型參數、初始狀態的敏感度太高(學術上說的混沌系統),對模型參數、初始狀態的精確估算不可能或不經濟,這時候將模型簡化為一個概率模型也許更實際。例如,拋硬幣看落地是正面、反面,在不存在空氣擾動、地面是平整且摩擦系數均勻的假設下,這個過程可以建模為一個常微分方程[39] ,結果由硬幣的質量分布、拋出時的初始狀態完全確定,但結果對參數和初始狀態的敏感度太高,還不如通過多次觀察,建立一個概率分布模型更直接。
- 程序員修煉之道:從小工到專家
- Python絕技:運用Python成為頂級數據工程師
- Test-Driven Development with Mockito
- Python廣告數據挖掘與分析實戰
- 云計算與大數據應用
- 數據結構與算法(C語言版)
- 大數據:規劃、實施、運維
- 算法與數據中臺:基于Google、Facebook與微博實踐
- Sybase數據庫在UNIX、Windows上的實施和管理
- 數據庫技術及應用教程
- Oracle PL/SQL實例精解(原書第5版)
- Python數據分析與數據化運營
- 淘寶、天貓電商數據分析與挖掘實戰(第2版)
- SOLIDWORKS 2018中文版機械設計基礎與實例教程
- Learning Ansible