從一個生活中的現象提及:咱們在裝機時,不會安裝一款以上的解壓軟件,也不但願被莫名其妙地安裝額外的管家。與此相反,咱們會安裝多款播放器。那麼,這是爲何呢?固然,也能夠思考這樣一個問題,好評的軟件那麼多,硬盤又足夠大,爲何不都裝上?看到第二個問題,思路彷佛清晰了。很簡單,解壓軟件、管家的功能大同小異,且都免費,甚至不須要考慮到底用哪一個,彷佛只要有那麼一個就行了。可是,播放器有單機、網絡之分。即便均爲網絡播放器,仍會搜索到不一樣資源...即便播放器之間看似相同。html
在1996年,還在讀書的Tim C. Hesterberg問斯坦福大學的統計學家Bradley Efron這樣一個問題:「在統計學領域什麼問題最重要?」他滿覺得Efron會回答給予他崇高地位的Bootstrap算法,結果Efron的回答倒是變量選擇。算法
用不一樣的軟件類比不一樣的變量,裝機變成了一個變量選擇的問題,選擇恰到好處的軟件使用戶滿意度達到最大。網絡
1.由多元線性迴歸建模提及dom
咱們考慮這樣的用戶滿意度評價問題:一款軟件的滿意度可由用戶評分(0~5分)和專家評分(0~5分).用戶評分有主觀因素,不一樣用戶對同一軟件的評分通常不一樣。專家評分會系統地考慮產品、技術等層面,更爲客觀,即對同一軟件的評分可認爲是相同的。咱們將用戶評分與專家評分的乘積表示一位用戶對一款軟件的滿意度。乘積能夠綜合用戶體驗與實際價值,又可讓兩者相互制約,更能反映出真實的用戶滿意度。那麼,若是咱們有用戶的整體滿意度以及他們對軟件的評分數據,能不能經過數據估計出每款軟件的專家評分?即能不能經過創建迴歸模型客觀地獲得軟件優劣?機器學習
假設用戶數爲n軟件數爲p.根據上面的主觀與客觀評分假設,咱們用列向量y=(y1,y2,...,yn)T表示每一位用戶的滿意度;矩陣X有n行p列,第i爲用戶i對p款軟件評分爲xi=(xi1,xi2,...,xip);專家評分表示爲β=(β1,β2,...,βn)T.很顯然,滿意度評分問題的模型是y=Xβ+ε,ε表明偏差項。咱們要經過一組包含用戶滿意度-評分的數據估計出β .彷佛理論上能夠得出客觀層面的軟件優劣。學習
2.一個簡單的模擬實驗spa
咱們仍然運用最小二乘法,與上一篇相比,此次是使用多元線性迴歸的最小二乘法。不過道理相同,得到向量β的估計值,每一位用戶評分帶入都會獲得該用戶滿意度估計值,並使所有用戶的滿意度估計值與真實值的偏差平方和達到最小。code
回到第一段的問題一,咱們假設只研究兩款壓縮軟件x1,x2.根據問題一的假設,因爲用戶以爲他們兩者不存在差別,所以對兩款軟件的評分會很是接近。但專家從客觀層面評價兩者仍是有必定的區別的,對兩款軟件的評分是β1=3.5和β2=4.5.那麼用戶滿意度的真實模型爲y=3.5x1+4.5x2+ε.假設有10位用戶,且用戶間的評價存在必定差別,根據本段作出以下表格:htm
用戶 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
x1評分 | 1.7 | 2.0 | 2.3 | 2.5 | 2.7 | 3.3 | 3.8 | 4.3 | 4.6 | 4.9 |
x2評分 | 1.7 | 2.2 | 2.4 | 2.6 | 2.9 | 3.1 | 4.0 | 4.1 | 4.8 | 5.0 |
εi | 0.9 | -0.5 | 0.5 | -0.6 | 0.4 | 2.1 | 1.7 | 0.4 | -1.7 | -1.3 |
yi | 14.50 | 16.40 | 19.35 | 19.85 | 22.90 | 27.60 | 33.00 | 33.90 | 36.00 | 38.35 |
在R語言中,咱們創建多元線性迴歸模型對β1,β2進行估計:blog
x1 <- c(1.7, 2.0, 2.3, 2.5, 2.7, 3.3, 3.8, 4.3, 4.6, 4.9); x2 <- c(1.7, 2.2, 2.4, 2.6, 2.9, 3.1, 4.0, 4.1, 4.8, 5.0); e <- c(0.9, -0.5, 0.5, -0.6, 0.4, 2.1, 1.7, 0.4, -1.7, -1.3); y <- 3.5 * x1 + 4.5 * x2 + e; model <- lm(y ~ x1 + x2) summary(model)
Residuals:
Min 1Q Median 3Q Max
-0.9534 -0.6940 -0.2868 0.4040 2.2507Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.7315 1.1518 1.503 0.1765
x1 7.0096 2.3947 2.927 0.0221 *
x2 0.5953 2.4084 0.247 0.8119
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 1.125 on 7 degrees of freedom
Multiple R-squared: 0.987, Adjusted R-squared: 0.9833
F-statistic: 265.9 on 2 and 7 DF, p-value: 2.501e-07
真實模型爲:y=3.5x1+4.5x2+ε.
最小二乘法迴歸模型爲:y=7.0096x1+0.5953x2+1.7315.
兩者相差如此之懸殊,但模型的調整後迴歸係數(Adjusted R-squared)卻達到了0.9833,模型嚴重失真,但擬合效果還是很好的。固然,咱們的真實模型中沒有引入常數項,若是有,恐怕x2的係數β2會被估計成負數。顯然,以前規定了評分在0~5之間,那麼迴歸結果會更明顯地表現出是虛假的。那麼,爲何會這樣呢?緣由很簡單,數據中存在高度相關的變量(x1,x2的相關性高達0.987),這兩個變量步調如此類似,像兩條平行的向量,也就是說兩者是共線的。通俗一些,因爲兩款軟件太類似了,以致於沒法判斷誰能貢獻出更大的用戶滿意度,兩者10:0開,5:5開,0:10開幾乎無任何差異。
從上面的結果也能夠看出,β1的標準偏差達到了2.3947而β2的達到了2.4084.即便最小二乘法的估計是無偏的,它也再也不有效了。在上篇中咱們說到了最小二乘法是無偏估計中最好的。這也暗示出爲了估計的有效,咱們會在必定程度上犧牲無偏性來換取有效性,採用嶺迴歸、主成份等有偏的方法。
3.多重共線性是廣泛存在的
在統計學或機器學習的一些截面數據的多元迴歸問題中,X爲n×p的二維矩陣,但一般狀況下p»n.這就是高維複雜數據,之因此引入大量的變量就是由於它們一般都有信息,但研究者並不清楚到底多少變量有用。變量多了,變量和變量之間會共線,也很容易出現一個變量被其餘幾個變量線性表述的狀況(一個功能冗雜的軟件被其餘垂直細分但功能專精的軟件代替),這種被代替狀況就是所謂的多重共線性。咱們須要進行變量選擇,不然很容易形成虛假迴歸。
普林斯頓大學統計與金融工程的終身教授,"The Annals of Statistics" 雜誌的主編範劍青教授在一篇論文中作過這樣一個模擬實驗:
隨機生成n=50,Z1,...,Zp~i.i.d.的樣本,分別計算p=1000和p=10000時的Z1與Zj,j≥2的相關係數絕對值中最大值以及分佈(左圖),以及的Z1與其餘5個變量的多重相關性絕對值中的最大值以及分佈(圖右).不難發現,不管1000個變量仍是10000個變量,隨機模擬出的變量幾乎沒有與Z1共線的,即幾乎沒有與Z1高度相關的。即便變量數增長了10倍,出現更高相關性的可能也未增長太多。可是,從隨機模擬出的1000個變量中任選5個非Z1變量進行線性組合,都很容易與Z1高度相關,即產生了多重共線性。當變量數達到了10000時,多重共線性發生的機率更大了,並且相關性也廣泛加強了。
很顯然,不管是1000個變量仍是10000個變量,相對於實際問題,變量數並不大。在隨機模擬實驗下,高維數據的多重共線性都會100%存在,何況,實際問題會這樣的隨機麼?