一天1个机器学习知识点(三)
陸陸續續整理的機器學習的知識點,資料大多數來自網上,不做盈利目的,如果侵權請告知即刪!如果文章中有錯誤的地方還請各位同學指正,,一起學習,一起進步!
每天都在更新中,記得收藏,每天進步一點點!!
一天1個機器學習知識點(一)(決策樹,有無監督學習,SVM,梯度下降法,邏輯回歸,NB)
一天1個機器學習知識點(二)(KNN,Kmeans,偏差方差,參數非參數模型,生成模型判別模型,正則化,概率,牛頓法,熵)
一天1個機器學習知識點(三)(損失函數,生成模型和判別模型,DBSCAN,OPTICS,準確率,精確率,召回率,ROC等)
一天1個機器學習知識點(四)這部分主要更新集成學習的內容(RF,adaboost,GBDT,XGBoost等)
一天1個機器學習知識點(五)(特征工程相關,PCA,LDA等)
穿越---->深度學習知識點!!
目錄
- 1.什么是DBSCAN?
- 2.什么是OPTICS?
- 3.DBSCAN與kmeans,OPTICS區別
- 3.1.DBSCAN與kmeans
- 3.2.DBSCAN與OPTICS的區別
- 4.機器學習的損失函數都有哪些,怎么用?
- 4.1.平方損失函數最小二乘法, Ordinary Least Squares )
- 4.2.LogLoss對數損失函數(邏輯回歸,交叉熵損失)
- 4.3.指數損失函數(Adaboost)
- 4.4.Hinge損失函數(SVM)
- 5.blending和stacking
- 5.1.blending
- 5.2.stacking
- 5.3Blending與Stacking對比
- 6.softmax
- 7.矩陣正定性的判斷,Hessian矩陣正定性在梯度下降中的應用
- 8.生成模型和判別模型
- 8.1生成模型和判別模型的范例
- 8.2生成模型和判別模型的對比
- 8.3生成模型和判別模型的特點
- 8.4生成模型和判別模型的聯系
- 9.準確率、精確率、召回率、F1值
- 9.1.混淆矩陣
- 9.2.準確率
- 9.3.精確率
- 9.4.召回率
- 9.5.F1分數
- 9.6.Roc、AUC曲線
- 10.線性與非線性
- 10.1線性模型
- 10.2非線性模型
1.什么是DBSCAN?
這篇知乎對DBSCAN寫的很好。
參考回答:
DBSCAN是一種基于密度的空間聚類算法,它不需要定義簇的個數,而是將具有足夠高密度的區域劃分為簇,并在有噪聲的數據中發現任意形狀的簇,在此算法中將簇定義為密度相連的點的最大集合。
DBSCAN的算法步驟分成兩步:
1,尋找核心點形成臨時聚類簇。
掃描全部樣本點,如果某個樣本點R半徑范圍內點數目>=MinPoints,則將其納入核心點列表,并將其密度直達的點形成對應的臨時聚類簇。
2,合并臨時聚類簇得到聚類簇。
對于每一個臨時聚類簇,檢查其中的點是否為核心點,如果是,將該點對應的臨時聚類簇和當前臨時聚類簇合并,得到新的臨時聚類簇。
重復此操作,直到當前臨時聚類簇中的每一個點要么不在核心點列表,要么其密度直達的點都已經在該臨時聚類簇,該臨時聚類簇升級成為聚類簇。
繼續對剩余的臨時聚類簇進行相同的合并操作,直到全部臨時聚類簇被處理。
2.什么是OPTICS?
3.DBSCAN與kmeans,OPTICS區別
3.1.DBSCAN與kmeans
1)K均值和DBSCAN都是將每個對象指派到單個簇的劃分聚類算法,但是K均值一般聚類所有對象,而DBSCAN 丟棄被它識別為噪聲的對象。
2)K均值使用簇的基于原型的概念,而DBSCAN使用基于密度的概念。
3)K均值很難處理非球形的簇和不同大小的簇。DBSCAN可以處理不同大小或形狀的簇,并且不太受噪聲和離群點的影響。當簇具有很不相同的密度時,兩種算法的性能都很差。
4)K均值只能用于具有明確定義的質心(比如均值或中位數)的數據。DBSCAN要求密度定義(基于傳統的歐幾里得密度概念)對于數據是有意義的。
5)K均值可以用于稀疏的高維數據,如文檔數據。DBSCAN通常在這類數據上的性能很差,因為對于高維數據,傳統的歐幾里得密度定義不能很好處理它們。
6)K均值和DBSCAN的最初版本都是針對歐幾里得數據設計的,但是它們都被擴展,以便處理其他類型的數據。
7)基本K均值算法等價于一種統計聚類方法(混合模型),假定所有的簇都來自球形高斯分布,具有不同的均值,但具有相同的協方差矩陣。DBSCAN不對數據的分布做任何假定。
8)K均值和DBSCAN都尋找使用所有屬性的簇,即它們都不尋找可能只涉及某個屬性子集的簇。
9)K均值可以發現不是明顯分離的簇,即便簇有重疊也可以發現,但是DBSCAN會合并有重疊的簇。
10)K均值算法的時間復雜度是O(m),而DBSCAN的時間復雜度是O(m^2),除非用于諸如低維歐幾里得數據這樣的特殊情況。
11)DBSCAN多次運行產生相同的結果,而K均值通常使用隨機初始化質心,不會產生相同的結果。
12)DBSCAN自動地確定簇個數,對于K均值,簇個數需要作為參數指定。然而,DBSCAN必須指定另外兩個參數:Eps(鄰域半徑)和MinPts(最少點數)。
13)K均值聚類可以看作優化問題,即最小化每個點到最近質心的誤差平方和,并且可以看作一種統計聚類(混合模型)的特例。DBSCAN不基于任何形式化模型。
3.2.DBSCAN與OPTICS的區別
1)DBSCAN算法,有兩個初始參數E(鄰域半徑)和minPts(E鄰域最小點數)需要用戶手動設置輸入,并且聚類的類簇結果對這兩個參數的取值非常敏感,不同的取值將產生不同的聚類結果,其實這也是大多數其他需要初始化參數聚類算法的弊端。
2)為了克服DBSCAN算法這一缺點,提出了OPTICS算法(Ordering Points to identify the clustering structure)。OPTICS并 不顯示的產生結果類簇,而是為聚類分析生成一個增廣的簇排序(比如,以可達距離為縱軸,樣本點輸出次序為橫軸的坐標圖),這個排序代表了各樣本點基于密度的聚類結構。它包含的信息等價于從一個廣泛的參數設置所獲得的基于密度的聚類,換句話說,從這個排序中可以得到基于任何參數E和minPts的DBSCAN算法的聚類結果。
4.機器學習的損失函數都有哪些,怎么用?
這篇文章有詳細介紹。
4.1.平方損失函數最小二乘法, Ordinary Least Squares )
最小二乘法是線性回歸的一種,最小二乘法(OLS)將問題轉化成了一個凸優化問題。在線性回歸中,它假設樣本和噪聲都服從高斯分布(為什么假設成高斯分布呢?其實這里隱藏了一個小知識點,就是中心極限定理,可以參考【central limit theorem】),最后通過極大似然估計(MLE)可以推導出最小二乘式子。最小二乘的基本原則是:最優擬合直線應該是使各點到回歸直線的距離和最小的直線,即平方和最小。換言之,OLS是基于距離的,而這個距離就是我們用的最多的歐幾里得距離。為什么它會選擇使用歐式距離作為誤差度量呢(即Mean squared error, MSE),主要有以下幾個原因:
簡單,計算方便;
歐氏距離是一種很好的相似性度量標準;
在不同的表示域變換后特征性質不變。
當樣本個數為n時,此時的損失函數變為:
Y-f(X)表示的是殘差,整個式子表示的是殘差的平方和,而我們的目的就是最小化這個目標函數值(注:該式子未加入正則項),也就是最小化殘差的平方和(residual sum of squares,RSS)。
而在實際應用中,通常會使用均方差(MSE)作為一項衡量指標,公式如下
4.2.LogLoss對數損失函數(邏輯回歸,交叉熵損失)
在邏輯回歸的推導中,它假設樣本服從伯努利分布(0-1分布),然后求得滿足該分布的似然函數,接著取對數求極值等等。而邏輯回歸并沒有求似然函數的極值,而是把極大化當做是一種思想,進而推導出它的經驗風險函數為:最小化負的似然函數(即max F(y, f(x)) —> min -F(y, f(x)))。
剛剛說到,取對數是為了方便計算極大似然估計,因為在MLE(最大似然估計)中,直接求導比較困難,所以通常都是先取對數再求導找極值點。損失函數L(Y, P(Y|X))表達的是樣本X在分類Y的情況下,使概率P(Y|X)達到最大值(換言之,就是利用已知的樣本分布,找到最有可能(即最大概率)導致這種分布的參數值;或者說什么樣的參數才能使我們觀測到目前這組數據的概率最大)。因為log函數是單調遞增的,所以logP(Y|X)也會達到最大值,因此在前面加上負號之后,最大化P(Y|X)就等價于最小化L了。
4.3.指數損失函數(Adaboost)
4.4.Hinge損失函數(SVM)
看這里。
5.blending和stacking
這部分也屬于集成學習的部分。
5.1.blending
- 將數據劃分為訓練集和測試集(test_set),其中訓練集需要再次劃分為訓練集(train_set)和驗證集(val_set);
- 創建第一層的多個模型,這些模型可以使同質的也可以是異質的;
- 使用train_set訓練步驟2中的多個模型,然后用訓練好的模型預測val_set和test_set得到val_predict,
test_predict1; - 創建第二層的模型,使用val_predict作為訓練集訓練第二層的模型;
- 使用第二層訓練好的模型對第二層測試集test_predict1進行預測,該結果為整個測試集的結果
Blending與Stacking大致相同,只是Blending的主要區別在于訓練集不是通過K-Fold的CV策略來獲得預測值從而生成第二階段模型的特征,而是建立一個Holdout集,例如10%的訓練數據,第二階段的stacker模型就基于第一階段模型對這10%訓練數據的預測值進行擬合。說白了,就是把Stacking流程中的K-Fold CV 改成 HoldOut CV。
5.2.stacking
- 將數據劃分為訓練集和測試集(test_set),對訓練集進行劃分為K個大小相似的集合,取其中一份作為驗證集val_set,其余的為訓練集train_set;
- 創建第一層的多個模型,這些模型可以使同質的也可以是異質的;
- 對于每一個模型來說,train_set和val_set是不一樣的,如2.2圖所示;然后利用各自的train_set訓練各自的模型,訓練好的模型對各自的val_set和test_set進行預測,得到val_predict和test_predict;
- 創建第二層的模型,將每個模型對應的val_predict拼接起來作為第二層的訓練集,將所有模型的test_predict取平均值作為第二層的測試集;用訓練好的第二層模型對第二層的測試集進行預測,得到的結果即為整個測試集的結果
5.3Blending與Stacking對比
Blending的優點在于:
1.比stacking簡單(因為不用進行k次的交叉驗證來獲得stacker feature)
2.避開了一個信息泄露問題:generlizers和stacker使用了不一樣的數據集
3.在團隊建模過程中,不需要給隊友分享自己的隨機種子
而缺點在于:
1.使用了很少的數據(是劃分hold-out作為測試集,并非cv)
2.blender可能會過擬合(其實大概率是第一點導致的)
3.stacking使用多次的CV會比較穩健
6.softmax
在機器學習尤其是深度學習中,softmax是個非常常用而且比較重要的函數,尤其在多分類的場景中使用廣泛。他把一些輸入映射為0-1之間的實數,并且歸一化保證和為1,因此多分類的概率之和也剛好為1。max存在的一個問題是什么呢?如果將max看成一個分類問題,就是非黑即白,最后的輸出是一個確定的變量。更多的時候,我們希望輸出的是取到某個分類的概率,或者說,我們希望分值大的那一項被經常取到,而分值較小的那一項也有一定的概率偶爾被取到,所以我們就應用到了soft的概念,即最后的輸出是每個分類被取到的概率。
下面為大家解釋一下為什么softmax是這種形式。
首先,我們知道概率有兩個性質:
1)預測的概率為非負數;
2)各種預測結果概率之和等于1。
softmax就是將在負無窮到正無窮上的預測結果按照這兩步轉換為概率的,其公式為:
總結一下softmax如何將多分類輸出轉換為概率,可以分為兩步:
1)分子:通過指數函數,將實數輸出映射到零到正無窮。
2)分母:將所有結果相加,進行歸一化。
7.矩陣正定性的判斷,Hessian矩陣正定性在梯度下降中的應用
若矩陣所有特征值均不小于0,則判定為半正定。若矩陣所有特征值均大于0,則判定為正定。在判斷優化算法的可行性時Hessian矩陣的正定性起到了很大的作用,若Hessian正定,則函數的二階偏導恒大于0,函數的變化率處于遞增狀態,在牛頓法等梯度下降的方法中,Hessian矩陣的正定性可以很容易的判斷函數是否可收斂到局部或全局最優解。
8.生成模型和判別模型
從概率分布的角度考慮,對于一堆樣本數據,每個均有特征Xi對應分類標記yi。
生成模型:學習得到聯合概率分布P(x,y),即特征x和標記y共同出現的概率,然后求條件概率分布P(y|x)。能夠學習到數據生成的機制。
判別模型:學習得到條件概率分布P(y|x),即在特征x出現的情況下標記y出現的概率。
數據要求:生成模型需要的數據量比較大,能夠較好地估計概率密度;而判別模型對數據樣本量的要求沒有那么多。
8.1生成模型和判別模型的范例
生成模型:樸素貝葉斯、隱馬爾可夫(em算法)
判別模型:k近鄰法、決策樹、支持向量機(SVM)、邏輯回歸、線性回歸、最大熵模型、提升方法、感知機、條件隨機場(CRF)
8.2生成模型和判別模型的對比
- 生成模型可以還原出聯合概率分布(還原數據本身相似度),而判別方法不能;
- 生成模型的學習收斂速度更快,當樣本容量增加的時候,學到的模型可以更快的收斂于真實模型;
- 當存在隱變量時,仍可以利用生成方法學習,此時判別方法不能用;
- 判別學習不能反映訓練數據本身的相似度,但它尋找不同類別之間的最優分類面,反映的是異類數據之間的差異,直接面對預測,往往學習的準確率更高,由于直接學習P(Y|X)或Y=f(X),從而可以簡化學習;
- 簡單的說,生成模型是從大量的數據中找規律,屬于統計學習;而判別模型只關心不同類型的數據的差別,利用差別來分類。
8.3生成模型和判別模型的特點
在監督學習中,兩種方法各有優缺點,適合于不同條件的學習問題。
生成方法的特點:
- 生成方法學習聯合概率密度分布P(X,Y),所以就可以從統計的角度表示數據的分布情況,能夠反映同類數據本身的相似度。但它不關心到底劃分各類的那個分類邊界在哪。
- 生成方法可以還原出聯合概率分布P(Y|X),而判別方法不能。
- 生成方法的學習收斂速度更快,即當樣本容量增加的時候,學到的模型可以更快的收斂于真實模型。
- 當存在隱變量時,仍可以用生成方法學習。此時判別方法就不能用。
判別方法的特點:
- 判別方法直接學習的是決策函數Y=f(X)或者條件概率分布P(Y|X)。不能反映訓練數據本身的特性。
- 但它尋找不同類別之間的最優分類面,反映的是異類數據之間的差異。
- 直接面對預測,往往學習的準確率更高。
- 由于直接學習P(Y|X)或P(X),可以對數據進行各種程度上的抽象、定義特征并使用特征,因此可以簡化學習問題。
8.4生成模型和判別模型的聯系
由生成模型可以得到判別模型,但由判別模型得不到生成模型
9.準確率、精確率、召回率、F1值
參考
9.1.混淆矩陣
TP、FP、FN、TN可以理解為
- TP:預測為1,實際為1,預測正確。
- FP:預測為1,實際為0,預測錯誤。
- FN:預測為0,實際為1,預測錯誤。
- TN:預測為0,實際為0,預測正確。
9.2.準確率
預測正確的結果占總樣本的百分比,表達式為:
雖然準確率能夠判斷總的正確率,但是在樣本不均衡的情況下,并不能作為很好的指標來衡量結果。
比如在樣本集中,正樣本有90個,負樣本有10個,樣本是嚴重的不均衡。對于這種情況,我們只需要將全部樣本預測為正樣本,就能得到90%的準確率,但是完全沒有意義。對于新數據,完全體現不出準確率。因此,在樣本不平衡的情況下,得到的高準確率沒有任何意義,此時準確率就會失效。所以,我們需要尋找新的指標來評價模型的優劣。
9.3.精確率
精確率(Precision) 是針對預測結果為正而言的,其含義是在被所有預測為正的樣本中實際為正樣本的概率,表達式為:
精確率和準確率看上去有些類似,但是是兩個完全不同的概念。精確率代表對正樣本結果中的預測準確程度,準確率則代表整體的預測準確程度,包括正樣本和負樣本。
9.4.召回率
召回率(Recall) 是針對原樣本為正而言的,其含義是在實際為正的樣本中被預測為正樣本的概率,表達式為
9.5.F1分數
首先我們先明確目標,我們希望精確率和召回率都很高,但實際上是矛盾的,上述兩個指標是矛盾體,無法做到雙高。因此,選擇合適的閾值點,就需要根據實際問題需求,比如我們想要很高的精確率,就要犧牲掉一些召回率。想要得到很高的召回率,就要犧牲掉一些精準率。但通常情況下,我們可以根據他們之間的平衡點,定義一個新的指標:F1分數(F1-Score)。F1分數同時考慮精確率和召回率,讓兩者同時達到最高,取得平衡。F1分數表達式為:
9.6.Roc、AUC曲線
真正率(TPR)和假正率(FPR):
- 橫坐標:偽正類率(False positive rate,FPR,FPR=FP/(FP+TN)),預測為正但實際為負的樣本占所有負例樣本的比例;
- 縱坐標:真正類率(True positive rate,TPR,TPR=TP/(TP+FN)),預測為正且實際為正的樣本占所有正例樣本的比例(召回率)
ROC曲線也是通過遍歷所有閾值來繪制曲線的。如果我們不斷的遍歷所有閾值,預測的正樣本和負樣本是在不斷變化的,相應的ROC曲線TPR和FPR也會沿著曲線滑動。FPR表示模型虛報的程度,TPR表示模型預測覆蓋的程度。理所當然的,我們希望虛報的越少越好,覆蓋的越多越好。所以TPR越高,同時FPR越低,也就是ROC曲線越陡,那么模型的性能也就越好。不論樣本比例如何改變,ROC曲線都沒有影響,也就是ROC曲線無視樣本間的不平衡問題。
AUC(Area Under Curve) 表示ROC中曲線下的面積,用于判斷模型的優劣。如ROC曲線所示,連接對角線的面積剛好是0.5,對角線的含義也就是隨機判斷預測結果,正負樣本覆蓋應該都是50%。另外,ROC曲線越陡越好,所以理想值是1,即正方形。所以AUC的值一般是介于0.5和1之間的。AUC評判標準可參考如下:
- 0.5-0.7:效果較低。
- 0.7-0.85:效果一般。
- 0.85-0.95:效果很好。
- 0.95-1:效果非常好
10.線性與非線性
參考
10.1線性模型
在統計意義上,如果一個回歸等式是線性的,那么它的相對于參數就必須也是線性的。如果相對于參數是線性,那么即使性對于樣本變量的特征是二次方或者多次方,這個回歸模型也是線性的.
10.2非線性模型
最簡單的判斷一個模型是不是非線性,就是關注非線性本身,判斷它的參數是不是非線性的。非線性有很多種形象,這也是為什么非線性模型能夠那么好的擬合那些曲折的函數曲線的原因。
總結
以上是生活随笔為你收集整理的一天1个机器学习知识点(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一天1个机器学习知识点(二)
- 下一篇: 一天1个机器学习知识点(四)