本章繼上一章中介紹的基本分類方法後,又介紹了分類的高級方法:
貝葉斯網絡
在貝葉斯網絡中,不強調變量之間的獨立性。承認變量或屬性間的依賴關係。
在給定的網絡拓撲圖中,給定概念。
一條弧由節點Y到Z,則Y是Z的雙親或直接前驅,而Z是Y的後代。
給定其雙親,每個變量條件獨立於圖中它的非後代。
這也說明對於每個變量,應考慮她的雙親節點的所有可能取值的組合情況下,變量取值的概率。
即
由此給出,每個變量或屬性對應的條件概率表CPT。
以上爲肺癌患者屬性的關係圖。
其中以肺癌
爲例,該變量的CPT爲:
- | A,E | A,-E | -A,E | -A,-E |
---|---|---|---|---|
B | 0.8 | 0.5 | 0.7 | 0.1 |
-B | 0.2 | 0.5 | 0.3 | 0.9 |
則可以得出:
使用貝葉斯網絡進行分類時,並不是返回單個類標號,而是返回概率分佈,給出每個類的概率。
用以上例子,我們還可以用來回答實證式查詢的概率(倘若給定一個人X光片有問題和呼吸困難,他患肺癌的概率有多大)和最可能的查詢解釋(哪些人羣最有可能X光片有問題和呼吸困難)。
訓練貝葉斯網絡
步驟:
- 計算梯度
- 沿梯度方向前進一小步
- 重新規格化權重
後向傳播
後向傳播是神經網絡的入門知識,包括前饋神經網絡和後向傳播更新權重和偏差。
而將後向傳播應用於分類,則包括二分類和多分類,取決於輸出層的函數(softmax或者relu)
優點
在缺乏屬性與類之間的聯繫的知識時可以使用該方法,並且非常適合連續值的輸入和輸出。
缺點
得到局部極小值。
SVM支持向量機
具體的解釋和推導都應該在機器學習中學習。
在分類中,SVM是一種對線性和非線性數據進行分類的方法。
SVM最初對於線性可分的數據,是爲了尋找一條“最好”的分離線。多維即最佳分離平面。
而何爲最佳?即具有最大邊緣的超平面。
引入了支持向量的概念,即他們離最大邊緣超平面的距離是一樣的。
那麼問題即轉換成了如何求解支持向量和MNH
。
由於將低維數據變換到高維數據求解時,會遇到很多的點積計算,所需計算量很大,開銷很大。於是提出了核函數
。
SVM的訓練會產生全局解
。
使用頻繁模式分類
- Apriori CBA
- FP-Growth CMAR
- DDPMIne 直接從頻繁模式樹中挖掘具有高度區別能力的頻繁模式的集合。
惰性學習法
K近鄰分類
結果取決於距離的計算。
基於案例的推理
其他分類方法
遺傳算法
在遺傳算法中,每個規則使用二進位串表示,假設給定樣本具有兩個布爾屬性A1,A2,並且有兩個類C1和C2。即
可用二進位串“100”來編碼。
接着規則總體通過交叉和變異操作“進化”,直到總體中所有的規則都滿足指定的閾值。
關於遺傳算法中的交叉、變異、進化、擬合度度量的概念,可以參考下文:
https://zhuanlan.zhihu.com/p/33042667
遺傳算法同樣可以用於評估其他算法的擬合度。
粗糙集方法
粗糙集理論可用於分類來發現不準確數據或噪聲數據內的結構聯繫。它用於離散值屬性,故連續值屬性在使用前必須離散化。
同樣可以用於屬性子集選擇(特徵規約,識別和刪除無助於給定訓練數據分類的屬性)
相關分析(評估每個屬性的貢獻或顯著性)。
用來近似定義類,這些類基於可以用的屬性是不可區分的。
模糊集方法
模糊集理論對於一些數值型屬性很受用,對於分類和關聯規則挖掘中,允許同一個樣本屬於多個分類,從分類結果的概率值進行後續挖掘。
用隸屬度函數替換連續值屬性的“脆弱的”閾值。
分類問題
多分類問題
在SVM中,我們知道是主要針對二分類問題,如果針對多分類問題。
SVM可以使用一對多和多對多的策略。
- 一對多,在所有的樣本中,每次只分類出一種類別,標記爲正樣本,其餘均爲負樣本。依此循環,直到全爲正樣本。
- 多對多,對於M個分類的樣本集,構造M(M-1)/2個SVM分類器,額,這個對錯誤的敏感度較高,而且開銷較大。
半監督分類
- 自我訓練
自我將未標記分類的樣本進行分類,容易造成強化錯誤。 - 協同訓練
通過不同特徵訓練的分類器來進行協同參考訓練,但很難將特徵劃分爲互斥的、類條件獨立的集合。
主動學習
主動學習是一種迭代的監督學習,它可能有目的地向用戶詢問類標號,以此進行模型的訓練。
主動學習中大部分的研究在於如何選擇被詢問的元組
遷移學習
從一個或多個源任務提取知識,並把這些知識運用於目標任務。TrAdaBoost是基於實例的遷移學習方法,它對來自源任務的某些元組進行重新加權,並使用它們學習目標任務,因此只需要很少有標號的目標任務元組。
遷移學習後續將進行jupyter資源的學習。
https://github.com/jindongwang/transferlearning#0latest
https://github.com/dipanjanS/hands-on-transfer-learning-with-python/tree/master/notebooks