導航:首頁 > 源碼編譯 > 加權貝葉斯分類演算法

加權貝葉斯分類演算法

發布時間:2024-12-01 15:09:00

⑴ 經典機器學習系列之【集成學習】

  塌歷老中國有句老古話,叫「 三個臭皮匠頂個諸葛亮 」,說的是人多力量大,可也有句成語叫「 烏合之眾 」。在機器學習中也有一類演算法,將這兩種思想融合起來,取其精華,它就是 集成學習 ,演算法將不同的學習器融合在一起。

  在集成學習中,演算法不要求每個學習器性能最好,但是期望它們對問題具有不同的看法,Good But Different (好而不同)。

  如果在分類問題上描述的話,所表示的就是具有不同的劃分能力,對於一些樣本學習器 能劃分,對於另外一些樣本,學習器 能劃分。並不要求單個學習器對所有樣本都具備劃分能力。

  用專業一點的屬於來說的話,就是不同的學習器具有不同的偏好模型,但是每一個都是弱監督模型,集成學習將多個弱監督模型組合,得到一個好的強監督模型。其思想是,不同的學習器之間相互地錯誤糾正,以達到最終准確率的提升。

  集成學習,其英文名稱叫做( ensemble learning ),它通過將多個學習器集成在一起來達到學習的目的。主要是將有限的模型相互組合,其名稱有時也會有不同的叫法,有時也會被稱為多分類器系統( multi-classifier system )、委員會學習( committee learning )、Molar systems、classifier fusion、combination、aggregation等。這些概念相互之間互相聯系,又有些許區別,對於概念的定義業界還沒有達成共識。整個演算法所表現出來的性能非常地強悍,許多高水平的競賽(Knowledge Discovery and Data Mining、Kaggle)中都是首選。

  在機器學習,滿足訓練集的假設不一定在實際應用中有同樣好的表現,這樣學習演算法選擇哪個假設進行輸出的時候就面臨著一定的風險,把多個假設集成起來能夠降低這種風險(這可以理解為通過集成使得各個假設和目標假設之間的誤差得到一定程度的抵消)。

  在周志華西瓜書中通過Hoeffding不等式證明了, 隨著集成中個體分類器數目的增大 集成的錯誤率將指數級下降 最終趨於零

  集成學習先產生一組「個體學習器」( indivial learner ),再通過某種策略將其結合起來。依據每個個體學習器所採用的學習演算法是否相同,可以分為 同質集成 異質集成

  集成學習器性能要好於單個個體學習器需要滿足 好而不同 的兩點要求:

  第一個條件相對來說比較容易實現,在當前問題下訓練一個模型,結果比瞎猜的結果好就行了。 第二個條件是集成學習研究的核心問題 。每個個體學習器學習的都是同一個問題,所以個體學習器不可能做到完全相互獨立。想想小時候,老師讓你發爛歲表不同的觀點,想想寫論文的時候找創新點,人都很難做到這樣一件事情,何況它只是一個小小的學習演算法。

  想要在個體學習器足夠好的前提下,增強其多樣性,我們可以直觀上來想像一下。整個的演算法學習過程是從數據到模型再到輸出。

   首先考慮輸入 。如果每個學習器學習不同的樣本,那麼可以學習出相對來說不同的個體學習器。那麼現在的問題就是怎麼劃分訓練樣本,你可以隨機抽取,或者利用不同的屬性子集訓練出不同的個體學習器。

   其次考慮模型 ,如果基學習器的模型不一樣,也能訓練出不同的個體學習器。

   最後考慮輸出 ,如果我們依據標簽的特性來進團升行劃分,也能得到不同的個體學習器。

  依據上述三點概念,主要有以下5種方法:

  從原始訓練樣本中產生不同的樣本子集,然後利用不同的樣本子集訓練不同的個體學習器。如 Bagging 中使用的 自助采樣 Boosting 中使用的 序列采樣

  這種訓練樣本擾動的方法簡單高效,但 只對不穩定的基學習器有效 ,像 決策樹 、 神經網路 等;對於穩定的基學習器,如線性學習器、支持向量機、樸素貝葉斯、K-NN等,就效果不明顯,產生這個問題的原因就是因為穩定的基學習器,「變通能力」並不是很強。

  說到Bagging和Boosting,這里詳細介紹一下這兩種經典的方法:集成學習分為個體學習其之間存在強以來關系、必須 串列生成的序列化方法-Boosting 和不存在強依賴關系, 可同時生成並行化方法-Bagging

  具體的實現方法是:首先給每一個訓練 樣例賦予相同的權重 ,然後訓練第一個基本分類器並用它來對訓練集進行測試, 對於那些分類錯誤的測試樣例提高其權重 (實際演算法中是降低分類正確的樣例的權重), 然後用調整後的帶權訓練集訓練第二個基本分類器 ,然後重復這個過程直到最後得到一個足夠好的學習器。

  Boosting中最著名演算法是1997年Yoav Freund所提出的AdaBoost(Adaptive Boosting)方法。下圖是AdaBoost論文Bing學術搜索結果:

  本文以周志華西瓜書推導過程為例,以「 加性模型 」(additive model)進行解析:

  將基學習器 線性組合,則基學習器的線性組合表示為如下 形式:

  定義整個學習器的損失函數為指數損失函數( exponential loss function ),期望指數損失函數最小化:

  其中 是真實函數, , 表示樣本的權值分布(對於錯誤的樣本權重要高一點,正確的樣本權重要低一點,所有的樣本組合起來就相當於有一個分布)。

  若基學習器的線性組合 能夠使得指數損失函數最小化,一般的做法就是求偏導數,令其等於零,求解。由於 取值只有兩種,所以其求偏導數之後的結果如下所示:

  令其偏導數為0,解得:

  有:

  這意味著若指數損失函數最小化,則分類錯誤率也將最小化。說明指數損失函數是原任務的替代函數,但由於其連續可微,所以用它替代 0/1 損失函數作為優化目標。上面這么多就是說接下來用這個連續的指數損失函數做進一步的處理。

  在AdaBoost演算法中,第一個基分類器 通過直接將基學習演算法用於初始數據分布而得到;之後的 和 是通過迭代生成得到的。當基分類器 基於分布 產生之後,基分類器的權重 應該使得 最小化指數損失函數,只有 在判斷錯誤的基分類器給予較小權值,判斷正確的基分類器給予較大權值,才能使得 具有較准確的判斷,從而最小化指數損失函數

  其中 ,其實就是誤判率。為了求得基分類器的權重,對其求導:

  再令導數為0,可得:

  到這里相當於自適應做完了,在這里,AdaBoost自適應的思想採取的是加權多數表決的方法,上述公式體現出來的就是加大分類器誤差率小的弱分類器的權值,使其在表決中起較大作用。誤差率較大的則相反。

  現在要回到Boost的原理中對樣本的處理,在改變這個樣本的權值,或者說概率分布的時候,我們要實現的直觀想法是: 提高那些被前一輪弱分類器錯誤分類樣本的權值 降低那些被正確分類的樣本的權值 。接下來我們去把這個公式證出來:

   這里通過基學習器開始證明,看基學習器在什麼樣本分布下能夠學出來最小化分類誤差。

   AdaBoost 在得到 之後,調整樣本分布,使得 能學出來之前的基學習器無法學習到的東西,能糾正 的一些錯誤,那這個 就能夠最小化:

  注意到 ,上式可使用 的泰勒展開式近似為如下公式:

   於是理想的基學習器:

   注意到 是一個常數。令 表示一個分布:

   依據數學期望的定義,等價於令:

   由 , , ,有:

   則理想的基學習器:

  由此可見,理想的 將在分布 下最小化分類誤差。 和 的關系有:

  上述公式就是下圖AdaBoost的第7步更新公式,整個的AdaBoost演算法如下圖所示:

  AdaBoost 演算法第五行檢查當前基分類器是否比隨機猜測好,一旦不滿足條件,當前基學習器即被拋棄,且學習過程停止。在這個請款下就有可能導致集成中包含基學習器數量過少,導致整體性能不佳。採用「重采樣法」(re-sampling)來處理,即在每一輪學習中,根據樣本分布對訓練集重新采樣,再用重采樣而得到的樣本集對基學習器進行訓練,則可獲得重啟動。

  是並行式集成學習方法著名代表,基於自助采樣法( bootstrap sampling ),給定包含 個樣本的數據集,有放回隨機采樣,經過 次得到含有 個樣本的采樣集,這樣的采樣,初始訓練集中約有 的樣本出現在采樣集中。

  照這樣采樣出 個含 個訓練樣本的采樣集,然後基於每個采樣集訓練一個基學習器,再將這些基學習器進行結合。在預測輸出時,Bagging通常對分類任務使用 簡單投票法 。對回歸任務使用 簡單平均法

  上圖中 表示自助采樣產生的樣本分布。

  輸入屬性擾動通常是從初始屬性集中抽取出若干個屬性子集,然後利用不同的屬性子集訓練出不同的個體學習器。比如有:

   RF 在以 決策樹 為基學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程中引入隨機屬性。傳統決策樹在選擇劃分屬性時是在當前結點的屬性集合中選擇一個最優屬性;而在RF中,對基決策樹的每個結點, 先從該結點的屬性集合中隨機選擇一個包含 個屬性的子集 然後再從這個子集中選擇一個最優屬性用於劃分

  隨機森林中基學習器多樣性不僅來自樣本擾動,還來自屬性擾動,使得最終集成的泛化性能可通過個體學習器之間差異度的增加而進一步提升。

  但這類輸入屬性擾動的方法只對大量冗餘屬性的數據集有效,但若數據集只包含少量屬性,或者冗餘屬性很少,則不宜使用。隨機森林由於起始引入了屬性擾動,性能會比Bagging差一點,但隨著個體數量增多,隨機森林通常會收斂到更低的泛化誤差。

  演算法參數擾動指的是通過隨機設置不同的參數來訓練差別較大的個體學習器。如下圖所示的神經網路的隱層神經元數、初始連接權值等不同。

  此類方法對參數較多的演算法有效,對參數較少的演算法,可通過將其學習過程中某些環節用其他類似方法代替?從而達到擾動的目的。這可能也是發論文的一個點吧,自己以後可能也不咋用這個演算法,就不去做演算法調研了。

  輸出標記擾動是對訓練樣本的類別標記稍作變動,將原來的多分類問題隨機轉化 多個二分類問題 來訓練基學習器。經典的一個演算法就是糾錯輸出編碼法(Error-Correcting Output Codes,ECOC)

  將每個類別對應一個長度為n的二進制位串(稱為碼字),共形成m個碼字,這些碼字的同一位描述了一個二值函數。學習結束後獲得n個二分器,在分類階段,每個二分器對輸入樣本產生的輸出形成輸出向量,然後由決策規則判定輸入樣本的類別。

  這類方法對類數足夠多的數據集有效,但若數據集包含的類數較少,則不宜使用。

  混合擾動在同一個集成演算法中同時使用上述多種擾動方法。比如隨機森林就同時使用了訓練樣本擾動和輸入屬性擾動。

  上文五點討論的是如何產生好而不同的個體學習器。那產生了好而不同的個體學習器之後,我們如何結合這些策略?主要有 平均法 和常見的 投票法 (voting),具體包括:

  簡單地將輸出結果平均一下

  乘以權值系數將其加起來。

  即若某標記得票過半數,則分類為該標記,否則拒絕分類。

  分類為得票最多的標記,若同時有多個標記獲最高票,則從中隨機選取一個。

  給每個個體學習器預測的類標記賦一個權值,分類為權值最大的標記。這里的權值通常為該個體學習器的分類置信度(類成員概率)。

⑵ 經典分類模型

探索經典分類模型:支持向量機的深度解析


支持向量機(SVM)的核心策略是通過最大化分類邊界的寬度,即margin,以增強模型的泛化能力,避免過擬合。在理想情況下,它尋找離訓練數據點最遠的那個決策線。在二維空間中,目標是尋找最優向量 ( w ) 使得 ( frac{1}{|w|} ) 最大,即最小化 ( w ) 的平方和 ( w_1^2 + w_2^2 )。這個優化過程可以轉化為找到一個既能保證正確分類,又能最小化平方和的 ( w )。決策邊界由方程 ( w_1 x_1 + w_2 x_2 + w_0 = 0 ) 定義,通過縮放系數 ( α ) 保持間距恆定。SVM的目標是找到這個最優 ( w ),從而最大化margin,確保穩健分類。


P類 (y=+1): sign(w_1 x_1 + w_2 x_2 + w_0) = +1,邊界點和內部點遵循特定條件。


N類 (y=-1): sign(w_1 x_1 + w_2 x_2 + w_0) = -1,誤差點通過鬆弛變數 ( ε ) 鬆弛約束,允許錯誤分類,但目標是 minimize(w_1^2 + w_2^2 + C sum ε_i),其中 ( C ) 表示分類的權重,( ε_i ) 為每個誤差點的鬆弛值。


SVM的精髓在於找出支持向量(SV),它們決定了分類線。在訓練中,SVM關注邊界點和誤差點,而非所有內部點。通過拉格朗日乘子法,ε_((i)) 確定了誤差點的位置,模型預測則通過 y^' = sign(w^T x + w_0) 進行,其中 ( w^T x = sum α_((i)) y_((i)) x_((i))^T x )。與邏輯回歸相比,SVM不提供概率預測,而強調對異常點的魯棒性,其優化目標結合了正則化和分類誤差。


SVM通過「提前終止學習」策略,只在保證分類正確性的點上進行訓練,避免內部點干擾。在非線性可分數據中,SVM利用核函數(如多項式或高斯核)進行映射,如多項式核 ( K(x, z) = α(x cdot z)^d ) 和高斯核 ( K(x, z) = e^{-frac{|x - z|^2}{2σ^2}} ),以降低計算復雜性。


核函數在SVM中的應用


優化目標轉變為:minimize(|w'|^2+Csum ε_i),其中 ( w' ) 由加權系數 ( α ) 表示,約束條件用核函數代替了原始特徵的高維空間計算。預測時,使用 d=∑_{i in SV}[α_i y_i K(x, x_i)] + w_0,核函數無縫融入了非線性處理。


值得注意的是,盡管高維映射改變了支持向量在低維度的表現,但SVM通過核方法有效地簡化了計算,提升了非線性問題的解決能力。


從簡單到復雜:模型選擇與復雜性


樸素貝葉斯演算法,盡管基於獨立特徵假設,能快速處理缺失數據,但當特徵維度增加時,易受「維數災難」影響,過度簡化可能導致精度損失。正則化如奧卡姆剃刀原理,強調模型簡潔性,通過控制復雜度防止過擬合。從邏輯回歸的簡單模型到SVM的復雜結構,我們需要權衡模型的靈活性和准確性。


最後,SVM以最大化margin為目標,避免無限制降低Loss,符合奧卡姆剃刀原則。獲取更多機器學習資源,如《深度學習》電子版和0基礎教程,可通過後台聯系我們。

閱讀全文

與加權貝葉斯分類演算法相關的資料

熱點內容
java仿qq聊天 瀏覽:398
解壓的ipa重新打包 瀏覽:140
程序員那麼可愛vip版 瀏覽:237
程序員怎麼升職 瀏覽:241
圖形化命令按鈕vb 瀏覽:985
vcu盤加密怎麼設置 瀏覽:412
如何加密備份微信聊天記錄 瀏覽:527
安卓手機如何模擬鍵盤 瀏覽:930
查看dns地址命令 瀏覽:767
android錄屏工具 瀏覽:840
成都互動直播系統源碼 瀏覽:955
usb藍牙android 瀏覽:409
伺服器顯示error1什麼意思 瀏覽:710
python代碼精簡 瀏覽:459
文件加密了怎麼找到了 瀏覽:196
jellyfin插件怎麼選擇主伺服器 瀏覽:839
asp用戶注冊源碼 瀏覽:48
什麼是照片壓縮文件 瀏覽:394
java調用js代碼 瀏覽:981
崑山市民app怎麼修改身份信息 瀏覽:779