《機器學習實戰》閱讀筆記之第一部分(分類)

第一部分 分類

kNN算法:采用測量不同特征值之間的距離方法進行分類,距離未知數據最近的K個樣本中類型最多的樣本類型即為未知數據的類型。
優點:精度高,對異常值不敏感,且原理和實現都比較簡單。
缺點:計算復雜度高,空間復雜度高,且對K值的選取有依賴。

決策樹:它的一個重要任務是為了理解數據中所蘊含的知識信息,因此可以使用不熟悉的數據集合,并從中提出一系列規則,再用這一系列規則對未知數據進行分類。在本書中提到了構建決策樹的關鍵在于通過計算香農熵來得到通過每個特征劃分數據集的信息增益,以此使得無序的數據變有序,然后再通過遞歸來構建決策樹。
優點:計算復雜度不高,輸出結果易于理解。
缺點:可能會出現過度匹配問題。且算法構建過程較麻煩。

樸素貝葉斯:一種通過已知值來估計未知概率的有效方法,之所以稱為樸素,是因為假定特征之間具有條件獨立性(實際上不是這樣,但仍可以得到一個有效的分類器)。其關鍵是計算條件概率來分類,通過計算未知數據屬于某個類型的概率,最后屬于概率最高的那一類。
優點:在數據較少的情況下任然有效。
缺點:對于輸入數據的準備方式較為敏感。

Logistic回歸:由于邏輯回歸是一個我十分熟悉的概念,所以這一章我看的很快,簡單來說邏輯回歸就是通過梯度下降(書中成為梯度上升)之類的優化算法來找到一條最佳的決策邊界,而再通過sigmoid函數一類的激活函數來進行分類。書中詳細介紹了sigmoid函數和梯度上升算法以及隨機梯度上升算法,并且進行了比較。
優點:計算代價不高,易于理解和實現。
缺點:容易欠擬合,分類精度可能不高。

SVM:支持向量機算法是我一直沒有學明白的算法,在看了這本書之后,終于稍稍理解一點了。簡單說,我們最后需要得到一個超平面(在二維空間就是一條線)來對數據進行分類,而數據中離超平面最近的那些點就是支持向量,SVM就是要找到一條這樣的超平面,使得所有的支持向量到超平面的間隔最大,即求解最大間隔。這就是SVM的基本原理,當然書中提到了一系列具體的求解過程,由于提到了拉格朗日這個讓我痛徹心扉的名字,我也就沒仔細看明白了,但是需要注意的是一個叫作松弛變量的參數,因為幾乎所有數據都不那么“干凈”,也就是不是百分之百可以通過一個超平面分開,所以我們需要通過松弛變量來允許有些數據點可以處于分割面錯誤的一側。本書中用來進行優化的是SMO算法,并給出了它的簡化版和完整版實現。另外需要注意的是“核函數”這一概念,因為不是所有的數據都是線性可分的,所以我們需要通過核函數將數據從一個低維空間映射到一個高位空間,將一個在低維空間中的非線性問題轉換成高維空間下的線性問題來求解。
優點:泛化錯誤率低,計算開銷不大,結果容易解釋。
缺點:對參數調節和核函數的選擇敏感,原始分類器不加修飾僅適用于二分類問題。

AdaBoost元算法:這章首先介紹了bagging和boosting兩種分類器構建方法,bagging是通過原始數據集抽取S次得到S個新的數據集,再用這些新的數據集對分類器進行訓練,之后同時應用這S個分類器進行分類,取投票數最多的結果。而boosting是通過集中關注被已有分類器錯分的數據來得到新的分類器。本章主要介紹了AdaBoost,它的運作過程是,給訓練數據中的每個樣本一個權重,一開始都是一樣的,然后在訓練數據集上訓練一個弱分類器(本書訓練的是單層決策樹),并計算其錯誤率,然后在同一訓練集上再次訓練弱分類器,但是在這次訓練中,上次分隊的樣本權重會降低,分錯的樣本權重會升高,簡單來說,就是針對那些沒有分隊的樣本進行訓練。同時,為了從這些弱分類器中得到最終的分類結果,AdaBoost為每個弱分類器分配了一個權重alpha,它的值是基于分類器的錯誤率計算的。
優點:泛化錯誤率低,易編碼,可以用在大多數分類器上且無參數調整。
缺點:對離群點敏感【易過擬合

非均衡類分類問題:在上一章內容之中,還介紹了非均衡類分類問題。很多時候,數據并不是根據標簽對稱的,比如我做的肺結節分類,無病灶區域就遠遠大于有病灶區域,還有的時候,不同類別的分類代價不相等,漏檢一個肺結節的后果比錯檢一個要嚴重的多。所以書中提出了新的分類器性能度量方法,并進行了可視化。首先是正確率,召回率和ROC曲線的介紹,描述起來比較繁瑣,我直接給一個我看過的鏈接吧。然后在第二節中介紹了基于代價函數的分類器控制,因為不同類別的代價不同,所以可以給予不同的權重,比如給予肺結節分類中的假陰性更大的懲罰項。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容