線性回歸(10)——多項式回歸

2021-03-02 醫學僧的科研日記
本來以為分享到第9期,線性回歸系列就算完結了,但是最後想了想,線性回歸大家族中的非線性回歸系列在臨床和科研中運用也較為常見,所以最終決定把多項式回歸,分段回歸還有限制性立方樣條也加進來。現實中,自變量和因變量的線性關係其實很少,那麼,如何處理變量之間的非線性關係便成為了一種問題。多項式回歸,分段回歸還有限制性立方樣條則是臨床及科研中較為常見的處理這種情形的方法。1.多項式回歸的理解多項式回歸通過對變量進行升維將變量之間的非線性關係轉化為線性關係。以預測變量的冪形式作為新的預測變量,其實本質上還是屬於線性回歸。這是一種通過增加自變量上的次數,而將數據映射到高維空間的方法,只要我們設定一個自變量上的次數(大於1),就可以相應地獲得數據投影在高次方的空間中的結果。
對於y=wx+b,是個簡單的一元一次方程,我們將其轉化為多項式回歸方程:

不難注意到,多項式變化後數據看起來不太一樣了:首先,數據的特徵(維度)增加了,這正符合我們希望的將數據轉換到高維空間的願望。其次,維度的增加是有一定的規律的。不難發現,如果我們本來的特徵矩陣中只有一個特徵x。假設x=1,2,3,則有:

假設這個被投影到更高空間中的數據在某個角度上看起來已經一條直線了,於是我們可以繼續使用線性回歸來進行擬合,線性回歸是會對每個特徵擬合出權重w的,由此推斷,假設多項式轉化的次數是n,則數據會被轉化成形如:

而擬合出的方程也可以被改寫成:

這個過程看起來非常簡單,只不過是將原始的x上的次方增加,並且為這些次方項都加上權重w,然後增加一列所有次方為0的列作為截距乘的x0。其實,如果把x0~xn改為Z1~Zn,那麼該方程跟普通的線性回歸就完全一樣了:

這是個妥妥的線性方程:並不存在任何高次項,只要擬合結果不錯,大概也沒有人會在意這個幾個特徵的原始數據究竟是怎麼來的,那多項式回歸不就變成一個含有部分共線性的線性方程了麼?在很多資料中,多項式回歸被稱為「線性回歸的一種特殊情況」,這就導致了很多人會產生混淆,多項式回歸究竟是線性模型還是非線性模型呢?這就需要聊到我們對」線性模型「的狹義和廣義定義了。狹義線性模型:自變量上不能有高此項,自變量與標籤之間不能存在非線性關係。

廣義線性模型:只要標籤與模型擬合出的參數之間的關係是線性的,模型就是線性的。這是說,只要生成的一系列之間沒有相乘或者相除的關係,我們就認為模型是線性的。

就多項式回歸本身的性質來說,如果我們考慮狹義線性模型的定義,那它肯定是一種非線性模型沒有錯——否則如何能夠處理非線性數據呢,並且在統計學中我們認為,特徵之間若存在精確相關關係或高度相關關係,線性模型的估計就會被「扭曲「,從而失真或難以估計準確。多項式正是利用線性回歸的這種」扭曲「,為線性模型賦予了處理非線性數據的能力。但如果我們考慮廣義線性模型的定義,多項式回歸就是一種線性模型,畢竟它的係數之間也沒有相乘或者相除。總結一下,多項式回歸通常被認為是非線性模型,但廣義上它是一種特殊的線性模型,它能夠幫助我們處理非線性數據,是線性回歸的一種進化。另外一個需要注意的點是,線性回歸進行多項式變化後被稱為多項式回歸,但這並不代表多項式變化只能夠與線性回歸連用。在現實中,多項式變化瘋狂增加數據維度的同時,也增加了過擬合的可能性,因此多項式變化多與能夠處理過擬合的線性模型如嶺回歸,Lasso等來連用,與在線性回歸上使用的效果是一致的,感興趣的話大家可以自己嘗試一下。2.多項式回歸的R實現
x <- c(4,8,12,25,32,43,58,63,69,79)y <- c(20,33,50,56,42,31,33,46,65,75)plot(x,y)

上圖給我們一個直觀的感受:x和y不是線性關係。我們可以先線性擬合一下,看下效果:
dd <- as.data.frame(x=x,y=y)lm1 <- lm(y~x,data = dd)mean((y - predict(lm1,dd))^2)

library(ggplot2)theme_set(theme_classic())ggplot(dd,aes(x,y))+  geom_point()+  geom_smooth(method = 'lm',formula = y~x,se = F)

均方誤差160.547,而且直線擬合如上圖所示,效果很差,所以我們接下來使用多項式回歸看下效果。多項式的代碼實操(以二次項為例)
lm2 <- lm(y~x+I(x^2),data = dd)summary(lm2)
lm3 <- lm(y~cbind(x,x^2),data = dd)summary(lm3)

lm4 <- lm(y~poly(x,degree = 2,raw = F))summary(lm4)
lm5 <- lm(y~poly(x,degree = 2,raw = T))summary(lm5)


當參數raw設置為False(默認):

表示該模型使用正交矩陣。正交矩陣代表著各個預測變量互相垂直,內積為0,這表示各個變量之間不用考慮交互項。舉個例子,當 x 具有在區間 (0,1) 上的均勻分布時,x 和 x^2 具有大約0.97的相關性,而線性回歸的前提是兩個預測變量之間要互相獨立,不能存在高度相關或精確相關。

當參數raw設置為TURE:

表示該模型等價於lm2和lm3,直接把x^2看成一個獨立的變量放入線性回歸方程中。使用poly()能夠通過產生正交矩陣來防止變量之間的相關性,所以接下來的分析我們接著使用poly()函數。

mean((y - predict(lm4,dd))^2)

ggplot(dd,aes(x,y))+  geom_point()+  geom_smooth(method = 'lm',formula = y~poly(x,degree = 2,raw = F),se = F)

最佳Degree如何確定從上圖得知,二階應該不是最佳的。在多項式中,階數可以是無窮盡的,但是,我們如何知道幾階是最佳的呢?當然,可以通過臨床經驗或者基礎知識來確定。但是很多情況下,我們沒有辦法通過先驗知識來確定合理階數。所以,如何確定最佳階數成了多項式擬合的一個問題。
mse <- c()for (i in 2:9) {  lm <- lm(y~poly(x,i),dd)  mse[i] <- mean((y - predict(lm,dd))^2)}mse <- data.frame(Degree=2:9,MSE=mse[-1])
ggplot(mse,aes(Degree,MSE))+ geom_point(size=3,color='firebrick3')+ geom_line(color='grey50',size=0.7)+ scale_x_continuous(breaks = 2:9)

我們可以看到,當Degree=4的時候模型的MSE都已經趨於穩定了,為了使模型不過於複雜或發生過擬合,則我們認為4是最佳階數。一般的,採用多項式建模確實會較為明顯的提高擬合優度,如前面舉的例子,當直接把x和y擬合成簡單線性回歸時,MSE=161,而當擬合為9階多項式回歸時,MSE接近於0.泰勒公式告訴我們如果一個函數足夠光滑,那麼就可以在函數上某點的一個領域內用一個多項式來對函數無限逼近,而且隨著多項式階數的提高,這種逼近的效果也會越來越好。同理,如果確實有一條光滑的曲線可以對所有數據點都進行毫無偏差的擬合,理論上就可以找到一個多項式對這條曲線進行較為精確的擬合。
pp <- lapply(1:9,function(i){  ggplot(dd,aes(x,y))+    geom_point(size=3,color='#984ea3')+    geom_smooth(method = 'lm',formula = y~poly(x,i),se = F,color='#fdc086')+    ggtitle(paste0('Degree = ',i))+    theme(plot.title = element_text(hjust = 0.5))+    annotate('text',label=paste0('MSE = ',format(mean((y - predict(lm,dd))^2),digits = 3)),             x = 30,y=max(dd$y))})
cowplot::plot_grid(plotlist = pp,nrow = 3)

可以清楚的看到當3階時,效果還是一般,但從4階後,對於數據的擬合性就明顯優於3次項了,當Degree=8 時,曲線呈現出明顯的震蕩,這說明模型出現了過擬合現象。

降低Degree (如上推薦,D>4可能會導致over-fitting);

增加訓練樣本;

添加正則化項

Fitting Polynomial Regression in R | Datascience+

【機器學習】多項式回歸

菜菜的Sklearn

多項式回歸- 維基百科

相關焦點

  • 機器學習的回歸是什麼
    通俗理解:越來越接近期望值的過程,回歸於事物本來的面目主要用於預測數值型數據,典型的回歸例子:數據擬合曲線二、什麼是線性回歸(Linear Regression)線性回歸假設輸出變量是若干輸出變量的線性組合,並根據這一關係求解線性組合中的最優係數
  • spss線性回歸 回歸方程 - CSDN
    ,用到的分析方法就是線性回歸,決定猛學習一下,再來評判視頻裡的結論。線性回歸,首先應用於定距變量之間,本質上是分析一個因變量和一組自變量之間的相關關係,既可以解釋,也可以做預測。就是一個用線性回歸解釋相關性的問題。
  • Python數據分析|線性回歸
    Python數據分析學習筆記,今天分享下利用Python對業務進行數據預處理,並利用線性回歸進行數據預測。④先以我們後續需要用來做線性回歸的列「內容閱讀量」為標準,將不含該值的數據行去除:調用dropna函數,並執行info函數看數據情況。
  • 常見回歸及回歸評價
    2.多項式回歸及常見回歸方程的書寫當然,並非所有的數據都是線性模型能夠漂亮的擬合的,我們有時還要需要多項式回歸R中構建高次模型的方法基本上和線性模型方法差別不大。構建多項式回歸模型linemodel4 <- lm(formula = 總收入 ~ I(床位數^2), data = hospital)summary(linemodel4)# Call:# lm(formula = 總收入 ~ I(床位數^2), data = hospital)# # Residuals:#      Min       1Q   Median
  • 關於「時間序列回歸」,這些你必須知道的事!
    通過對線性模型的訓練,可以較好的得到模型中各個變量之間的關係。 常用的線性模型有:線性回歸、多項式回歸、嶺回歸、套索回歸等等,下面為大家簡單介紹。 線性回歸(Linear Regression) 線性回歸是最為人熟知的建模技術,是人們學習如何做預測時的首選方法之一。在此技術中,因變量是連續的,自變量可以是連續的也可以是離散的。回歸的本質是線性的。
  • 如何用線性回歸模型做數據分析?
    編輯導語:在日常工作中,很多時候都會用到數據分析的方法,線性回歸模型看起來非常簡單,但實際上它的十分重要;本文作者分享了關於如何用線性回歸模型做數據分析的方法,我們一起來學習一下。一、什麼是線性回歸線性回歸是利用線性的方法,模擬因變量與一個或多個自變量之間的關係;對於模型而言,自變量是輸入值,因變量是模型基於自變量的輸出值,適用於x和y滿足線性關係的數據類型的應用場景。
  • eviews 線性回歸模型 - CSDN
    分享經典書籍: A Modern Approach to Regression with R.pdf  連結: https://pan.baidu.com/s/14NJt7CrOpUUe2hYyrJn_rg  提取碼: 7fv6  多元線性回歸
  • 原理+代碼|Python實戰多元線性回歸模型
    其中多元共線性這個問題將貫穿所有的機器學習模型,所以本文會「將原理知識穿插於代碼段中」,爭取以不一樣的視角來敘述和講解「如何更好的構建和優化多元線性回歸模型」。多重線性回歸模型的主要假設之一是我們的預測變量(自變量)彼此不相關。我們希望預測變量(自變量)與反應變量(因變量)相關,而不是彼此之間具有相關性。
  • 超詳細SPSS操作:多重線性回歸(完整版)
    針對這種情況,我們可以使用多重線性回歸分析,但需要先滿足以下8項假設:那麼,進行多重線性回歸分析時,如何考慮和處理這8項假設呢?在運行多重線性回歸時,我們的新增變量(SDR_1)就是學生化刪除殘差。在運行多重線性回歸時,我們的新增變量(LEV_1)就是槓桿值。
  • spss多元線性回歸模型專題及常見問題 - CSDN
    多元線性回歸,主要是研究一個因變量與多個自變量之間的相關關係,跟一元回歸原理差不多,區別在於影響因素(自變量)更多些而已,例如:一元線性回歸方程 為:    毫無疑問,多元線性回歸方程應該為:上圖中的 x1,  x2, xp分別代表「自變量」Xp截止,代表有P個自變量,如果有「N組樣本,那麼這個多元線性回歸,將會組成一個矩陣
  • t值 線性回歸專題及常見問題 - CSDN
    線性回歸 用線性回歸找到最佳擬合直線回歸的目的是預測數值型數據,根據輸入寫出一個目標值的計算公式,這個公式就是回歸方程(regression equation),變量前的係數(比如一元一次方程)稱為回歸係數(regression weights)。
  • 機器學習筆記——線性回歸及其兩種常用的優化方法
    這個式子就可以被稱作回歸方程,其中0.4和0.3也被稱作回歸係數,一般來說回歸係數都是未知的,我們通過輸入數據求得回歸係數的過程就是回歸,得到回歸係數之後,就可以通過公式得到最後的預測值。這裡給出的例子屬於線性回歸,而回歸還有另一種較為複雜的形式——非線性回歸,本文只介紹線性回歸的相關知識。
  • 的方法 線性回歸方程檢驗專題及常見問題 - CSDN
    對線性回歸和結構方程模型進行簡單的刨析比較,拋開統計學方面的理論,儘量說得通俗易懂些。線性回歸(Regression)與結構方程模型(Structural equation modeling)是用來驗證變量間的因果關係時,最經常使用的方法。
  • 要注意啊,線性回歸模型也有失效的時候.
    通過之前的帖子我們已經知道,在建立線性回歸模型之後,我們需要對模型進行評估,需要首先會檢查線性回歸係數是否有統計學意義,通常來說就是檢查P值是否小於0.05,接下來我們會去評估模型擬合情況,用交叉驗證的方法檢查R^2或者RMSE的大小。
  • eviews線性回歸模型專題及常見問題 - CSDN
    分享經典書籍: A Modern Approach to Regression with R.pdf  連結: https://pan.baidu.com/s/14NJt7CrOpUUe2hYyrJn_rg  提取碼: 7fv6  多元線性回歸
  • 如何用EXCEL線性回歸分析法快速做數據分析預測
    回歸分析法,即二元一次線性回歸分析預測法先以一個小故事開始本文的介紹。十三多年前,筆者就職於深圳F集團時,曾就做年度庫存預測報告,與筆者新入職一臺籍高管Edwin分別按不同的方法模擬預測下一個年度公司總存貨庫存。
  • spss 方法 線性回歸專題及常見問題 - CSDN
    以照護需求得分為因變量,以可能為影響失能老年人照護需求得分的因素為自變量,採用多元線性回歸篩選出影響失能老年人選擇照護服務需求的因素。本例納入的自變量有年齡、經濟來源、健康自評、失能程度、慢性病患病種類、慢性疼痛、跌倒經歷,賦值方式如表1:
  • - 簡單線性回歸分析
    這個問題我們可以通過簡單線性回歸分析來解決。隨後,高爾頓對試驗數據進行了深入的分析,發現了一個很有趣的現象——回歸效應。當父親高於平均身高時,他們的兒子身高比他更高的概率要小於比他更矮的概率;當父親矮於平均身高時,他們的兒子身高比他更矮的概率要小於比他更高的概率。它反映了一個規律,即這兩種身高父親的兒子的身高,有向他們父輩的平均身高回歸的趨勢。這就是所謂的回歸效應。
  • 正態分布 線性回歸 - CSDN
    如果這篇文章還不夠倉,我們會繼續引入多元線性回歸~也就是說,坐了三節數學的車,你終於可以緩一緩,繼續坐統計的車了Ψ( ̄∀ ̄)Ψ提供之前的筆記:回歸分析|筆記整理(1)——引入,一元線性回歸(上)回歸分析|筆記整理(2)——一元線性回歸(下)回歸分析|筆記整理(3)——多元正態分布理論(上)回歸分析|筆記整理(4)——多元正態分布理論(中)我們開始本節的內容。
  • 線性變換(二)
    既然矩陣是我們研究線性變換的工具,我們自然希望替每個線性變換找到其形式最簡單的表示矩陣——當然,這實際上需要尋找對應的基。這也恰恰是我們在《線性變換(一)》中首先討論不變子空間的原因。毫無疑問,對角化可以讓我們把一個線性變換看得清清楚楚。