本文列出了常用的機器學習算法的基本概念、主要特點和適用場景,希望可以在大家選擇合適的機器學習算法解決實際問題時起到一點參考作用。本文主要提及的機器學習算法包括:
·K近鄰(KNN)算法
·樸素貝葉斯算法
·決策樹算法
·SVM算法
·adaboost算法
·EM算法(期望最大化算法)
下面我們將具體展開介紹:
?
NO.1
KNN算法
KNN算法的基本介紹:假若一個特征空間中大多數的樣本屬于某一個類別,則在這個特征空間中,k個最相似的樣本也屬于這個類別。 該算法由兩個步驟組成:(1)對于一個給定的搜索訓練集按一定距離度量,來找到一個 的值。(2)在這個KNN當中,根據大多數分為一致的類來進行分類。 用以下這幅圖可以很好的解釋kNN算法: 不同形狀的點,為不同標簽的點。其中綠色點為未知標簽的數據點?,F在要對綠色點進行預測。由圖不難得出: 如果k=3,那么離綠色點最近的有2個紅色三角形和1個藍色的正方形,這3個點投票,于是綠色的這個待分類點屬于紅色的三角形。 如果k=5,那么離綠色點最近的有2個紅色三角形和3個藍色的正方形,這5個點投票,于是綠色的這個待分類點屬于藍色的正方形。
K近鄰(KNN)算法優點:
算法原理簡單,容易理解,也較容易實現。
不需要進行訓練,只需要保存訓練樣本和標簽。
不易受小錯誤概率的影響。經理論證明,最近鄰的漸進錯誤率最壞時不超過兩倍的貝葉斯錯誤率,最好時接近或達到貝葉斯錯誤率。
K近鄰(KNN)算法缺點:
K的選擇不固定。
預測結果容易受到噪聲數據的影響。
當樣本不平衡時,新樣本的類別偏向訓練樣本中數量占優的類別,容易導致預測錯誤。
當數據量較大時,具有較高的計算復雜度和內存消耗,因為對每一個待分類的文本,都要計算它到全體已知樣本的距離,才能求得它的K個最近鄰。
適用場景及主要應用領域:
由于KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合。在實際應用當中,KNN算法在人臉識別、文字識別、醫學圖像處理等領域可以取得良好的分類效果。
K近鄰(KNN)算法需要注意的問題:
數據特征之間量綱不統一時,需要對數據進行歸一化處理,否則會出現大數吃小數的問題;
數據之間的距離計算通常采用歐式距離;
KNN算法中K值的選取會對結果產生較大的影響,一般k值要小于訓練樣本數據的平方根;
通常采用交叉驗證法來選擇最優的K值。
NO.2
樸素貝葉斯算法
樸素貝葉斯分類是一種十分簡單的分類算法,即對于給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認為此待分類項屬于哪個類別。 以判定外國友人為例做一個形象的比喻。 若我們走在街上看到一個黑皮膚的外國友人,讓你來猜這位外國友人來自哪里。十有八九你會猜是從非洲來的,因為黑皮膚人種中非洲人的占比最多,雖然黑皮膚的外國人也有可能是美洲人或者是亞洲人。但是在沒有其它可用信息幫助我們判斷的情況下,我們會選擇可能出現的概率最高的類別,這就是樸素貝葉斯的基本思想。
下圖為樸素貝葉斯算法的流程:
? ?
樸素貝葉斯算法注意點:
當特征屬性值的值類型不是離散值而是連續值的時候,需要通過高斯分布做概率的計算;
為了避免統計概率中出現概率為0的情況,可以引入Laplace校準,它的思想非常簡單,就是對沒類別下所有劃分的計數加1。
適用場景及主要應用領域:
1. 樸素貝葉斯算法對待預測樣本進行預測,過程簡單速度快; 2. 對于多分類問題也同樣很有效,復雜度也不會有大程度上升; 3. 在分布獨立這個假設成立的情況下,貝葉斯分類器效果奇好,會略勝于邏輯回歸,同時需要的樣本量也更少一點。 4. 對于類別類的輸入特征變量,效果非常好。對于數值型變量特征,我們是默認它符合正態分布的。
主要應用領域
文本分類/垃圾文本過濾/情感判別:多分類較為簡單,同時在文本數據中,分布獨立這個假設基本是成立的。垃圾文本過濾(比如垃圾郵件識別)和情感分析(微博上的褒貶情緒)用樸素貝葉斯也通常能取得很好的效果。
多分類實時預測:對于文本相關的多分類實時預測,樸素貝葉斯算法被廣泛應用,簡單又高效。
推薦系統:樸素貝葉斯和協同過濾(Collaborative Filtering)是一對好搭檔,協同過濾是強相關性,但是泛化能力略弱,樸素貝葉斯和協同過濾一起,能增強推薦的覆蓋度和效果。
NO.3
決策樹算法
?
決策樹是一個樹結構(可以是二叉樹或非二叉樹),其每個非葉節點表示一個特征屬性上的測試,每個分支代表這個特征屬性在某個值域上的輸出,而每個葉節點存放一個輸出類別。使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特征屬性,并按照其值選擇輸出分支,直到到達葉子節點,將葉子節點存放的類別作為決策結果。
決策樹學習通常包含這幾個方面:特征選擇、決策樹生成、決策樹剪枝、缺失值/異常值處理、決策樹集成學習。
決策樹算法注意點:
決策樹算法非常容易過擬合,導致泛化能力不強。可以通過設置節點最少樣本數量和限制決策樹深度來改進。
決策樹會因為樣本發生一點點的改動,就會導致樹結構的劇烈改變。這個可以通過集成學習之類的方法解決。
尋找最優的決策樹是一個NP難的問題,一般通過啟發式方法,容易陷入局部最優??梢酝ㄟ^集成學習之類的方法來改善。
有些比較復雜的關系,決策樹很難學習,比如異或,一般這種關系可以換神經網絡分類方法來解決。
如果某些特征的樣本比例過大,生成決策樹容易偏向于這些特征。這個可以通過調節樣本權重來改善(特別注意,在模型訓練過程中,某些特征的權重排序很大,需要手動調節樣本的權重來影響特征的權重,主要有樣本的均衡,樣本的過濾,樣本權重的調節)。
適用場景及主要應用領域:
相比其他算法,決策樹有一個非常明顯的優勢,就是可以很直觀地進行可視化,分類規則好理解,讓非專業的人也容易看明白,既可以解決分類問題(對應的目標值是類別型的數據),也能解決回歸問題(輸出結果也可以是連續的數值),目前廣泛應用于語音識別、人臉識別、醫療診斷、模式識別等領域。
NO.4
SVM算法
支持向量機,support vector machine,簡稱SVM,是經典機器學習的一個重要分類算法,用于完成數據分類。svm算法通過找出一個決策超平面(二維空間指直線,三維空間指平面,超過三維的就是超平面了),將已有訓練數據集劃分開,然后對于新數據,根據數據是位于超平面的哪一側完成判斷,得到新數據的分類。 因此基礎的svm算法是一個二分類算法,至于多分類任務,多次使用svm即可解決。 下圖是一組支持向量機實現分類的示例。
SVM算法注意點:
SVM可以執行線性非線性的分類、回歸、異常值檢測。適用于中小型復雜數據集;
SVM對特征縮放很敏感,可以在輸入之前采用StandardScaler處理;
如果SVM模型過擬合,可以通過降低C來進行正則化;
LinearSVC灰度偏執正則化,需要減去平均值,StandardScaler會自動處理;
處理非線性數據集的方法之一是添加更多的特征,比如多項式特征。
適用場景及主要應用領域:
支持向量機(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解決小樣本、非線性及高維模式識別中表現出許多特有的優勢,但它具有以下缺點:
無法應對大規模訓練樣本;
難以解決多分類問題;
對參數及核函數選擇非常敏感。
支持向量機的常見適用范圍如下:
1. 網絡完全
傳統的網絡入侵檢測方法大多采用密碼簽名的方法。在進行入侵檢測方面,機器學習技術可以幫助我們進行網絡流量的分析,在這里支持向量機具有檢測速度快,分類精度高等特點,可以幫助安全人員識別不同類別的網絡攻擊,例如掃描和欺詐網絡。
2. 人臉識別
SVM可以將圖像部分分為人臉和非人臉。它包含nxn像素的訓練數據,具有兩類人臉(+1)和非人臉(-1),然后從每個像素中提取特征作為人臉和非人臉。根據像素亮度在人臉周圍創建邊界,并使用相同的過程對每個圖像進行分類。
3. 文本和超文本分類
SVM可以實現對兩種類型的模型進行文本和超文本分類,它主要通過使用訓練數據將文檔分類為不同的類別,如新聞文章、電子郵件和網頁。 對于每個文檔,計算一個分數并將其與預定義的閾值進行比較。當文檔的分數超過閾值時,則將文檔分類為確定的類別。如果它不超過閾值,則將其視為一般文檔。 通過計算每個文檔的分數并將其與學習的閾值進行比較來對新實例進行分類。
4.?蛋白質折疊和遠程同源檢測
蛋白質遠程同源性檢測是計算生物學中的一個關鍵問題。SVM算法是遠程同源檢測最有效的方法之一。這些方法的性能取決于蛋白質序列的建模方式。
NO.5
adaboost算法
在了解adaboost算法之前,我們先來重溫一下三個臭皮匠頂個諸葛亮的故事:諸葛亮帶兵過江,江水湍急,而且里面多是突出水面的礁石。普通竹筏和船只很難過去,打頭陣的船只都被水沖走觸礁沉沒,諸葛亮一籌莫展,也想不出好辦法,入夜來了3個做牛皮活的皮匠獻策。告訴諸葛亮買牛,然后把牛從肚皮下整張剝下來,封好切口后讓士兵往里吹氣,做成牛皮筏子,這樣的筏子不怕撞,諸葛亮按此方法嘗試并順利過江。 Adaboost就是這樣一種“三個臭皮匠頂個諸葛亮”的迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。
adaboost算法注意點:
AdaBoost迭代次數也就是弱分類器數目不太好設定,可以使用交叉驗證來進行確定;
數據不平衡導致分類精度下降;
訓練比較耗時,每次重新選擇當前分類器最好切分點;
對異常樣本敏感,異常樣本在迭代中可能會獲得較高的權重,影響最終的強學習器的預測準確性。
適用場景及主要應用領域:
在機器學習的算法中,Adaboost 算法是一種比較重要且通用的用于特征分類的算法,在圖像檢索和人臉表情識別等問題中都有普遍應用。從現狀看,人們對Adaboost 算法的研究及應用主要集中用于分類問題上,另外在某些回歸問題上也有所涉及,比如兩類問題、多類單標簽問題、多類多標簽問題和回歸問題。 Adaboost 在機器學習領域中十分重要,它是一種提高任意給定學習算法準確度的方法。也就是說,Adaboost 算法為其他算法提供了一種框架結構,而其他算法只在其中作為子分類器,因此 Adaboost 算法可以運用在許多方面的實踐上。
通過 Adaboost 算法: 1. 可以實現手寫體字符識別,運用到了許多輸入設備上,如流行的觸屏手機上的手寫輸入、筆記本電腦的手寫輸入、掃描儀掃面文字轉化為電子文檔。 2. 圖像識別,如人臉識別、google 上的圖片檢索功能(很方便地找到想要的清晰度更高的圖片)。我們實現了語音識別,現在的WIN7上都有了一個語音識別的功能,我們能夠讓計算機知道我們說了什么話,并通過機器自動學習提高語音識別的精度,聲音輸入和聲控很可能在未來普及。 3. Adaboost 算法還能做文本分類和醫療診斷等等。
NO.6
EM算法
最大期望算法(Expectation-maximization algorithm,又譯為期望最大化算法),是在概率模型中尋找參數最大似然估計或者最大后驗估計的算法,其中概率模型依賴于無法觀測的隱性變量。 以打獵為例做一個形象的比喻: 比如你一位同學和一位獵人一起外出打獵,一只野兔從前方竄過。只聽一聲槍響,野兔應聲到下,如果要你推測,這一發命中的子彈是誰打的?你就會想,只發一槍便打中,由于獵人命中的概率一般大于你那位同學命中的概率,從而推斷出這一槍應該是獵人射中的。 這個例子所作的推斷就體現了最大似然法的基本思想。 多數情況下我們是根據已知條件來推算結果,而最大似然估計是已經知道了結果,然后尋求使該結果出現的可能性最大的條件,以此作為估計值。
EM算法注意點:
對初始化數據敏感。
EM算法計算復雜,收斂較慢,不適于大規模數據集和高維數據。
當所要優化的函數不是凸函數時,EM算法容易給出局部最優解,而不是全局最優解。
適用場景及主要應用領域:
1. K-Means聚類
K-Means是EM算法的一個特列。在K-Means聚類時,每個聚類簇的質心是隱含數據。我們會假設K個初始化質心,即EM算法的E步;然后計算得到每個樣本最近的質心,并把樣本聚類到最近的這個質心,即EM算法的M步。重復這個E步和M步,直到質心不再變化為止,這樣就完成了K-Means聚類。
2. 高斯混合模型
高斯混合模型(Gaussian Misture Model)的參數估計是EM算法的一個重要應用。高斯混合模型應用廣泛,在許多情況下, EM算法是學習高斯混合模型的有效方法。
3. 隱馬爾科夫模型
EM算法的另一個重要應用是隱馬爾科夫模型。
算法的選擇取決于許多因素,比如問題陳述、預期的輸出類型、數據的類型和大小、可用的計算時間、特征數量以及數據中的觀測點等,以上內容僅供大家在選擇算法時作為參考,實踐和運行才是評估算法的最佳標準。
編輯:黃飛
?
評論
查看更多