決策樹
一倘待、 決策樹優(yōu)點
1疮跑、決策樹易于理解和解釋,可以可視化分析凸舵,容易提取出規(guī)則祖娘。
2、可以同時處理標稱型和數(shù)值型數(shù)據(jù)。
3渐苏、測試數(shù)據(jù)集時掀潮,運行速度比較快。
4琼富、決策樹可以很好的擴展到大型數(shù)據(jù)庫中仪吧,同時它的大小獨立于數(shù)據(jù)庫大小。
二鞠眉、決策樹缺點
1薯鼠、對缺失數(shù)據(jù)處理比較困難。
2械蹋、容易出現(xiàn)過擬合問題出皇。
3、忽略數(shù)據(jù)集中屬性的相互關(guān)聯(lián)哗戈。
4郊艘、ID3(貪心)算法計算信息增益時結(jié)果偏向數(shù)值比較多的特征。
三唯咬、改進措施
1纱注、對決策樹進行剪枝「笨剩可以采用交叉驗證法和加入正則化的方法奈附。
2、使用基于決策樹的combination算法煮剧,如bagging算法斥滤,randomforest算法,可以解決過擬合的問題勉盅。
KNN算法
一佑颇、KNN算法的優(yōu)點
1、KNN是一種在線技術(shù)草娜,新數(shù)據(jù)可以直接加入數(shù)據(jù)集而不必進行重新訓練
2挑胸、KNN理論簡單,容易實現(xiàn)
二宰闰、KNN算法的缺點
1茬贵、對于樣本容量大的數(shù)據(jù)集計算量比較大。
2移袍、樣本不平衡時解藻,預測偏差比較大。如:某一類的樣本比較少葡盗,而其它類樣本比較多螟左。
3、KNN每一次分類都會重新進行一次全局運算。
4胶背、k值大小的難以選擇巷嚣。
三、KNN算法應用領(lǐng)域
文本分類钳吟、模式識別廷粒、聚類分析,多分類領(lǐng)域
支持向量機(SVM)
一砸抛、 SVM優(yōu)點
1评雌、解決小樣本下機器學習問題。
2直焙、解決非線性問題景东。
3、無局部極小值問題奔誓。(相對于神經(jīng)網(wǎng)絡等算法)
4斤吐、可以很好的處理高維數(shù)據(jù)集。
5厨喂、泛化能力比較強和措。
二、SVM缺點
1蜕煌、對于核函數(shù)的高維映射解釋力不強派阱,尤其是徑向基函數(shù)。
2斜纪、對缺失數(shù)據(jù)敏感贫母。
三、SVM應用領(lǐng)域
文本分類盒刚、圖像識別腺劣、主要二分類領(lǐng)域
AdaBoost算法
一、 AdaBoost算法優(yōu)點
1因块、很好的利用了弱分類器進行級聯(lián)橘原。
2、可以將不同的分類算法作為弱分類器涡上。
3趾断、AdaBoost具有很高的精度。
4吩愧、相對于bagging算法和Random Forest算法芋酌,AdaBoost充分考慮的每個分類器的權(quán)重。
二耻警、Adaboost算法缺點
1、AdaBoost迭代次數(shù)也就是弱分類器數(shù)目不太好設定,可以使用交叉驗證來進行確定甘穿。
2腮恩、數(shù)據(jù)不平衡導致分類精度下降。
3温兼、訓練比較耗時秸滴,每次重新選擇當前分類器最好切分點。
三募判、AdaBoost應用領(lǐng)域
模式識別荡含、計算機視覺領(lǐng)域,用于二分類和多分類場景
樸素貝葉斯算法
一届垫、 樸素貝葉斯算法優(yōu)點
1释液、對大數(shù)量訓練和查詢時具有較高的速度。即使使用超大規(guī)模的訓練集装处,針對每個項目通常也只會有相對較少的特征數(shù)误债,并且對項目的訓練和分類也僅僅是特征概率的數(shù)學運算而已。
2妄迁、支持增量式運算寝蹈。即可以實時的對新增的樣本進行訓練。
3登淘、樸素貝葉斯對結(jié)果解釋容易理解箫老。
二、樸素貝葉斯缺點
1黔州、由于使用了樣本屬性獨立性的假設耍鬓,所以如果樣本屬性有關(guān)聯(lián)時其效果不好。
三辩撑、樸素貝葉斯應用領(lǐng)域
文本分類界斜、欺詐檢測中使用較多
Logistic回歸算法
一、logistic回歸優(yōu)點
1合冀、計算代價不高各薇,易于理解和實現(xiàn)
二、logistic回歸缺點
1君躺、容易產(chǎn)生欠擬合峭判。
2、分類精度不高棕叫。
三林螃、logistic回歸應用領(lǐng)域
用于二分類領(lǐng)域,可以得出概率值俺泣,適用于根據(jù)分類概率排名的領(lǐng)域疗认,如搜索排名等完残。
Logistic回歸的擴展softmax可以應用于多分類領(lǐng)域,如手寫字識別等横漏。
人工神經(jīng)網(wǎng)絡
一谨设、 神經(jīng)網(wǎng)絡優(yōu)點
1、分類準確度高缎浇,學習能力極強扎拣。
2、對噪聲數(shù)據(jù)魯棒性和容錯性較強素跺。
3二蓝、有聯(lián)想能力,能逼近任意非線性關(guān)系指厌。
二刊愚、神經(jīng)網(wǎng)絡缺點
1、神經(jīng)網(wǎng)絡參數(shù)較多仑乌,權(quán)值和閾值百拓。
2、黑盒過程晰甚,不能觀察中間結(jié)果衙传。
3、學習過程比較長厕九,有可能陷入局部極小值蓖捶。
三、人工神經(jīng)網(wǎng)絡應用領(lǐng)域
目前深度神經(jīng)網(wǎng)絡已經(jīng)應用與計算機視覺扁远,自然語言處理俊鱼,語音識別等領(lǐng)域并取得很好的效果。
隨機森林
優(yōu)點:a. 對于很多數(shù)據(jù)集表現(xiàn)良好畅买,精確度比較高并闲;b. 不容易過擬合;c. 可以得到變量的重要性排序谷羞;d. 既能處理離散型數(shù)據(jù)帝火,也能處理連續(xù)型數(shù)據(jù),且不需要進行歸一化處理湃缎; e. 能夠很好的處理缺失數(shù)據(jù)犀填;f. 容易并行化
機器學習方法非常多,也很成熟嗓违。下面我挑幾個說九巡。
首先是SVM。因為我做的文本處理比較多蹂季,所以比較熟悉SVM冕广。SVM也叫支持向量機疏日,其把數(shù)據(jù)映射到多維空間中以點的形式存在,然后找到能夠分類的最優(yōu)超平面撒汉,最后根據(jù)這個平面來分類制恍。SVM能對訓練集之外的數(shù)據(jù)做很好的預測、泛化錯誤率低神凑、計算開銷小、結(jié)果易解釋何吝,但其對參數(shù)調(diào)節(jié)和核函數(shù)的參數(shù)過于敏感溉委。個人感覺SVM是二分類的最好的方法,但也僅限于二分類爱榕。如果要使用SVM進行多分類瓣喊,也是在向量空間中實現(xiàn)多次二分類。
SVM有一個核心函數(shù)SMO黔酥,也就是序列最小最優(yōu)化算法藻三。SMO基本是最快的二次規(guī)劃優(yōu)化算法,其核心就是找到最優(yōu)參數(shù)α跪者,計算超平面后進行分類棵帽。SMO方法可以將大優(yōu)化問題分解為多個小優(yōu)化問題求解,大大簡化求解過程渣玲。某些條件下逗概,把原始的約束問題通過拉格朗日函數(shù)轉(zhuǎn)化為無約束問題,如果原始問題求解棘手忘衍,在滿足KKT的條件下用求解對偶問題來代替求解原始問題逾苫,使得問題求解更加容易。 SVM還有一個重要函數(shù)是核函數(shù)枚钓。核函數(shù)的主要作用是將數(shù)據(jù)從低位空間映射到高維空間铅搓。詳細的內(nèi)容我就不說了,因為內(nèi)容實在太多了搀捷⌒顷總之,核函數(shù)可以很好的解決數(shù)據(jù)的非線性問題指煎,而無需考慮映射過程蹋偏。
第二個是KNN。KNN將測試集的數(shù)據(jù)特征與訓練集的數(shù)據(jù)進行特征比較至壤,然后算法提取樣本集中特征最近鄰數(shù)據(jù)的分類標簽威始,即KNN算法采用測量不同特征值之間的距離的方法進行分類。KNN的思路很簡單像街,就是計算測試數(shù)據(jù)與類別中心的距離黎棠。KNN具有精度高晋渺、對異常值不敏感、無數(shù)據(jù)輸入假定脓斩、簡單有效的特點木西,但其缺點也很明顯,計算復雜度太高随静。要分類一個數(shù)據(jù)八千,卻要計算所有數(shù)據(jù),這在大數(shù)據(jù)的環(huán)境下是很可怕的事情燎猛。而且恋捆,當類別存在范圍重疊時,KNN分類的精度也不太高重绷。所以沸停,KNN比較適合小量數(shù)據(jù)且精度要求不高的數(shù)據(jù)。
KNN有兩個影響分類結(jié)果較大的函數(shù)昭卓,一個是數(shù)據(jù)歸一化愤钾,一個是距離計算。如果數(shù)據(jù)不進行歸一化候醒,當多個特征的值域差別很大的時候能颁,最終結(jié)果就會受到較大影響;第二個是距離計算倒淫。這應該算是KNN的核心了劲装。目前用的最多的距離計算公式是歐幾里得距離,也就是我們常用的向量距離計算方法昌简。
個人感覺占业,KNN最大的作用是可以隨時間序列計算,即樣本不能一次性獲取只能隨著時間一個一個得到的時候纯赎,KNN能發(fā)揮它的價值谦疾。至于其他的特點,它能做的犬金,很多方法都能做念恍;其他能做的它卻做不了。
第三個就是Naive Bayes了晚顷。Naive Bayes簡稱NB(牛X)峰伙,為啥它牛X呢,因為它是基于Bayes概率的一種分類方法该默。貝葉斯方法可以追溯到幾百年前瞳氓,具有深厚的概率學基礎(chǔ),可信度非常高栓袖。Naive Baye中文名叫樸素貝葉斯匣摘,為啥叫“樸素”呢店诗?因為其基于一個給定假設:給定目標值時屬性之間相互條件獨立。比如我說“我喜歡你”音榜,該假設就會假定“我”庞瘸、“喜歡”、“你”三者之間毫無關(guān)聯(lián)赠叼。仔細想想擦囊,這幾乎是不可能的。馬克思告訴我們:事物之間是有聯(lián)系的嘴办。同一個事物的屬性之間就更有聯(lián)系了霜第。所以,單純的使用NB算法效率并不高户辞,大都是對該方法進行了一定的改進,以便適應數(shù)據(jù)的需求癞谒。
NB算法在文本分類中用的非常多底燎,因為文本類別主要取決于關(guān)鍵詞,基于詞頻的文本分類正中NB的下懷弹砚。但由于前面提到的假設双仍,該方法對中文的分類效果不好,因為中文顧左右而言他的情況太多桌吃,但對直來直去的老美的語言朱沃,效果良好。至于核心算法嘛茅诱,主要思想全在貝葉斯里面了逗物,沒啥可說的。
第四個是回歸瑟俭◆嶙浚回歸有很多,Logistic回歸啊摆寄、嶺回歸啊什么的失暴,根據(jù)不同的需求可以分出很多種。這里我主要說說Logistic回歸微饥。為啥呢逗扒?因為Logistic回歸主要是用來分類的,而非預測欠橘【丶纾回歸就是將一些數(shù)據(jù)點用一條直線對這些點進行擬合。而Logistic回歸是指根據(jù)現(xiàn)有數(shù)據(jù)對分類邊界線建立回歸公式肃续,以此進行分類蛮拔。該方法計算代價不高述暂,易于理解和實現(xiàn),而且大部分時間用于訓練建炫,訓練完成后分類很快畦韭;但它容易欠擬合,分類精度也不高肛跌。主要原因就是Logistic主要是線性擬合艺配,但現(xiàn)實中很多事物都不滿足線性的。即便有二次擬合衍慎、三次擬合等曲線擬合转唉,也只能滿足小部分數(shù)據(jù),而無法適應絕大多數(shù)數(shù)據(jù)稳捆,所以回歸方法本身就具有局限性赠法。但為什么還要在這里提出來呢?因為回歸方法雖然大多數(shù)都不合適乔夯,但一旦合適砖织,效果就非常好。
Logistic回歸其實是基于一種曲線的末荐,“線”這種連續(xù)的表示方法有一個很大的問題侧纯,就是在表示跳變數(shù)據(jù)時會產(chǎn)生“階躍”的現(xiàn)象,說白了就是很難表示數(shù)據(jù)的突然轉(zhuǎn)折甲脏。所以用Logistic回歸必須使用一個稱為“海維塞德階躍函數(shù)”的Sigmoid函數(shù)來表示跳變眶熬。通過Sigmoid就可以得到分類的結(jié)果。
為了優(yōu)化Logistic回歸參數(shù)块请,需要使用一種“梯度上升法”的優(yōu)化方法娜氏。該方法的核心是,只要沿著函數(shù)的梯度方向搜尋墩新,就可以找到函數(shù)的最佳參數(shù)牍白。但該方法在每次更新回歸系數(shù)時都需要遍歷整個數(shù)據(jù)集,對于大數(shù)據(jù)效果還不理想抖棘。所以還需要一個“隨機梯度上升算法”對其進行改進茂腥。該方法一次僅用一個樣本點來更新回歸系數(shù),所以效率要高得多切省。
第五個是決策樹最岗。據(jù)我了解,決策樹是最簡單朝捆,也是曾經(jīng)最常用的分類方法了般渡。決策樹基于樹理論實現(xiàn)數(shù)據(jù)分類,個人感覺就是數(shù)據(jù)結(jié)構(gòu)中的B+樹。決策樹是一個預測模型驯用,他代表的是對象屬性與對象值之間的一種映射關(guān)系脸秽。決策樹計算復雜度不高、輸出結(jié)果易于理解蝴乔、對中間值缺失不敏感记餐、可以處理不相關(guān)特征數(shù)據(jù)。其比KNN好的是可以了解數(shù)據(jù)的內(nèi)在含義薇正。但其缺點是容易產(chǎn)生過度匹配的問題片酝,且構(gòu)建很耗時。決策樹還有一個問題就是挖腰,如果不繪制樹結(jié)構(gòu)雕沿,分類細節(jié)很難明白。所以猴仑,生成決策樹审轮,然后再繪制決策樹,最后再分類辽俗,才能更好的了解數(shù)據(jù)的分類過程疾渣。
決策樹的核心樹的分裂。到底該選擇什么來決定樹的分叉是決策樹構(gòu)建的基礎(chǔ)榆苞。最好的方法是利用信息熵實現(xiàn)。熵這個概念很頭疼霞捡,很容易讓人迷糊坐漏,簡單來說就是信息的復雜程度。信息越多碧信,熵越高赊琳。所以決策樹的核心是通過計算信息熵劃分數(shù)據(jù)集。
我還得說一個比較特殊的分類方法:AdaBoost砰碴。AdaBoost是boosting算法的代表分類器躏筏。boosting基于元算法(集成算法)。即考慮其他方法的結(jié)果作為參考意見呈枉,也就是對其他算法進行組合的一種方式趁尼。說白了,就是在一個數(shù)據(jù)集上的隨機數(shù)據(jù)使用一個分類訓練多次猖辫,每次對分類正確的數(shù)據(jù)賦權(quán)值較小酥泞,同時增大分類錯誤的數(shù)據(jù)的權(quán)重,如此反復迭代啃憎,直到達到所需的要求芝囤。AdaBoost泛化錯誤率低、易編碼、可以應用在大部分分類器上悯姊、無參數(shù)調(diào)整羡藐,但對離群點敏感。該方法其實并不是一個獨立的方法悯许,而是必須基于元方法進行效率提升仆嗦。個人認為,所謂的“AdaBoost是最好的分類方法”這句話是錯誤的岸晦,應該是“AdaBoost是比較好的優(yōu)化方法”才對欧啤。