主成分分析(PCA) 的有關總結1【附:論文入門的小建議】

概述:

  這篇文章是比較基礎、比較適合入門的計算機視覺的有關博客或鏈接,每個鏈接下面有一些說明

  (這些鏈接都是我自己看過的,不過因爲目前水平有限,列出的鏈接都比較基礎,大多是方法的介紹和推理等等...)

  此外,還有一些關於 matlab 和 其他知識 的鏈接,是我在看論文時,遇到了相應的問題,覺得值得收藏或者重看的鏈接,也一併列舉在此


主成分分析(PCA)

機器學習實戰ByMatlab(2):PCA算法
http://blog.jobbole.com/86905/

詳細解釋了PCA的思路、計算過程,給出了代碼和有關說明,該博文更側重於算法流程的解釋


淺談對主成分分析(PCA)算法的理解
https://www.cnblogs.com/liu-jun/archive/2013/03/20/2970132.html
側重於數學方面的公式推導


主成分分析(PCA)原理詳解
http://blog.jobbole.com/109015/
對於概念【數據降維、協方差矩陣】的解釋比較詳細
投影直線的選擇(舉了一個例子來說明選擇時,所用到的原理: 最大方差理論)
尤其值得推薦的是,公式部分的推理和解釋非常詳細,基本每個等號的前後,作者都有說明其理由,而且理由比較易懂



向量、矩陣乘法的幾何意義(一) scalar multiplication VS scalar product
http://blog.csdn.net/tina_lulu_21/article/details/2460833
在PCA方法中,用向量的乘法來表示向量的投影

Matlab基礎入門知識查閱

matlab二維數組訪問和刪除
http://blog.csdn.net/majinlei121/article/details/46580383
matlab在二維數組的訪問時,有些省略維度的寫法,值得注意

matlab中分號、冒號、逗號等常用標點符號的作用
https://jingyan.baidu.com/article/adc8151348c491f723bf7321.html
對於Matlab中,冒號的用法的說明,非常詳細,而且實用
裏面有些特定的寫法,例如,把矩陣的第i列存入另一個矩陣,這些寫法需要特別注意
另外,matlab在表示矩陣時,括號裏面只有一個數,而不像C++裏,二維數組的維度用2箇中括號表示
尤其注意的是,matlab採用列優先,和之前學過的C、C++和Java都不同(究其原因,據說是因爲,matlab最初是用Fortran編寫的)


matlab中fix, floor, ceil, round 函數的使用方法
http://www.ilovematlab.cn/thread-91895-1-1.html
博主的解釋和例子都挺好,而floor和ceil,其實可以直接用數學裏的【向下取整】和【向上取整】這2個概念來解釋,也就是下面的這篇博文提到的:
 向上取整⌈⌉和向下取整⌊⌋符號
http://blog.csdn.net/aerchi/article/details/53031755


Matlab---size,length和numel函數
http://blog.csdn.net/learngis/article/details/4342155
對這3個函數都區別和聯繫,表述得比較清楚


---------------------------------------------------

關於自學matlab的一些建議:

  最初問導師要不要專門看一本書時,老師表示:不用從頭到尾看書,直接看代碼就行了,老師說matlab和C的區別很少很少...


  然而我在分析研究PCA的代碼時,一個.m文件裏,我就有很多很多看不懂的地方,雖然一個個搜清楚了,但是還是覺得這樣太慢了,最後在網上搜了入門matlab的建議,有個建議是看官方文檔,官方文檔200頁左右,不過是全英文。現在已經看了20頁,發現官方文檔的語法說明非常清晰,而且官方文檔所用的英文也沒有我想象中難(大概四級水平 + 百度一些生詞就差不多了)。

  於是決定這幾天看完官方文檔,用它學習matlab,如果時間充分,到時再寫一篇博文,專門總結matlab文檔裏的重點。


關於論文裏涉及到的數學知識:

列舉截至目前,用過的一些知識點:

線代:矩陣的乘法、矩陣的跡(Tr)、矩陣的轉置及其運算性質、特徵方程、特徵值、向量內積、內積的幾何意義是投影、向量正交等有關知識

概率論:協方差、協方差矩陣

---------------------------------------------------


關於初次上手論文的一些建議:

  上手的第一篇,肯定有很多很多看不懂的生詞,建議先把論文所涉及的主要數學領域,的專業術語的中英對照表,找來過一次(但是其實過了一次以後,還是會發現有許多需要查的術語...不過也正常啦,第一次肯定是這樣的)


eg:老師給我們的論文,屬於計算機視覺領域,主要就是涉及線性代數的知識,這2篇中英對照表就很有用:

https://wenku.baidu.com/view/7408addc59f5f61fb7360b4c2e3f5727a5e924ac.html

http://blog.sina.com.cn/s/blog_66bc3abb0100w8cn.html


  看完術語對照再上手論文,有事半功倍的效果。


  過完第一篇起,從第二篇開始,生詞的數量就是銳減狀態(其實第一篇要用的時間是最久的,後面看論文會越來越快,因爲不會的詞越來越少,而且越來越瞭解論文的結構),所以這時就不會需要過多的時間查詞了


  接下來看論文的過程中,就要開始留意論文的結構,一般一篇論文,基本上都會回答下面這些問題:

這篇論文提出的方法,是爲了解決什麼問題?

過去的幾十年裏,這個問題有哪些主流的解決方法?

我們的方法的數學推導(這往往是論文裏最難,但是也最重要的部分,如果在這一部分,因爲一些數學知識被卡住了,那就需要趕緊補數學知識


我們的方法,和之前的主流方法的優劣比較,一般可能會有如下幾種情況:


1. 以前的方法在某些特殊情況下不適用,但是我們的方法都適用


2. 以往的那些主流方法,都有其對應的適用範圍,但我們的方法適用於更多的情況


3. 以往的方法在性能上不太優(例如:在數據集比較大時,錯誤率比較高),但我們的方法在其所有適用範圍下,都有比其他方法更小的錯誤率


等等等等...

以及,光說自己的方法好還不夠,一定要用數據集(訓練樣本、測試樣本等等),做實驗證明,自己的方法確實比之前的主流方法更好


(一般在 結論 conclusion部分,還會再次回答:我們的方法主要是好在哪裏? 並且這裏,還是會簡略地和以往主流方法進行比較,而且這裏就是結論性的話語,沒有很多的例子和證明,只給出結論,也即,在什麼時候,比什麼方法更好,主要好在哪


如果要在我們的研究成果的基礎上,再做一些拓展工作,可以做哪些延伸工作?(future work 部分)



按照導師的建議,在閱讀論文時:

1.   哪些部分可以略讀?

每篇論文都有相當部分的篇幅,是對領域背景知識的介紹,通常出現在論文的引言等前半部分;


在對這個領域有了足夠的瞭解以後,這部分是可以略讀,甚至不讀的。但是因爲我們現在沒什麼基礎,所以這些部分對我們而言,還是很重要的。


2.  怎樣纔算讀懂了一篇論文?什麼時候應該進入下一篇?


  按照導師的回答,我們現在是不可能真正看懂任何一篇論文的,畢竟領域知識有限,而且我們纔剛剛入門。


  但是,當我們可以用中文,複述【論文提出的方法是想做什麼?它是怎麼做的?】,並且【能弄懂論文數學部分的推理證明裏,每個等號,究竟爲什麼成立】,就可以進入下一篇了。


3. references裏列出的論文,是否需要看?


  入門階段先不用,構建這個領域的基本框架就夠了;


  但是,如果選定好自己想要研究的細分方向以後,應該把經典論文後的references裏,列出的所有論文,也要看一次。


  


  


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