本文最先發表在本人博客:http://www.gotoli.us/?p=1684
大清牛人曰:ML派坐落美利堅合眾山中,百年來武學奇才輩出,隱然成江湖第一大名門正派,門內有三套入門武功,曰:圖模型加圈,神經網加層,優化目標加正則。有童謠為證:熟練ML入門功,不會作文也會謅。今天就介紹一個PCA加先驗的工作。
主成分分析 (PCA)
PCA是常用的數據降唯模型。PCA處理的數據中心點為零點 (y_1+...,y_n)/n,如果數據中心點不是零點,需要預處理數據y_i = y_i- (y_1+...,y_n)/n使得中心點為零點。PCA降唯的思路:1)找到m個相互正交并且使得投影方差最大的方向(專業一點的說法是找到一組使得方差最大的基),2)將k維的數據投影到這m個方向上,得到m維數據。因為m會小于k,數據的維度下降了。這里最難理解的部分就是“使得投影方差最大”了。
什么是“使得投影方差最大”?數據y在c方向的投影(標投影)為yTc,其中方向為單位向量||c||2=1。一堆數據y_1,y_2,....,y_n在c方向的投影為一堆數:y_1Tc,y_2Tc,....,y_n^Tc。“使得投影方差最大”是使得這堆數的方差最大。當然啦,PCA是找到m個方向,因此“使得投影方差最大”應該是使得m堆數的方差之和最大。
為什么要“使得投影方差最大”呢?我們看下圖,如果要把圖中的數據壓縮到一維,我們是選擇右上方向還是左上方向呢?我們當然應該選右上方向! 因為右上方向上數據點散得比較開,壓縮之后不同的數據點也好區分;而左上方向上數據點比較密集,不同數據壓縮之后變相同的概率比較大。在中心點為零點的情況下,“散得開不開”可以用這個方向上的投影方差刻畫。方差比較大,“散得比較開”;方差比較少,“擠得密集”。因此我們需要“使得投影方差最大”。同時,這也是為什么PCA需要預處理數據使得中心點為零點。
讓Y表示預處理之后的數據,其中每一行代表一條k維度的數據;C表示PCA要找的方向,其中每一列代表一個方向。數據在不同方向的投影方差和等于||YC||_F2,也就是等于Tr(CT Y^T YC)。因此PCA需要求解如下優化問題。
上面的優化問題利用了Y^T Y。中心點為零點的情況下,Y^T Y為不同變量的協方差矩陣。PCA模型也可以基于協方差矩陣來解釋,這里就不介紹了,有興趣的同學可以看參考文獻一。求解上面的優化問題蠻簡單的,因為Y^T Y前m個特征向量就是答案!!!一旦求得C,立得壓縮之后的數據為YC。
海量多標記分類
介紹完PCA的基本知識,再來介紹一個PCA加先驗的工作。這個工作都應用在海量多標記分類任務上。在多標記分類問題,一個實例同時擁有多個類別(標記)。比如一篇關注全球變暖的新聞報道既屬于科學類別,也屬于環境類別。有些任務中標記數量特別巨大,我們稱之為海量多標記分類。比如多標記分類可以應用于標簽推薦任務中,標簽數量成千上萬。用Y表示已經去中心化之后的標記矩陣,其中每一行代表一個實例的標記情況;用X表示實例,其中每一行代表一個實例的特征。
我們自然會想著把標記向量降維到一個低維向量,然后學習一個從實例到低維向量的模型,最后從低維向量還原出標記來(媽蛋!!什么叫自然!!!09年才有人這么做好吧!!!)。作為最常用的數據降維方法,自然有人將PCA應用在這個問題上。但只用PCA是有缺陷的。PCA只會考慮怎么有效地將標記向量壓縮成低維向量,但低維向量是否適合學習就不管了。壓縮得到的低維向量和實例特征有可能沒有一點相關性,導致很難學習到一個從實例到低維向量的模型。這時候我們就應該往PCA模型加點“容易學習”的先驗了。
Chen et al (2012) 假設實例到低維向量的模型是線性模型W,這時“容易學習”的先驗知識可以表示為
根據最小二乘法,我們求得W
將這個“容易學習”的先驗加入PCA,我們能夠得到
求解上面的優化問題就可以將“容易學習”的先驗加入PCA,使之適用于海量多標記分類任務。
參考文獻
http://www.cse.psu.edu/~rtc12/CSE586Spring2010/lectures/pcaLectureShort_6pp.pdf
Chen, Yao-Nan, and Hsuan-Tien Lin. "Feature-aware label space dimension reduction for multi-label classification." Advances in Neural Information Processing Systems. 2012.