機器學習算法(二十一):核密度估計 Kernel Density Estimation(KDE)

源鏈接:https://blog.csdn.net/weixin_39910711/article/details/107307509

此處僅爲收藏,建議查看原文,鏈接見上

目錄

1 分佈密度函數

1.1 參數估計方法 

1.2 非參數估計 

2 直方圖到核密度估計

2.1 核函數

2.2 帶寬的選擇

2.2.1 自適應或可變帶寬的核密度估計

2.3 多維

1 分佈密度函數
    給定一個樣本集,怎麼得到該樣本集的分佈密度函數,解決這一問題有兩個方法:

1.1 參數估計方法 
    簡單來講,即假定樣本集符合某一概率分佈,然後根據樣本集擬合該分佈中的參數,例如:似然估計,混合高斯等,由於參數估計方法中需要加入主觀的先驗知識,往往很難擬合出與真實分佈的模型; 

1.2 非參數估計 
    和參數估計不同,非參數估計並不加入任何先驗知識,而是根據數據本身的特點、性質來擬合分佈,這樣能比參數估計方法得出更好的模型。核密度估計就是非參數估計中的一種,由Rosenblatt (1955)和Emanuel Parzen(1962)提出,又名Parzen窗(Parzen window)。Ruppert和Cline基於數據集密度函數聚類算法提出修訂的核密度估計方法。

2 直方圖到核密度估計
    給定一個數據集,需要觀察這些樣本的分佈情況,往往我們會採用直方圖的方法來進行直觀的展現。該直方圖的特點是簡單易懂,但缺點在於以下三個方面:(1)密度函數是不平滑的;(2)密度函數受子區間(即每個直方體)寬度影響很大,同樣的原始數據如果取不同的子區間範圍,那麼展示的結果可能是完全不同的。如下圖中的前兩個圖,第二個圖只是在第一個圖的基礎上,劃分區間增加了0.75,但展現出的密度函數卻看起來差異很大;(3)直方圖最多隻能展示2維數據,如果維度更多則無法有效展示。

 

    除此之外,直方圖還存在一個問題,那就是直方圖展示的分佈曲線並不平滑,即在一個bin中的樣本具有相等的概率密度,顯然,這一點往往並不適合。解決這一問題的辦法時增加bins的數量,當bins增到到樣本的最大值時,就能對樣本的每一點都會有一個屬於自己的概率,但同時會帶來其他問題,樣本中沒出現的值的概率爲0,概率密度函數不連續,這同樣存在很大的問題。如果我們將這些不連續的區間連續起來,那麼這很大程度上便能符合我們的要求,其中一個思想就是對於樣本中的某一點的概率密度,如果能把鄰域的信息利用起來,那麼最後的概率密度就會很大程度上改善不連續的問題,爲了方便觀察,我們看另外一副圖。 

 

    一個很自然的想法是,如果我們想知道X=x處的密度函數值,可以像直方圖一樣,選一個x附近的小區間,數一下在這個區間裏面的點的個數,除以總個數,應該是一個比較好的估計。用數學語言來描述,如果你還記得導數的定義,密度函數可以寫爲:

    

    現在我們假設要求x處的密度函數值,根據上面的思想,如果取 x 的鄰域[x-h,x+h],當h->0的時候,我們便能把該鄰域的密度函數值當作x點的密度函數值。用數學語言寫就是:

    

    是該鄰域中的樣本點數量,樣本集的總數量,最後對該鄰域內的密度值取平均便得到 x 點的密度函數值f(x)。把上面的式子進行改寫,即:核密度估計(Kernel density estimation),是一種用於估計概率密度函數的非參數方法,爲獨立同分布 F 的n 個樣本點,設其概率密度函數爲 f:

        

    這裏 h 如果選的太大,肯定不符合 h 趨向於 0 的要求。h 選的太小,那麼用於估計 f(x) 的點實際上非常少。這也就是非參數估計裏面的 bias-variance tradeoff,也就是偏差和方差的平衡。這樣後還是存在一個問題,那就是概率密度函數依然不夠平滑(因爲兩個數之間的存在無數個數)。

    記 ,那麼:

         

    由於需要滿足概率密度的積分爲1,所以:

        

    也就是要滿足 K(t) 的積分等於1也就滿足了的積分爲1。如果把 K(t) 當作其他已知的概率密度函數,那麼問題就解決了,最後的密度函數也就連續了。

2.1 核函數


    從支持向量機、meansift都接觸過核函數,應該說核函數是一種理論概念,但每種核函數的功能都是不一樣的,這裏的核函數有uniform,triangular, biweight, triweight, Epanechnikov,normal等。這些核函數的圖像大致如下圖: 

 

    有言論稱Epanechnikov 內核在均方誤差意義下是最優的,效率損失也很小。由於高斯內核方便的數學性質,也經常使用 K(x)= ϕ(x),ϕ(x)爲標準正態概率密度函數。 
    從上面講述的得到的是樣本中某一點的概率密度函數,那麼整個樣本集應該是怎麼擬合的呢?將設有N個樣本點,對這N個點進行上面的擬合過後,將這N個概率密度函數進行疊加便得到了整個樣本集的概率密度函數。例如利用高斯覈對X={x1=−2.1,x2=−1.3,x3=−0.4,x4=1.9,x5=5.1,x6=6.2} 六個點的“擬合”結果如下:

    

在直方圖中,橫軸間隔爲2,數據落到某個區間,此區間y軸增加1/12。
在覈密度估計中,另正態分佈方差爲2.25,紅色的虛線表示由每一個數據得到的正態分佈,疊加一起得到核密度估計的結果,藍色表示。
     那麼問題就來了,如何選定核函數的“方差”呢?這其實是由h來決定,不同的帶寬下的核函數估計結果差異很大,如下圖:

 

(Kernel density estimate (KDE) with different bandwidths of a random sample of 100 points from a standard normal distribution. Grey: true density (standard normal). Red: KDE with h=0.05. Black: KDE with h=0.337. Green: KDE with h=2.)

2.2 帶寬的選擇
    在覈函數確定之後,比如上面選擇的高斯核,那麼高斯核的方差,也就是h(也叫帶寬,也叫窗口,我們這裏說的鄰域)應該選擇多大呢?不同的帶寬會導致最後的擬合結果差別很大。同時上面也提到過,理論上h->0的,但h太小,鄰域中參與擬合的點就會過少。那麼藉助機器學習的理論,我們當然可以使用交叉驗證選擇最好的h。另外,也有一個理論的推導給你選擇h提供一些信息。 
    在樣本集給定的情況下,我們只能對樣本點的概率密度進行計算,那擬合過後的概率密度應該和計算的值更加接近纔好,基於這一點,我們定義一個誤差函數,然後最小化該誤差函數便能爲h的選擇提供一個大致的方向。選擇最小化L2風險函數,即均平方積分誤差函數(mean intergrated squared error),該函數的定義是:

        

    在weak assumptions下, ,其中AMISE爲漸進的MISE。而AMISE有:

        

    其中:

        

    最小化MISE(h)等價於最小化AMISE(h),求導,令導數爲0有:

        

    得:

        

    當核函數確定之後,h公式裏的R、m、f”都可以確定下來,h便存在解析解。

    有:

    如果帶寬不是固定的,其變化取決於估計的位置(balloon estimator)或樣本點(逐點估計pointwise estimator),由此可以產生一個非常強大的方法稱爲自適應或可變帶寬核密度估計。

    如果使用高斯核函數進行核密度估計,則 h 的最優選擇(即使平均積分平方誤差最小化的帶寬)爲 

        

    這裏  是樣品的標準差。這種近似稱爲正態分佈近似,高斯近似,或Silverman(1986)經驗法則。雖然這個經驗法則很容易計算,但應謹慎使用,因爲當密度不接近正態時,可能會產生泛化極差的估計。

    這裏帶寬的作用簡述: 

在數據可視化的相關領域中,帶寬的大小決定了核密度估計函數(KDE)的平滑(smooth)程度,帶寬越小越undersmooth,帶寬越大越oversmooth。
在POI興趣點推薦領域,或位置服務領域,帶寬h的設置主要與分析尺度以及地理現象特點有關。較小的帶寬可以使密度分佈結果中出現較多的高值或低值區域,適合於揭示密度分佈的局部特徵,而較大的帶寬可以在全局尺度下使熱點區域體現得更加明顯。另外,帶寬應與興趣點的離散程度呈正相關,對於稀疏型的興趣點分佈應採用較大的帶寬,而對於密集型的興趣點則應考慮較小一些的帶寬。
2.2.1 自適應或可變帶寬的核密度估計
    如果帶寬不是固定的,而是根據樣本的位置而變化(其變化取決於估計的位置(balloon estimator)或樣本點(逐點估計pointwise estimator)),則會產生一種特別有力的方法,稱爲自適應或可變帶寬的核密度估計。就POI興趣點推薦來說,由於密集的城市地區的簽到密度很高,人煙稀少的農村地區的簽到密度較低。就是說不同位置應該採取不同的分析尺度,因此本文采用不固定的帶寬來進行核密度估計。

    說到這, 有些朋友可能不知道POI興趣點推薦是啥意思, 這裏簡單的說一下:POI是Point-of-Interest的意思,即興趣點。就是說,給用戶推薦其感興趣的地點。就這麼簡單。在推薦系統相關領域,興趣點推薦是一個非常火爆的研究課題。這裏會用到核密度估計的方法,比如這篇論文:Jia-Dong Zhang,Chi-Yin Chow.(2015)GeoSoCa: Exploiting Geographical, Social and Categorical Correlations for Point-of-Interest Recommendations.SIGIR’15, August 09 - 13, 2015, Santiago, Chile.就利用了可變帶寬的核密度估計方法。

    這裏再簡單討論一下自適應帶寬的核密度估計方法。自適應帶寬的核密度估計方法是在固定帶寬核密度函數的基礎上,通過修正帶寬參數爲而得到的,其形式如式所示: 

        

        

        

    這裏 k(x) 是帶寬爲  的核密度估計函數,M 是樣例的個數,看出來了吧,每一個點 j 都有一個帶寬 ,因此這叫自適應或可變。K(x) 是核函數,這裏用了高斯核函數,當然也可以是其他的核函數。0≤α≤1,爲靈敏因子,通常 α 取0.5,α=0 時,自適應帶寬的核密度估計就變成了固定帶寬的核密度估計了。固定帶寬的核密度估計就是前面說的核密度估計。ω 表示帶寬的參數。 

2.3 多維
    還可以擴展到多維,即:

        

    其中d爲x的維數,K爲多維的kernel,一般爲d個一維kernel的乘積。

核密度估計 Kernel Density Estimation(KDE):核密度估計 Kernel Density Estimation(KDE)_NeverMore_7的博客-CSDN博客_核密度估計

核密度估計(Kernel density estimation):核密度估計(Kernel density estimation)_Starworks的博客-CSDN博客_核密度

什麼是核密度估計?如何感性認識?:什麼是核密度估計?如何感性認識? - 知乎

核密度估計Kernel Density Estimation(KDE)概述 密度估計的問題:核密度估計Kernel Density Estimation(KDE)概述 密度估計的問題 - 簡書

自適應帶寬的核密度估計可以參考維基百科:https://en.wikipedia.org/wiki/Variable_kernel_density_estimation
————————————————
版權聲明:本文爲CSDN博主「意念回覆」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_39910711/article/details/107307509

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