機器學習面試題面經

  • KNN:特點是完全跟着數據走,沒有數學模型可言。適用:需要一個容易解釋的模型的時候,比如需要向用戶解釋原因的推薦算法。

  • 感知機

  • 貝葉斯:核心是根據條件概率計算待判斷點的類型。適用:易解釋,而且不同維度之間相關性較小的模型。可以處理高維數據,雖然效果一般。

  • 邏輯迴歸

  • 決策樹:適用:它能生成清晰的基於特徵選擇不同預測結果的樹狀結構,數據分析師希望更好的理解手上的數據的時候往往可以使用決策樹。

  • 隨機森林:適用:數據維度相對低(幾十維),同時對準確性有較高要求。不需要調很多參就可以達到不錯效果,不知道用什麼方法時可以先試試。

  • SVM:svm儘量保持樣本間距離的性質導致它抗攻擊能力更強。拿到數據可以先嚐試的算法。

  • 集成學習(bagging,boosting,隨機森林RF,GBDT,Adaboost,xgboost)

  • K-means

  • PCA

  • LDA(線性判別分析):適用於高維數據需要降維的情況,自帶降維功能使得我們能方便的觀察樣本分佈。注意其假定樣本成正態分佈

 

哪些需要歸一化,哪些不要:

  • 樹模型不需要

  • 非樹模型都要

判別模型與生成模型

  • 判別模型:由數據直接學習決策函數Y=f(x)或條件概率分佈P(Y|X)作爲預測模型,判別方法關注的是對於給定的輸入x,應該預測什麼樣的輸出Y。有KNN,感知機,決策樹,邏輯迴歸,線性迴歸,最大熵模型,SVM,提升方法,條件隨機場,lda,條件隨機場

  • 生成模型:由數據學習聯合概率分佈P(X,Y),然後由P(Y|X)=P(X,Y)/P(X)求出概率分佈P(Y|X)作爲預測的模型。該方法表示了給定輸入X與產生輸出Y的生成關係。有樸素貝葉斯,隱馬爾可夫(HMM)

  • 生成模型的特點

    • 生成方法可以還原出聯合概率分佈P(X,Y),而判別方法則不能

    • 生成方法的學習收斂速度更快,即當樣本容量增加的時候,學到的模型可以更快速的收斂於真實模型

    • 當存在隱變量時,仍可以用生成方法學習,此時判別方法就不能用

  • 判別模型的特點

    • 判別方法直接學習的是條件概率P(Y|X)或決策函數f(X),直接面對預測,往往學習的準確率更高

    • 由於直接學習P(Y|X)或f(X),可以對數據進行各種程度上的抽象,定義特徵並使用特徵,因此可以簡化學習問題

線性分類器與非線性分類器區別以及優缺點(假如只考慮二分類的情形)

  • 線性分類器即用一個超平面將正負樣本分離開,表達式爲y=wx,非線性分類界面沒有此限制,可以是曲面,多個超平面的組合等

  • 常見線性分類器:LR,貝葉斯分類,單層感知機,線性迴歸

  • 優缺點:算法簡單,具有學習能力。速度快,編程方便,擬合效果可能不好

  • 常見非線性分類器:決策樹,RF,GBDT,多層感知機

  • 優缺點:非線性分類器編程複雜,但擬合效果好

分類指標

  • Accuracy精度:模型預測正確的個數/樣本的總個數,一般模型的精度越高,說明模型的效果越好。

  • Precision準確率:在模型預測爲正的樣本中,真正的正樣本所佔的比例:,準確率越高說明模型效果越好

  • Recall召回率:模型預測爲正的樣本數量,佔總的正類樣本數量的比值。

  • ROC曲線:橫座標:(假陽率=FP/(FP+TN)),縱座標(真正率=TP/(TP+FN))。意義:當閾值變化時假陽率和真陽率的變化情況,左下角的點對應的將所有樣例判斷爲反例的情況,右上角的點對應將所有樣例判斷爲正的情況,虛線是隨機才層的結果曲線。 https://blog.csdn.net/jiaoyangwm/article/details/79618787

  • AUC:對不同的ROC曲線進行比較的一個指標是曲線下的面積。AUC給出的是分類器的平均性能值,當然它並不能完全代替對整條曲線的觀察

KNN

任意測試樣本x附近任意小的σ距離範圍內總能找到一個訓練樣本。

適用場景:少量數據和大量低維數據

優點:精度高,不太受到異常離散值的影響

缺點:需要大量存儲空間、計算複雜度高

邏輯迴歸

  • 優點:實現簡單,易於理解,計算代價不高,速度快,存儲資源低。

  • 缺點:容易欠擬合,分類精度不高,一般只能處理二分類問題,必須藉助softmax才能實現多分類問題,且前提是必須線性可分。

LR與SVM區別於聯繫

  • LR和SVM都可以處理分類問題,且一般都用於處理線性二分類問題(改進下可處理多分類問題)。若不考慮核函數,LR和SVM都是線性分類,也就是說他們的分類決策面都是線性的

  • 都是監督學習,都是判別模型

  • 兩個方法都可以增加不同的正則化項,如L1,L2等等。所以很多實驗中兩個算法結果接近。

  • 區別:

    • LR是參數模型,SVM是非參數模型

    • 從目標函數來看,卻別在於LR採用logistical loss,SVM採用hinge loss,這兩個損失函數的目的都是增加對分類影響較大的數據點的權重,減少與分類關係較小的數據點的權重

    • SVM處理方法只考慮support vectors支持向量,也就是和分類最相關的少數點,去學習分類器。而邏輯迴歸通過非線性映射,大大減小了離分類平面較遠的點的權重,相對提升了與分類最相關的數據點的權重

    • LR相對簡單好理解,特別是大規模線性分類時比較方便,而SVM的理解和優化相對複雜,SVM轉化爲對偶問題後,分類只需要計算與少數幾個支持向量的距離,這個在進行復雜核函數計算時優勢很明顯,能夠大大簡化模型和計算

    • logic能做的svm能做,可能準確率有些問題,但是svm能做的logic有的做不了

    • 解決非線性分類問題時,支持向量機採用核函數的機制,LR通常不採用核函數的方法

    • SVM的損失函數自帶正則,也就是爲什麼SVM經驗結構最小化的原因。而LR必須另外在損失函數上添加正則項

    • 所謂經驗結構風險最小化,就是在訓練誤差和模型複雜度之間尋求平衡,防止過擬合,從而達到真實誤差的最小化。未達到結構風險最小化的目的,最常用的方法就是添加正則項。

感知機

感知機利用誤分類最小的策略,求得分離超平面,不過這時的解有無窮多個。

決策樹

熵:表示隨機變量不確定性的度量。當p=0或1時,隨機變量沒有不確定性。熵取值越大,隨機變量不確定性最大。

條件熵H(Y|X):在已知隨機變量X的條件下隨機變量Y的不確定性。定義爲X給定條件下Y的條件概率分佈的熵對X的數學期望。

信息增益Gain(D,a):得知特徵X的信息而使得類Y的信息的不確定性減少的程度。越大越好。

信息增益比:以信息增益作爲劃分訓練數據集的特徵,存在偏向於選擇取值較多的特徵的問題。使用信息增益比可以對這一問題進行校正。信息增益比:特徵A對訓練數據集D的信息增益比定義爲其信息增益與訓練數據集D關於特徵A的值的熵之比。越大越好。

     

   

  

基尼指數:代表了從樣本中任意選擇兩個樣本,類別不一致的概率,所以基尼指數越小,代表樣本純度越高。分類問題中,假設有K個類,樣本點屬於第K類的概率爲Pk,則概率分佈的基尼指數定義爲:屬性A的基尼指數定義爲屬性A各類樣本比率的基尼指數和:

ID3算法:在決策樹各個節點上應用信息增益準則選擇特徵,遞歸的構建決策樹。具體方法是:從根節點開始,對節點計算所有可能的特徵的信息增益,選擇信息增益最大的特徵作爲節點的特徵,由該特徵的不同取值建立子節點;再對子節點遞歸的調用以上方法,構建決策樹;直到所有特徵的信息增益均很小或者沒有特徵可以選擇爲止。最後得到一個決策樹。ID3相當於用極大似然法進行概率模型的選擇。

ID4.5算法:計算特徵集A中各個特徵對數據集D的信息增益比,選擇信息增益比最大的特徵;

 

剪枝:過擬合的原因在於學習時過多的考慮如何提高對訓練數據的正確分類,從而構建出過於複雜的決策樹。解決這個問題的辦法是考慮決策樹的複雜度,對已生成的決策樹進行簡化。具體的,剪枝從已生成的樹上裁掉一些子樹或葉節點,並將其根節點或父節點作爲新的葉節點,從而簡化分類樹模型。決策樹剪枝往往通過極小化決策樹整體的損失函數來實現。損失函數定義爲:

剪枝就是當α確定時,選擇損失函數最小的模型,即損失函數最小的子樹。

  • 當α值確定時,子樹越大,往往與訓練數據的擬合越好,但是模型的複雜度越高。

  • 子樹越小,模型的複雜度越低,但是往往與訓練數據的擬合不好

  • 損失函數正好表示了對兩者的平衡。

CART(分類與迴歸樹)

最小二乘迴歸樹

 

ID3,ID4.5,CART區別

  • ID3使用信息增益作爲選擇特徵的準則;C4.5使用信息增益比作爲選擇特徵的準則;CART使用Gini指數作爲選擇特徵的準則。

  • ID3:熵表示變量不確定性程度,熵越小,越確定,說明純度越高,也就是數據越趨於一致,這是我們希望劃分之後每隔子節點的樣子。

    • 信息增益越大,意味着使用屬性a來進行劃分鎖獲得的純度提升越大。

    • ID3僅僅適合於二分類問題。只能處理離散特徵

  • C4.5:克服了ID3只能處理離散屬性的問題,以及信息增益偏向選擇取值較多特徵的問題,使用信息增益比來選擇特徵。選擇信息增益比最大的作爲最優特徵。

    • C4.5處理連續特徵是先將特徵取值排序,以連續兩個值中間值作爲劃分標準。嘗試每一種劃分,並計算修正後的信息增益,選擇信息增益最大的分裂點作爲該屬性的分裂點

  • CART:既可以用於分類問題,也可以用於迴歸問題。CART生成的數必須是二叉樹。也就是無論迴歸還是分類問題,無論特徵是離散還是連續,無論屬性取值有多個還是兩個,內部節點只能根據屬性值進行二分。

    • 迴歸樹中,使用平方誤差最小化準則來選擇特徵並進行劃分。每個葉節點給出的預測值,是劃分到該葉子節點的所有樣本目標的均值,這只是在給定劃分情況下最小化平方誤差

    • 分類樹中,使用Gini指數最小化準則來選擇特徵並進行劃分;Gini指數表示集合的不確定性,或者不純度。基尼指數越大,集合不確定性越高,不純度也越大。基尼指數是爲了最小化誤分類的概率。

  • 信息增益vs信息增益比:信息增益總偏向於選取值較多的屬性。信息增益比在此基礎上增加了一個罰項,解決了這個問題

  • Gini指數vs熵:都可以表示數據不確定性,不純度。但是有兩個區別:

    • Gini指數的計算不需要對數運算,更加高效

    • Gini指數更偏向於連續屬性,熵更偏向於離散屬性

 

SVM支持向量機

支持向量:在線性可分情況下,訓練數據集的樣本點中與分離超平面距離最近的樣本點的實例成爲支持向量。

合頁損失函數:

用線性分類方法求解非線性分類問題分爲兩步:

  • 首先使用一個變換將原空間的數據映射到新空間

  • 然後在新空間裏用線性分類學習方法從訓練數據中學習分類模型。核技巧就屬於這樣的方法。

常用核函數:

  • 多項式核函數

  • 高斯核函數

  • 字符串核函數

SMO(序列最小最優化算法)

SMO算法是支持向量機學習的一種快速算法,其特點是不斷的將原二次規劃問題分解爲只有兩個變量的二次規劃子問題,並對子問題進行解析求解,知道所有變量滿足KKT條件爲止。這樣通過啓發式的方法得到原二次規劃問題的最優解。因爲子問題有解析解,所以每次計算子問題都很快,雖然計算子問題次數很多,但在總體上還是很高效。

  • SVM優點

    • 可用於線性/非線性分類,也可用於迴歸,泛化錯誤率低,也就是說具有良好的學習能力,且學到的結果具有很好的推廣性

    • 可以解決小樣本情況下的機器學習問題,可以解決高維問題,可以避免神經網絡結構選擇和局部極小點

    • SVM是最好的現成的分類器,現成是指不加修改可直接使用。並且能夠得到較低的錯誤率,SVM可以對訓練集之外的數據點做很好的分類決策。能找出對任務至關重要的關鍵樣本

    • 有嚴格的數學理論支持,可解釋性強,不依靠統計方法,從而簡化了通常的分類和迴歸問題

    • 最終決策函數只由少數的支持向量所確定,計算的複雜性取決於支持向量的數目,而不是樣本空間的維數,這在某種意義上避免了維數災難

  • SVM缺點:

    • 訓練時間長。當採用SMO算法時,由於每次都需要挑選一對參數,因此時間複雜度爲O(N^2),其中N爲訓練樣本的數量

    • 當採用核技巧時,如果需要存儲核矩陣,則空間複雜度爲O(N^2)

    • 模型預測時,預測時間與支持向量的個數成正比。當支持向量數量較大時,預測計算複雜度較高

    • 對參數調節和核函數的選擇敏感

  • 因此支持向量機目前只適合小批量樣本的任務,無法適應百萬甚至上億樣本的任務。

 

集成學習

  • Bagging:從原始數據集選擇s次後得到s個新數據集的一種技術,新數據集和原始數據集大小相等,每個數據集都是通過在原始數據集中隨機選擇一個樣本來進行替換得到,也就是新數據集可以出現重複的值,而原始數據集中的某些值在新集合中則不再出現。s個數據集建好後就可以應用這s個分類器進行分類。與此同時,選擇分類器投票結果中最多的類別作爲最後的分類結果。

  • 隨機森林(random forest,RF):是bagging的一個變體,在以決策樹爲基學習器構建bagging集成的基礎上,進一步在決策樹的訓練過程中引入了隨機屬性選擇,具體來說就是傳統決策樹在選擇劃分屬性時是在當前節點的屬性集合(假設有d個屬性)中選一個最優屬性,而在RF中,對基決策樹的每個節點,先從該節點的屬性集合中隨機選擇一個包含k個屬性的子集,然後再從這個子集中選擇一個最優屬性用於劃分。

    • 參數k控制了隨機性的引入程度,若令k=d,則基決策樹的構建與傳統的決策樹相同,若令k=1,則是隨機選擇一個屬性用於劃分,一般情況下,推薦值k=log2d

    • 隨機森林就是通過集成學習的思想將多棵樹集成的一種算法,它的基本單元是決策樹,而它的本質屬於集成學習。

    • 隨機:先從該節點的屬性集合中隨機選擇一個包含k個屬性的子集,然後再從這個子集中選擇一個最優屬性用於劃分

    • 森林:成百上千棵決策樹就可以叫做森林。每棵決策樹都是一個分類器,那麼對於一個輸入樣本,N棵樹會有N個分類結果。而隨機森林集成了所有的分類投票結果,將投票次數最多的類別指定爲最終的輸出,這是一種最簡單的bagging思想

    • 隨機森林特點:

      • 能夠有效運行在大數據集上,能夠處理具有高維特這的輸入樣本,而且不需要降維

      • 能夠評估各個特徵再分類問題上的重要性。

      • 在生成過程中,能夠獲取到內部生成誤差的一種無偏估計

      • 對於缺省值問題也能夠獲得很好的結果

      • 引入了兩個隨機性:隨機選擇樣本和隨機選擇特徵進行訓練。兩個隨機性的引入對隨機森林的分類性能至關重要。由於他們的引入使得隨機森林不容易陷入過擬合,並且具有很好的抗噪能力

  • boosting:採用重賦權法迭代的訓練基分類器:

    • 每一輪的訓練數據樣本賦予一個權重,並且每一輪樣本的權值分佈依賴上一輪的分類結果

    • 及分類器之間採用序列式的線性加權方式進行組合

    • 分類問題中,它通過改變訓練樣本的權重,學習多個分類器,並將這些分類器進行線性組合,提高分類性能

  • bagging與boosting的區別

    • 樣本選擇上

      • bagging:訓練集是在原始集中有放回選取的,從原始集中選出的各輪訓練集之間是獨立的

      • boosting:每一輪的訓練集不變,只是訓練集中每個樣例 在分類器中的權重發生變化。而權值是根據上一輪的分類結果進行調整

    • 樣例權重

      • bagging:使用均勻取樣,每個樣例的權重相等

      • boosting:根據錯誤率不斷調整樣例的權值,錯誤率越大則權重越大

    • 預測函數

      • bagging:所有預測函數的權重相等

      • boosting:每個弱分類器都有相應的權重,對於分類誤差小的分類器會有更大的權重

    • 並行計算

      • bagging:各個預測函數可以並行生成

      • boosting:各個預測函數只能順序生成,因爲後一個模型參數需要前一輪模型的結果

    • 方差偏差

      • bagging:再取樣,然後再每個樣本上訓練出來的模型去平均,所以降低模型的方差

      • boosting:每次迭代都根據上一次迭代的預測結果對樣本加權,所以迭代不斷進行,誤差越來越小,所以bias會不斷降低

隨機森林=bagging+決策樹

提升樹=adaboost+決策樹

GBDT=Gradient Boosting+決策樹

  • 隨機森林RF

    • 是bagging的擴展變體,它在以決策樹爲基學習器構建bagging集成的基礎上,進一步在決策樹的訓練過程中引入了隨機特徵選擇,因此RF可以概括爲4個部分:

      • 隨機選擇樣本(放回抽樣)

      • 隨機選擇特徵

      • 構建決策樹

      • 隨機森林投票(平均)

    • 隨機選擇樣本和bagging相同,隨機選擇特徵是指在樹的構建中,會從樣本集的特徵集合中隨機選擇部分特徵,然後再從這個子集中選擇最優的屬性用於劃分,這種隨機性導致隨機森林的偏差會有稍微的增加(相比單棵樹),但是由於隨機森林的平均特性,會使得它的方差減小,而且方差的減小補償了偏差的增大,因此總體而言是更好的模型。在決策樹構建時,RF每顆決策樹都最大可能的進行生長而不進行剪枝,在對預測輸出進行結合時,RF通常對分類問題使用簡單投票法,迴歸任務使用簡單平均法。

    • RF與bagging對比:

      • RF的起始性能較差,特別當只有一個基學習器時,隨着學習期數目增多,隨機森林通常會收斂到更低的泛化誤差。

      • 隨機森林的訓練效率也會高於bagging,因爲在單個決策樹的構建中,bagging使用的是確定性決策樹,在選擇特徵劃分點時,要對所有的特徵進行考慮,而隨機森林使用的是隨機性特徵數,只需要考慮特徵的子集。

    • 影響隨機森林分類結果的因素:

      • 森林中任意兩棵樹的相關性:相關性越大,錯誤率越大

      • 森林中每棵樹的分類能力:每棵樹的分類器能力越強,整個森林的錯誤率越低

    • 優點:

      • 數據集上表現良好,相對於其他算法有較大的優勢(訓練速度,預測準確度)。比單決策樹能學到特徵之間的相互影響且不容易過擬合

      • 能夠處理很高維的數據,並且不用特徵選擇(因爲特徵子集是隨機選取的),而且在訓練完後,給出特徵重要性。

      • 容易並行化,因爲樹與樹之間是相互獨立的。

      • 對於不平衡的數據集可以平衡誤差。相比svm,不是很怕特徵缺失,因爲待選特徵也是隨機選取。

    • 缺點:在噪聲較大的分類或者回歸問題上會過擬合。相比單一決策樹,其隨機性讓我們難以對模型進行解釋。

  • Adaboost

    • 計算樣本權重:訓練數據中的每個樣本,賦予其權重,即樣本權重,用向量D表示,這些權重都初始化成相等值,假設有n個樣本的訓練集:

    • 計算錯誤率:利用第一個弱學習算法h1對其進行學習,學習完成之後進行錯誤率的統計:

    • 計算弱學習算法權重:弱學習算法也有一個權重,用向量α表示,利用錯誤率計算權重α:

    • 更新樣本權重:第一次學習完成後,需要重新調整樣本的權重,以使得在第一分類中被錯分的樣本的權重,在接下來的學習中可以重點對其進行學習:,h(x)=y表示第i個樣本訓練正確,不等於則表示分類錯誤。,z表示歸一化因子,將兩個公式合併,簡化爲:

    • 重複進行學習:重複進行學習,這樣經過t輪的學習後,就回得到t個弱學習算法、權重、弱分類器的輸出以及最終的Adaboost算法的輸出,表示如下:

  • Adaboost優缺點

    • 優點:泛化錯誤率低,容易編碼,可以應用在大部分分類器上,無參數調整

    • 缺點:對離羣點敏感

  • GBDT( Gradient Boosting Decision Tree):以分類樹或迴歸樹(決策樹)爲基本分類器的提升方法。boosting算法都是一個迭代的過程,每一次新的訓練都爲了改進上一次的結果。GBDT核心在於:每一棵樹學的是之前所有樹結論和的殘差,這個殘差就是一個加預測值後能得到真實值的累加量。其適用面廣,離散或連續的數據都可以處理,幾乎可用於所有迴歸問題(線性/非線性),也可用於二分類問題(設定閾值,大於閾值爲正例,反之爲負例)。缺點是由於弱分類器的串行依賴,導致難以並行訓練數據。

    • 輸入:訓練數據集,損失函數爲

    • 輸出:迴歸樹F(x)

    • 初始化( 估計使損失函數極小化的常數值,它是隻有一個根節點的樹,一般平方損失函數爲節點的均值,而絕對損失函數爲節點樣本的中位數)

    • 對m=1,2,3,,,,m(m是迭代次數,也就是生成的弱學習器個數)

      • a.對樣本,計算損失函數的負梯度在當前模型的值作爲殘差估計,對於平方損失函數它就是通常所說的殘差;而對於一般損失函數,它就是殘差的近似值。

      • b.對擬合一個迴歸樹,得到第m棵樹的葉節點區域

      • c.對利用線性搜索,估計葉節點區域的值,使損失函數最小化,計算

      • d.更新

    • 得到最終的迴歸樹

  • 隨機森林RF與GBDT的區別

    • rf採用bagging思想,gbdt採用boosting思想。bagging採用有放回的均勻取樣,而boosting根據錯誤率來取樣(boosting初始化時對每個訓練樣例賦相等的權重1/n,然後用該算法對訓練集訓練t輪,每次訓練後對訓練失敗的樣例賦以較大的權重),因此boosting的分類精度優於bagging。bagging的訓練集的選擇是隨機的,各訓練集之間相互獨立,弱分類器可並行,而boosting的訓練集的選擇與前一輪的學習結果有關,是串行的。

    • 組成隨機森林的樹可以是迴歸樹和分類樹,而gbdt只能由迴歸樹組成

    • 組成隨機森林的樹可以並行生成,gbdt只能串行生成

    • 對於最終輸出結果而言,隨機森林採用多數投票;而gbdt是將所有結果累加起來,或者加權累加起來。

    • 隨機森林對異常值不敏感,gbdt對異常值敏感

    • 隨機森林對訓練集一視同仁,gbdt是基於權值的弱分類器的集成

    • 隨機森林是通過減少模型的方差提高性能;gbdt是通過減少模型的偏差提高性能

  • XGboost:是GBDT的高效實現,基學習期除了可以是CART也可以是線性分類器。

    • xgboost在目標函數中顯式的加上了正則化項,基學習爲CART時,正則化項與樹的葉子結點的數量和葉子節點的值有關

    • GBDT中使用LOSS Function對f(x)的一階導數計算出僞殘差用於學習生成fm(x),xgboost不僅使用到了一階導數,還使用二階導數

    • 上面提到CART迴歸樹中尋找最佳分割點的衡量標準是最小化均方差,xgboost尋找分割點的標準是最大化,lambda,gama與正則化相關

 

 

無監督學習:

在無監督學習中,訓練樣本的標記信息是未知的,目標是通過對無標記訓練樣本的學習來揭示數據的內在性質及規律,爲進一步的數據分析提供基礎。無監督包括聚類、密度估計、異常檢測等。

聚類

1.K-Means

  • 算法步驟

    • 隨機選擇k個聚類的初始中心(k是指定的)

    • 對任意一個樣本點,求其到k個聚類中心的距離,將樣本點歸類到距離最小的中心的聚類

    • 然後計算每個聚類的均值,更新每一個簇的中心

    • 反覆2-3步,直到聚類中心不變或者變化小於閾值(自己設定)結束

  • k如何選取:一般k是根據經驗,對數據分析。肘部法則,kmeans聚類效果評價準則是SSE,是計算所有點到相應簇中心的距離均值,當然k越大SSE越小,那要求出隨着k值變化SSE的變化規律,找到SSE減幅最小的k值,這時k應該是相對比較合理的值。

  • K-means優點:計算時間短,速度快。當簇接近高斯分佈時,它的效果最好

  • 缺點

    • 收斂慢,複雜度高

    • 只能發現球狀的cluster,不能發現非凸性狀的簇,或大小差別很大的簇。

    • 需要樣本存在均值(限定數據種類),不能計算均值的不能用

    • 需要確定k的個數

    • 對噪聲和離羣點敏感,如果簇中含有異常點,將導致均值偏離很嚴重。因爲均值體現的是數據集的整體特徵,容易掩蓋數據本身的特性 。比如1,2,3,4,100.均值爲22,嚴重偏離大多數,如果改成中位數3,在該例子中更穩妥。這種聚類也叫k-mediods聚類

    • 只能保證局部最優,不一定是全局最優。可以使用K-means++

  • k-mediods算法:由於kmeans對噪聲及異常值敏感,因此提出k-mediods方法

    • 1.首先隨機選取一組聚類樣本作爲中心點集

    • 2.每個中心點對應一個簇

    • 3.計算各個樣本點到各個中心點的距離(歐幾里得距離),將樣本點放入距離中心點最短的那個簇中

    • 4.計算各個簇中,聚簇內各樣本點距離的絕對誤差最小的點,作爲新的中心點

    • 5.如果新的中心點集與原中心點集相同,算法終止

    • 6.如果新的中心點集與原中心點集不完全相同,執行2

  • kmeans++:由於kmeans算法的分類結果會受到初始點的選取而有所區別,因此提出kmeans++。

    • 其實也只是對初始點的選擇有改進而已,其他步驟都一樣。初始質心選取的基本思路就是,初始的聚類中心之間的相互距離要儘可能的遠。具體過程如下:

      • 1.隨機選取一個樣本作爲第一個聚類中心c1;

      • 2.計算每個樣本與當前已有聚類中心的最短距離(即與最近一個聚類中心的距離),用D(x)表示;

      • 這個值越大,表示被選取作爲聚類中心的概率越大

      • 最後用輪盤法選出下一個聚類中心

      • 3.重複步驟2,直到選出k個聚類中心。選出初始點後,就繼續使用標準的kmeans算法了

2.學習向量量化(LVQ):與kmeans類似,試圖找到一組原型向量來刻畫聚類結構,與一般聚類不同的是,LVQ假設樣本數據帶有類別標籤,學習過程利用樣本的這些監督信息來輔助聚類。

  • LVQ的目標是學得一組n維原型向量{P1,P2,P3,,,,Pq},每個原型向量代表一個聚類簇。簇標記ti∈Y

  • 2-12行對原型向量進行迭代優化。在每一輪迭代中,算法隨機選取一個有標記的訓練樣本,找出與其距離最近的原型向量,並根據兩者的類別標記是否一致來對原型向量進行相應的更新。在第12行中,若算法的 停止條件已滿足(已達到最大迭代輪數,或原型向量更新很小甚至不再更新),將當前原型向量作爲最終結果返回。

  • 6-·0行是如何更新原型向量。直觀上對樣本xj,若最近的原型向量pi* 與xj的類別標記相同,則令pi*向xj的方向靠攏,否則原型向量與xj之間的距離將增大。

3.高斯混合聚類:採用概率模型來表達聚類原型

4.密度聚類:算法假設聚類結構能通過樣本分佈的緊密程度確定。DBSCAN是密度聚類算法,它基於一組“鄰域”參數來刻畫樣本分佈的緊密程度。

5.層次聚類:試圖在不同層次對數據集進行劃分,從而形成樹形的聚類結構。數據集的劃分可採用自底向上的聚合策略,也可以採用自頂向下的分拆策略。AGNES是一種採用自底向上聚合策略的層次聚類算法。它先將數據集中的每個樣本看做一個初始聚類簇,然後再算法運行的每一步中找出距離最近的兩個聚類簇進行合併,該過程不斷重複,直至達到預設的聚類簇個數。

  • 在1-9行,算法先對僅含一個樣本的初始聚類簇和相應的距離矩陣進行初始化;然後11-23行,AGNES不斷合併距離最近的聚類簇。並對合並得到的聚類簇的距離矩陣進行更新;上述過程不斷重複,直到達到預設的聚類簇數。

 

t-SNE聚類https://mp.weixin.qq.com/s?__biz=MzU2OTA0NzE2NA==&mid=2247490623&idx=1&sn=f70c4c215b40bbd305ea4112b65c9c2e&scene=21#wechat_redirect

 

K-Means與層次聚類的區別:

  • 層次聚類不能很好的處理大數據,但是K-Means聚類可以。是因爲K-Means的事件複雜度是線性的,即O(n),而層次聚類的事件複雜度是二次方,即O(n^2)

  • 在K-Means聚類中,因爲我們初始化的時候,會任意選擇不同的簇(cluster),所以所次運行算法產生的結果可能會有所不同。然而層次聚類中使可重現的。

  • 當簇(cluster)的性狀是超球形時(如2D中的圓,3D中的球),K-means表現的較好

  • K-Means不允許嘈雜的數據,而在層次中我們可以直接使用有宗盛的數據進行聚類。

 

數據降維

PCA,主成分分析

  • 降維的原因:

    • 去除噪聲,降低算法計算開銷

    • 使數據顯示更加容易,使數據集更容易使用

協方差:協方差數值越大,兩個變量同向程度越大,反之亦然。

  • 計算過程

    • 將原始數據按列組成n行m列矩陣X

    • 將X的每一行(代表一個屬性字段)進行零均值化,即減去這一行的均值

    • 求出協方差矩陣

    • 求出協方差矩陣的特徵值及對應的特徵向量

    • 將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取錢k行組成矩陣P

    • Y=PX即爲降維到K維後的數據

降維後低維空間的維數d'通常是有用戶事先指定,或通過在d'值不同的低維空間中對k近鄰分類器(或其他開銷較小的學習期)進行交叉驗證來選取較好的d’值。對PCA,還可以從重構的角度設置一個重構閾值,比如t=95%,然後選取使下式成立的最小d'值:(λi/λ)>=t.

降維的好處:

  • 捨棄這部分信息之後能使採樣密度增大,這正是降維的重要動機

  • 當數據受到噪聲影響時,最小的特徵值所對應的特徵向量往往和噪聲有關,將他們捨棄能在一定程度上起到去燥的效果。

 

 

SVD奇異值分解

很多情況下數據中的一小段攜帶了數據集中的大部分信息,其他信息則要麼是噪聲,要麼是毫不相關的信息。矩陣分解可以將原始矩陣表示成新的易於處理的形式。

SVD將原始數據集矩陣分解爲三個矩陣:

  • 那中間那個矩陣:

    • 只有對角元素(也成奇異值),其他元素均爲0

    • 對角元素是從大到小排列的

    • 奇異值就是矩陣特徵值的平方根。

在某個奇異值(r個)之後,其他奇異值由於值太小,則忽略置爲0,就一位這數據集中僅有r個重要特徵,而其餘特徵都是噪聲或冗餘特徵,如下圖:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章