≪統計學習精要(The Elements of Statistical Learning)≫課堂筆記(二)
繼續一周一次的課堂筆記 :D 昨天去晚了站著聽講,感覺好好啊,注意各種集中。想想整個教室裏麵就是我和老師是站著的,自豪感油然而生。
第二次課講的東西依舊比較簡單,是這本書第二章的前半部分。作為一個好久之前已經預習過的孩子,我表示萬分的得意(最小二乘法難道不是三四年前就學過的?話說以後我再麵人的時候,就讓他推導最小二乘估計量,嘻嘻...考驗一下基本功)。
------------原諒我的廢話,筆記開始------------
簡單預測方法:最小二乘法(以下沿用計量經濟學的習慣,簡稱OLS)
OLS實在是太普遍了,我就不贅述細節了。OLS的思想就是,基於已有的樣本信息,找出一條直線,讓預測值與真實值之間的殘差平方和最小,即∑n(y−y^)2最小。其中,y為真實的樣本觀測值(已有樣本),而y^是OLS的預測值。用圖來講的話,X為一維向量的時候,就是用一條直線來最好的擬合各個樣本點。
這裏就很明顯了,首先OLS假設是一條直線。那麼就是一個參數模型,即我們需要假設一個未知的參數β,構成一個線性方程y=βx,然後再去估計β的值。然後呢,直線會有很多條,所以我們要找到一個目標——比如這裏,就是最小化殘差平方和RSS。換言之,我們尋找的就是最優的向量β^使得RSS最小。
解這個最優化問題很簡單,我就不重複了。最後解得的最優估計量為:
β^=(X′X)−1X′Y
這裏寫成矩陣形式,比較簡單。X為一維向量的時候,可以改寫成∑形式,我個人不大喜歡,就不展開了。
簡單預測方法:K近鄰(k nearest neighbor)
K近鄰的思想就更簡單了。不就是想預測某個點x對應的y麼?那麼就把它的鄰居都找來,平均一下好了。不是有句話叫做什麼“一個人的收入就大概是他的圈子收入的平均值麼?”
所以 y^=mean(yi|xi∈Nk(x)),這裏Nk(x)表示點x的K近鄰。至於這個近鄰怎麼定義嘛,嘻嘻,很簡單啊,歐幾裏德距離就可以嘛~
評語:吳老師對於這兩個算法的直觀評價是,OLS呢就是勤奮的學生,預測前先做足功課,預測的時候隻要知道X,劈裏啪啦一下子y就估計出來了。然而knn則是一個臨時抱佛腳的學生,預測的時候開始找自己的k近鄰,然後把它們平均一下就好了。哈哈,大意如此,大家可以體會一下這種精神。我個人感覺呢,OLS屬於以不變應萬變的,而knn則是見機行事的。
統計決策理論(Statistical Decision Theory)
說了這麼多,這個模型好不好到底怎麼判讀呢?凡事總得有個標準呢。這一係列的標準或者說準則,就是統計決策理論了。
首先呢,大致我們需要對X,Y有個分布上的描述:用P(X,Y)記作向量(X,Y)的聯合分布,然後p(X,Y)為其對應的密度函數。之後為了估計Y,我們會有很多很多模型,即各種f(X),而這些f(X)組成的函數空間記為F。
然後我們定義一個損失函數,比如在均方誤差意義下,L(Y,f(X)=(Y−f(X))2,這樣就有了一個選擇的標準——使得損失函數的期望最小:EPE(f)=E(Y−f(X))2=∫[y−f(x)]2P(dx,dy)。接下來就是,到底在F空間裏麵,哪一個f最符合這個標準呢?
首先自然是把聯合分布變為條件分布。這個idea顯而易見——我們總是知道X的(原諒我吧,全中文確實比較難寫,偶爾穿插英文一下 ^_^)。所以conditional on X,我們就有了
EPE(f)=∫[y−f(x)]2P(dx,dy)=∫x{∫y[y−f(x)]2p(y|x)dy}p(x)dx
去解最小化問題,最終我們得到的就是在每個點X上, f(X)=E(y|X=x)。通俗的講就是,對於每個點預測,把和它X向量取值一樣的樣本點都找出來,然後取他們的平均值就可以了。很直觀的不是麼?這裏也有點最大似然的想法呢——比如預測一個男孩的身高,最保險的就是把和它同齡的其他男孩的身高平均一下,不是麼?
但是說來簡單啊,很多時候P(X,Y)都是未知的,根本無法計算嘛。所以隻能近似:
- 回憶一下knn,就是放鬆了兩點:1) xk取的是x的近鄰,而不一定是x; 2)用樣本平均數代替了期望
- 而OLS呢,也是最後在E(β)=E[(X′X)−1X′Y]這裏,用樣本平均代替了期望。
近似嘛,自然有好的近似和不好的近似。很顯然的,當樣本比較大、尤其是比較密集的時候,x的鄰居應該都離x很近,所以這個誤差可以減小;此外,當樣本很大的時候,根據大數定律,平均數收斂於期望。所以,這兩種算法應該說,都在大樣本下會有更好的效果。
模型選擇、訓練誤差與測試誤差、過擬合
這裏講的比較簡單。模型選擇就是F的選擇,即選擇哪一類函數空間F,然後再其中找/估計最優的f(X)。很顯然,如果隻有若幹個有限的樣本,我們總能把各個樣本用直線或者曲線依次連起來,這樣的話就有無數個f可以作為此問題的解。顯然這不是我們想要的——這樣的稱為“不設定問題”,即可能無解、可能多個解、還可能因為一點點X的變化導致整個解的解答變化。因此我們需要先設定一個解的類別。
訓練誤差:預測模型估計值與訓練數據集之間的誤差。RSS就是一個典型的訓練誤差組成的殘差平方和。
測試誤差:用訓練集以外的測試數據集帶來的誤差,顯然我們更關心的是測試誤差——訓練總能訓練的很好,讓損失函數期望最小,然而測試集則不一定這樣。一般說來,測試誤差>訓練誤差。
過擬合:選擇一個很複雜的f,使得訓練誤差很小,而實際的測試誤差不一定小。最極端的就是剛才說的,把訓練集的點一個個依次連起來...訓練誤差肯定是0是不是?
我們關心的自然是怎麼降低測試誤差。顯然這東西會跟訓練誤差有關,但是它還跟f的複雜度有關。最最棘手的就是,f的複雜度是一個難以衡量的問題。早期的研究有用自由度來衡量這個複雜度的,但是也不是那麼的靠譜...後麵的有人鼓搗出來PAC(使得近似正確的概率最大——吳老師原話),還有一個VC來衡量複雜度——但幾乎實踐中無法計算,沒幾個計算出來的。嗯,水很深哇。
最後更新:2017-04-03 05:46:49