一、有監督學習方法舉例
1. 朴素貝葉斯分類
朴素貝葉斯分類是一種十分簡單的分類算法,朴素貝葉斯的思想基礎是這樣的:對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認為此待分類項屬於哪個類別。
通俗來說,就像我們坐地鐵的時候,僅僅通過一些衣着特征我們便能夠猜測周圍人的工作或者是身份地位,比如一個人西裝革履,那么我們猜測他應該是個工薪一族,有人身穿工作服,那我們也可以認為他應該是個工人。但是這樣的推斷是不一定正確的,萬一人家穿着西裝是去參加畢業典禮呢?不過在沒有其它可用信息下,我們還是會選擇可能性最大的情況。同樣的道理,朴素貝葉斯的思想基礎就是選擇條件概率最大的類別。
朴素貝葉斯分類是建立在貝葉斯定理的基礎上的,這就涉及到大二學的條件概率的知識了。在條件概率中有如下計算公式:
通過 \((1)、(2)\)h很容易就得到貝葉斯定理的計算公式:
在已知 \(P(A|B)、P(A)、P(B)\)的情況下,我們便能夠算出 \(P(B|A)\)。
下面給出朴素貝葉斯分類的正式定義:
【1】假設有類別集合 \(C = \{{y_1, y_2,... ,y_m}\}\) ,其中 \(y_k\) 表示某一類別,比如汽車、房屋等;
【2】假設有一待分類對象 \(x = \{{a_1,a_2,...,a_n}\}\) ,該對象的具有特征屬性 \(a_i\) ,比如紅頭發,藍眼睛等;
【3】計算在已有對象x的條件下,該對象屬於分類 \(y_k\) 的條件概率 \(P(y_1|x),P(y_2|x), ... ,P(y_m|x)\);
【4】取 \(P(y_k|x) = max\{{P(y_1|x), P(y_2|x), ... ,P(y_m|x)}\}\),則待分類對象\(x∈y_k\)。
其實從上面的定義中可以看出,朴素貝葉斯分類的重點在於第【3】步中的 \(P(y_k|x)\) 的計算,這就涉及到貝葉斯定理的使用了:
【1】假設我們有已經有一批已經人工標記好分類的樣本及分類集合,即我們已經知道每個分類 \(y_k\)下各個特征屬性 \(b_j\) 的條件概率 \(P(b_j|y_k)\);
【2】現在輸入一個待分類對象 \(x = \{{a_1,a_2,...,a_n}\}\),我們計算
這里值得注意的是有可能某一分類 \(y_k\)下並沒有特征屬性 \(a_i\)對應的特征屬性 \(b_j\),所以會導致 \(P(a_i|y_k) = 0\) 的情況出現,這在樣本集訓練過程中會對訓練結果造成較大負面影響,需要引入一些特殊處理減少影響;
【3】根據貝葉斯定理,可以得到我們所關注的 \(P(y_k|x)\) 的計算公式:
由於每個待分類對象都是平等的,因此分子 \(P(x)\) 為一常數,故 \(P(y_k|x)\) 的大小取決與分子的大小 \(P(x|y_k)P(y_k)\) 的大小。
對於 \(P(x|y_k)\),由於 待檢測樣本 \(x = \{{a_1,a_2,...,a_n}\}\) 的各特征屬性 \(a_i\) 是各自獨立的,因此有:
故:
所以只要我們找到 \(max\{{P(y_k|x)}\}\) 就可以得到 \(x\)最合適的分類了,這么一想這算法還真是“朴素”呢~
- 評價
朴素貝葉斯分類算法要求分類對象的特征屬性必須有條件獨立或基本獨立(實際上在現實應用中幾乎不可能做到完全獨立)。當這個條件成立時,朴素貝葉斯分類法的准確率是最高的,但是現實中各個特征屬性間往往並不條件獨立,而是具有較強的相關性,這樣就限制了朴素貝葉斯分類的能力。
二、無監督學習方法舉例
2. K-means
K-means以某種相似性度量為標准,確定樣本的結構,即樣本屬於哪一個簇取決於該樣本與哪一個簇的中心點最相似,是一種聚類算法。
其主要過程包含:
【1】隨機選擇K個點作為初始的聚類中心;
【2】對於剩下的點,根據其與聚類中心的距離,將其歸於最近的簇,這里的距離的計算方法常見的有曼哈頓距離、歐式距離、余弦相似度等;
【3】計算每個簇內所有點的均值作為新的聚類中心;
【4】重復步驟【2】【3】,直到聚類中心不再改變或者聚類中心改變數值小於我們設定的閾值時,結束循環,完成最終聚類。
從上述過程的描述可以明顯感覺到這一算法的思想確實很簡單,但也存在一些需要注意的地方:
- 初始的K個分類中心的選取可以隨機,也可以人為指定,不同選取情況對聚類速率有較大影響;
- 容易陷入局部最優(這讓我想起了原始粒子群算法也有這個問題)
- 迭代次數閾值或者兩次聚類中心RSS差值閾值對聚類終止的快慢也有影響。
除了上述原理的闡述之外,K-means在圖像分割領域也有所應用,主要還是對於相近顏色區域的聚類分割。Opencv庫中有相關的現程庫函數可以調用,下面是我在做餐盤分割的時候中的測試圖像
