自動駕駛(六十九)---------降維PCA、LDA

      自動駕駛是一個系統工程, 不可能有一種方法包打天下, 它是由很多子功能配合而成, 這就要求我們對其他機器學習算法都能瞭解, 之前在視覺中有一些很好的方法, 這裏也想整理出來, 供大家參考.

       在深度學習之前, 特徵提取是很重要的技術, 在這中間 主成分分析(PCA)經常出現, 主題模型算法(LDA)也類似, 這裏系統的總結一下:

1. 主成分分析(PCA)

      在大數據時代, 最不缺的就是數據, 所以數據降維是數據處理最重要的方式, 降維在簡化分析的數據同時, 希望減少降維導致的信息損失,如何實現這一目標呢? 這裏我介紹一種方法 主成分分析.

       PCA的主要思想是將n維特徵映射到k維上,這k維是全新的正交特徵也被稱爲主成分. 那麼問題轉化爲如何選擇K維座標, 使得信息損失最小. 在信號處理中認爲信號具有較大的方差,噪聲有較小的方差,信噪比就是信號與噪聲的方差比,越大越好。樣本在u1上的投影方差較大,在u2上的投影方差較小,那麼可認爲u2上的投影是由噪聲引起的。因此我們認爲,最好的k維特徵是將n維樣本點轉換爲k維後,每一維上的樣本方差都很大。

                                    

       1. 前面介紹了方差最大化, 在一維數據中我們很好求方差, 在多維數據中需要用到協方差:

           其中二維協方差:    

           三維協方差:

       2. 介紹完方差概念之後,下一個要解決的問題是如何構建兩兩正交的座標軸,這就要用到線性代數的知識。

           如果一個向量v是矩陣A的特徵向量,將一定可以表示成下面的形式:

           λ是特徵向量v對應的特徵值,一個矩陣的一組特徵向量是一組正交向量。

           對於矩陣A,有一組特徵向量v,將這組向量進行正交化單位化,就能得到一組正交單位向量。特徵值分解,就是將矩陣A分解爲如下式:其中,Q是矩陣A的特徵向量組成的矩陣,\Sigma則是一個對角陣,對角線上的元素就是特徵值。

        3. 基於特徵值分解協方差矩陣實現PCA算法步驟如下:數據集,需要降到k維。

  • 3.1 去平均值(即去中心化),即每一位特徵減去各自的平均值,使得數據的期望爲零。
  • 3.2 計算協方差矩陣,注:這裏除或不除樣本數量n或n-1,其實對求出的特徵向量沒有影響。
  • 3.3 用特徵值分解方法求協方差矩陣的特徵值與特徵向量。
  • 3.4 對特徵值從大到小排序,選擇其中最大的k個。然後將其對應的k個特徵向量分別作爲行向量組成特徵向量矩陣P。
  • 3.5 將數據轉換到k個特徵向量構建的新空間中,即Y=PX。從而實現了把數據從n維降低到k維。

2. 主題模型(LDA)

        主題模型是用來在一系列文檔中發現 抽象主題 的一種統計模型。直觀來講,如果一篇文章有一箇中心思想,那麼一定存在一些特定詞語會出現的比較頻繁。

       這個過程好比我們在寫文章:一般我們寫文章的時候都是先給自己的文章定一個主題,然後我們會根據這個主題,用和這個主題有關的詞語進行組合最後形成文章。

       LDA 其實有兩種含義,一種是線性判別分析, 爲後續的分類問題做數據的降維處理;另一種 隱含狄利克雷分佈(Latent Dirichlet Allocation,簡稱LDA),是一種概率主題模型。

       開始時,先隨機給和賦值(對所有的d和t),相當於是先驗值。然後:

  • 1. 針對一個特定的文檔ds中的第i個單詞wi,如果令該單詞對應的topic爲tj,可以把上述公式改寫爲Pj(wi|ds) = P(wi|tj)*P(tj|ds)
  • 2. 枚舉T中的topic,得到所有的Pj(wi|ds)。然後可以根據這些概率值結果爲ds中的第i個單詞wi選擇一個topic。最簡單的方法是取令Pj(wi|ds)最大的tj(注意,這個式子裏只有j是變量)
  • 3. 然後,如果ds中的第i個單詞wi在這裏選擇了一個與原先不同的topic(也就是說,這個時候i在遍歷ds中所有的單詞,而tj理當不變),就會對和有影響了,它們的影響又會反過來影響對上面提到的P(w|d)的計算。對D中所有的d中的所有w進行一次P(w|d)的計算並重新選擇topic看做一次迭代。這樣進行n次循環迭代後,就會收斂到LDA所需要的結果了

       具體推導如下:

        1. 共軛分佈和共軛先驗:前邊說貝葉斯派中,後驗概率 ∝ 先驗概率 × 似然函數。如果說,先驗概率和後驗概率在形式上是相同的,那麼就可以說二者是概率共軛的關係。

        2. gamma函數:這個函數本質上就是階乘函數在實數上的推廣。對於整數而言,階乘函數:,形式如1×2×3×4×...n-1對於實數而言,不能用上述公式進行計算,階乘函數爲:

        3. 二項分佈:對於結果的取值只有兩種情況,可以認爲這兩種情況就是0-1。其中取值爲0的概率爲p,取值爲1的概率爲1-p。那麼對於n次獨立實驗來說,p.s.只做一次實驗,是伯努利分佈;重複做n次,就是二項分佈。

        4. 多項分佈:把二項分佈擴展到多維的情況,也就是說對結果的取值不是隻有兩種,而是有n多種可能的取值。

       就是將pLSA的基礎上加了層貝葉斯框架,即LDA就是pLSA的貝葉斯版本。這個貝葉斯框架就體現在狄利克雷先驗分佈上。

       在前邊的pLSA模型中,沒用什麼先驗分佈,直接認爲是個隨機過程。這貝葉斯派那幫人簡直不能忍啊,這不科學啊,應該有先驗分佈的啊,不能不按套路啊,所以這幫人就在那兩個骰子參數上加上個先驗分佈,把這個pLSA改造成一個貝葉斯過程。這裏用到的先驗分佈就是狄利克雷分佈。根據前邊說的文檔的生成過程,現在可以把文檔的生成抽象成如下幾個問題:

  • 1)從狄利克雷分佈α中抽樣,生成文檔d的主題分佈θ
  • 2)從主題的多項式分佈θ中抽樣,生成文檔d的第i個詞的主題zi
  • 3)從狄利克雷分佈β中抽樣,生成主題zi對應的詞語分佈φi
  • 4)從詞語的多項式分佈φi中採樣,最終生成詞語wi

 

 

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