作者rauf6620 (亂入)
看板MATLAB
標題Re: [問題] 無法將data標準化後執行PCA
時間Thu Nov 26 15:16:15 2009
感謝您的建議
這裡PCA的確是主成分分析沒錯
而PCA的資料前處理的確是為去除中心軌道,所以執行centering(中心化)
也就是只扣除平均值
不過我所看到的國外paper"幾乎"都一致提到,需要將資料標準化
我也曾單純只想將資料中心化,然後執行PCA
就算該行所有的值都是0,也不會產生分母為0的問題
但作者的操作過程是這樣寫
心想沒道理不能照著做
但做了還真的產生問題
另外..您後面PCA code的部份能多解釋一點嗎
感謝賜教
謝謝
※ 引述《wudollar (~每天一ㄍ心希望~)》之銘言:
: ※ 引述《rauf6620 (亂入)》之銘言:
: : 若A為一M*N矩陣
: : 假設為 5 4 1 0 2 0
: : 5 3 0 0 1 0
: : 5 4 2 0 3 0
: : 5 3 1 0 4 0
: : -------------
: : mean
: : std
: : 執行PCA前,為去除單位,所以皆會將資料先予以標準化(對行執行)
: 這裡我有問題~!!
: 應該是說:我不知道,或者我不懂...
: PCA是所謂的Principal Component Analysis? 是嘛?
: 如果不是,請略過我以下所有的鬼話 @@b
: PCA 似乎在數學定義上面,沒有需要在處理PCA前需要去除單位,
: 或者正規化(normalization)吧?
: 僅僅是因為想看變化(anomaly)所以去平均值(de-mean),
: 換句話說是看變異數(variance)分佈以及大小吧?(使用SVD 或者 Eigen..)
: 所以似乎沒有在之前需要之前就需要正規化處理吧?
: 另,如果是真要有正規化處理,那是當妳生成PC(principal component)
: 以及Pattern(e.g. eigenvectors),在需要量化強度,
: 以及給予PC單位時所做的簡單換算吧?
: PC = PC*std(Pattern), Pattern = Pattern/std(Pattern)
: Matrix = PC * Pattern; when (PC = Matrix * Pattern)
: ------------------------------------------------------------------------------
: 這樣子的話,『我自以為』妳的問題似乎就沒有了,不是嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.17.12.231
1F:推 wudollar:已回信,請查收,另我找出了PCA我這領域的聖經..... 11/27 10:03
2F:→ wudollar:Preisendorfer & Mobley(1988), Principal Component Ana 11/27 10:05
3F:→ wudollar:lysis in Meteorology and Oceanography 11/27 10:06