線性回歸原理小結

線性回歸可以說是機器學習中最基本的問題類型了,這里就對線性回歸的原理和算法做一個小結。

一、線性回歸的模型函數和損失函數

    線性回歸遇到的問題一般是這樣的。我們有m個樣本,每個樣本對應于n維特征和一個結果輸出,如下:

    \((x_1^{(0)}, x_2^{(0)}, ...x_n^{(0)}, y_0),?(x_1^{(1)}, x_2^{(1)}, ...x_n^{(1)},y_1), ...?(x_1^{(m)}, x_2^{(m)}, ...x_n^{(m)}, y_m)\)

    我們的問題是,對于一個新的$(x_1^{(x)}, x_2^{(x)}, ...x_n^{(x)} \(, 他所對應的\)y_x$是多少呢? 如果這個問題里面的y是連續的,則是一個回歸問題,否則是一個分類問題。

    對于n維特征的樣本數據,如果我們決定使用線性回歸,那么對應的模型是這樣的:

    \(h_\theta(x_1, x_2, ...x_n) = \theta_0 +?\theta_{1}x_1 + ... +?\theta_{n}x_{n}\), 其中$\theta_i $ (i = 0,1,2... n)為模型參數,$x_i $ (i = 0,1,2... n)為每個樣本的n個特征值。這個表示可以簡化,我們增加一個特征$x_0 = 1 $ ,這樣\(h_\theta(x_0, x_1, ...x_n) = \sum\limits_{i=0}^{n}\theta_{i}x_{i}\)

    進一步用矩陣形式表達更加簡潔如下:

    \(h_\mathbf{\theta}(\mathbf{X}) = \mathbf{X\theta}\)

    其中, 假設函數\(h_\mathbf{\theta}(\mathbf{X})\)為mx1的向量,\(\mathbf{\theta}\)為nx1的向量,里面有n個代數法的模型參數。\(\mathbf{X}\)為mxn維的矩陣。m代表樣本的個數,n代表樣本的特征數。

    得到了模型,我們需要求出需要的損失函數,一般線性回歸我們用均方誤差作為損失函數。損失函數的代數法表示如下:

    \(J(\theta_0, \theta_1..., \theta_n) = \sum\limits_{i=0}^{m}(h_\theta(x_0, x_1, ...x_n) - y_i)^2\)

    進一步用矩陣形式表達損失函數:

    \(J(\mathbf\theta) = \frac{1}{2}(\mathbf{X\theta} -?\mathbf{Y})^T(\mathbf{X\theta} -?\mathbf{Y})\)

    由于矩陣法表達比較的簡潔,后面我們將統一采用矩陣方式表達模型函數和損失函數。

二、線性回歸的算法

    對于線性回歸的損失函數\(J(\mathbf\theta) = \frac{1}{2}(\mathbf{X\theta} -?\mathbf{Y})^T(\mathbf{X\theta} -?\mathbf{Y})\),我們常用的有兩種方法來求損失函數最小化時候的\(\mathbf{\theta}\)參數:一種是梯度下降法,一種是最小二乘法。由于已經在其它篇中單獨介紹了梯度下降法和最小二乘法,可以點鏈接到對應的文章鏈接去閱讀。

    如果采用梯度下降法,則\(\mathbf{\theta}\)的迭代公式是這樣的:

    \(\mathbf\theta=?\mathbf\theta -?\alpha\mathbf{X}^T(\mathbf{X\theta} -?\mathbf{Y})\)

    通過若干次迭代后,我們可以得到最終的\(\mathbf{\theta}\)的結果

    如果采用最小二乘法,則\(\mathbf{\theta}\)的結果公式如下:

    $?\mathbf{\theta} = (\mathbf{X^{T}X})^{-1}\mathbf{X^{T}Y} $

?

    當然線性回歸,還有其他的常用算法,比如牛頓法和擬牛頓法,這里不詳細描述。

三、線性回歸的推廣:多項式回歸

    回到我們開始的線性模型,\(h_\theta(x_1, x_2, ...x_n) = \theta_0 +?\theta_{1}x_1 + ... +?\theta_{n}x_{n}\), 如果這里不僅僅是x的一次方,比如增加二次方,那么模型就變成了多項式回歸。這里寫一個只有兩個特征的p次方多項式回歸的模型:

    \(h_\theta(x_1, x_2) = \theta_0 +?\theta_{1}x_1 + \theta_{2}x_{2} + \theta_{3}x_1^{2} +?\theta_{4}x_2^{2} +?\theta_{5}x_{1}x_2\)

    我們令\(x_0 = 1, x_1 = x_1, x_2 = x_2, x_3 =x_1^{2}, x_4 =?x_2^{2}, x_5 =??x_{1}x_2\) ,這樣我們就得到了下式:

    \(h_\theta(x_1, x_2) = \theta_0 +?\theta_{1}x_1 + \theta_{2}x_{2} + \theta_{3}x_3 +?\theta_{4}x_4 +?\theta_{5}x_5\)

    可以發現,我們又重新回到了線性回歸,這是一個五元線性回歸,可以用線性回歸的方法來完成算法。對于每個二元樣本特征\((x_1,x_2)\),我們得到一個五元樣本特征\((1, x_1, x_2, x_{1}^2, x_{2}^2, x_{1}x_2)\),通過這個改進的五元樣本特征,我們重新把不是線性回歸的函數變回線性回歸。

四、線性回歸的推廣:廣義線性回歸

    在上一節的線性回歸的推廣中,我們對樣本特征端做了推廣,這里我們對于特征y做推廣。比如我們的輸出\(\mathbf{Y}\)不滿足和\(\mathbf{X}\)的線性關系,但是\(ln\mathbf{Y}\)\(\mathbf{X}\)滿足線性關系,模型函數如下:

    \(ln\mathbf{Y} = \mathbf{X\theta}\)

    這樣對與每個樣本的輸入y,我們用 lny去對應, 從而仍然可以用線性回歸的算法去處理這個問題。我們把 Iny一般化,假設這個函數是單調可微函數\(\mathbf{g}(.)\),則一般化的廣義線性回歸形式是:

    \(\mathbf{g}(\mathbf{Y}) =?\mathbf{X\theta}\) 或者?\(\mathbf{Y} =?\mathbf{g^{-1}}(\mathbf{X\theta})\)?

    這個函數\(\mathbf{g}(.)\)我們通常稱為聯系函數。

五、線性回歸的正則化

    為了防止模型的過擬合,我們在建立線性模型的時候經常需要加入正則化項。一般有L1正則化和L2正則化。

?

    線性回歸的L1正則化通常稱為Lasso回歸,它和一般線性回歸的區別是在損失函數上增加了一個L1正則化的項,L1正則化的項有一個常數系數\(\alpha\)來調節損失函數的均方差項和正則化項的權重,具體Lasso回歸的損失函數表達式如下:  

    \(J(\mathbf\theta) = \frac{1}{2}(\mathbf{X\theta} -?\mathbf{Y})^T(\mathbf{X\theta} -?\mathbf{Y}) + \alpha||\theta||_1\)

    其中n為樣本個數,\(\alpha\)為常數系數,需要進行調優。\(||\theta||_1\)為L1范數。

?    Lasso回歸可以使得一些特征的系數變小,甚至還是一些絕對值較小的系數直接變為0。增強模型的泛化能力。

?    Lasso回歸的求解辦法一般有坐標軸下降法(coordinate descent)和最小角回歸法( Least Angle Regression),由于它們比較復雜,在我的這篇文章單獨講述:?線程回歸的正則化-Lasso回歸小結

?

    線性回歸的L2正則化通常稱為Ridge回歸,它和一般線性回歸的區別是在損失函數上增加了一個L2正則化的項,和Lasso回歸的區別是Ridge回歸的正則化項是L2范數,而Lasso回歸的正則化項是L1范數。具體Ridge回歸的損失函數表達式如下:

    \(J(\mathbf\theta) = \frac{1}{2}(\mathbf{X\theta} -?\mathbf{Y})^T(\mathbf{X\theta} -?\mathbf{Y}) + \frac{1}{2}\alpha||\theta||_2^2\)

    其中\(\alpha\)為常數系數,需要進行調優。\(||\theta||_2\)為L2范數。

    Ridge回歸在不拋棄任何一個特征的情況下,縮小了回歸系數,使得模型相對而言比較的穩定,但和Lasso回歸比,這會使得模型的特征留的特別多,模型解釋性差。

?    ?Ridge回歸的求解比較簡單,一般用最小二乘法。這里給出用最小二乘法的矩陣推導形式,和普通線性回歸類似。

    令\(J(\mathbf\theta)\)的導數為0,得到下式:

    \(\mathbf{X^T(X\theta - Y) + \alpha\theta} = 0\)

    整理即可得到最后的\(\theta\)的結果:

    \(\mathbf{\theta = (X^TX + \alpha E)^{-1}X^TY}\)

?    其中E為單位矩陣。

 

    除了上面這兩種常見的線性回歸正則化,還有一些其他的線性回歸正則化算法,區別主要就在于正則化項的不同,和損失函數的優化方式不同,這里就不累述了。

(歡迎轉載,轉載請注明出處。歡迎溝通交流: 微信:nickchen121)

轉載于:https://www.cnblogs.com/nickchen121/p/11214779.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386348.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386348.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386348.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

騰訊,字節等大廠面試真題匯總,進階學習資料!

前言 找工作還是需要大家不要緊張,有我們干這一行的接觸人本來就不多 難免看到面試官會緊張,主要是因為怕面試官問的問題到不上來,那時候不要著急 ,答不上了的千萬不然胡扯一些,直接就給面試官說這塊我還沒接觸到&…

【題解】魚塘釣魚

題目描述 有N個魚塘排成一排(N<100),每個魚塘中有一定數量的魚,例如:N5時,如下表: 即:在第1個魚塘中釣魚第1分鐘內可釣到10條魚,第2分鐘內只能釣到8條魚&…

騰訊,字節,阿里,小米,京東大廠Offer拿到手軟!分享一點面試小經驗

(一)簡介 Handler機制是一套Android消息傳遞機制。在Android開發多線程的應用場景中,將工作線程中需更新UI的操作信息 傳遞到 UI主線程,從而實現 工作線程對UI的更新處理,最終實現異步消息的處理。 在Android開發中&a…

騰訊,字節,阿里,小米,京東大廠Offer拿到手軟!絕對干貨

開頭 又到年底了,每到這個時候,我們都會慢慢反思,這一年都做了什么?有什么進步?年初的計劃都實現了嗎?明年年初有跳槽的底氣了嗎?況且今年的互聯網環境太差,需要自己有足夠的知識儲…

request對象與response對象

一.request對象 1.通過request對象可以獲得客戶端輸入的信息。request對象包含了從客戶端傳來的請求信息。 請求的參數是一個請求的組成部分,它們被作為字符串從客戶端傳送到JSP/Servlet容器中,并被用于初始化request對象。 2.request對象是javax.Servle…

騰訊,字節,阿里,小米,京東大廠Offer拿到手軟!講的明明白白!

緣起 隨著Android開發行業逐漸飽和,對Android開發者的面試要求也越來越高,是否掌握底層源碼,是面試官衡量一名Android開發者的重要依據。有沒有讀過源碼也可以很大程度上判斷你這個人的學習能力和思維方式。無論你開發經驗幾年,面…

HTML div 滾動條樣式設計

::-webkit-scrollbar-track-piece{ background-color:#fff;/*滾動條的背景顏色*/ -webkit-border-radius:0;/*滾動條的圓角寬度*/ } ::-webkit-scrollbar{ width:8px;/*滾動條的寬度*/ height:8px;/*滾動條的高度*/ } ::-webkit-scrollbar-thumb:vertical{/*垂直滾動條的樣式*/…

膜拜大佬!5年經驗Android程序員面試27天,高級面試題+解析

前言 網上關于啟動優化的文章多不勝數,內容千篇一律,大都是列舉一些耗時操作,采用異步加載、懶加載等。 而在面試過程中,關于啟動優化的問題,如果只是很表面地回答耗時操作應該放在子線程,顯然太過于普通…

膜拜大佬!不同層級的Android開發者的不同行為,社招面試心得

都說Android最近行情不好,很多人都遇到瓶頸或放棄或轉行。其實這種情況17年18年也是如此,相對比之下,個人認為今年比去年好多了,Android接下來將會走向復蘇的春天。 自從Google開始推出AMP項目已經有一年了。除此之外,…

zookeeper的四種類型的節點

znode創建類型(CreateMode),有以下四種: PERSISTENT 持久化節點PERSISTENT_SEQUENTIAL 順序自動編號持久化節點,這種節點會根據當前已存在的節點數自動加 1EPHEMERAL 臨時節點, 客戶端session超時這類節點…

膜拜大牛!Android開發最佳實踐手冊全網獨一份,終獲offer

前言 首先介紹一下自己,計算機水本,考研與我無緣。之前在帝都某公司算法部實習,公司算大公司吧,然而個人愛好偏開發,大二的時候寫個一個app,主要是用各種框架。 學習路徑:如何循序漸進、階段性…

英語每日一句

從今天開始學英語了:還蠻重要的。 It s not what I ask for.這不是我要的那樣。 你能寫出,你第一時間想到的一句英語嗎? 轉載于:https://www.cnblogs.com/igouz/archive/2008/11/28/1343014.html

膜拜大牛!HTTPS面試常問全解析,吊打面試官系列!

寫在前面 1月初失業,找了近2個多月的工作了,還沒找到心儀的工作,感覺心好慌,不知道該怎么辦了?找不到工作的時候壓力很大,有人說自信會很受打擊,還有人說會很絕望,是人生的低谷………

vSphere HA 原理與配置

內容預覽: 1. vSphere HA 概述 2. vSphere HA 提供的保護級別 3. vSphere HA運行原理 4. vSphere HA 故障支持場景 5. vSphere HA接入控制策略 6. 如何選擇vSphere HA 的接入控制策略 7. 配置vSphere HA的基礎條件 8. 虛擬機組件保護 9. 開啟vSphere HA功能 1. v…

自學Android!Android高級工程師面試題-字節跳動,附答案

前言 大廠面試一直都是程序員圈內摸魚時間津津樂道的話題,進大廠想必也是無數程序員的夢想。 關于“原理”的問題,幾乎是現如今Android開發崗必問的問題,尤其在大廠面試中更為突出。有過大廠面試經驗的小伙伴應該知道:大廠的面試…

WEB可以調節的框架頁

<html> <head><meta HTTP-EQUIV"Content-Type" CONTENT"text/html; charsetgb2312"><title>主框架[www.tecsoon.com]</title></head><frameset cols"30%,*"> <frame name"dir" target&…

被面試官問的Android問題難倒了,成功入職字節跳動

感悟 這個世界有一個“二八原則”在好多地方都發揮著作用&#xff0c;在Android開發上我認為也一樣有用。做一個Android開發&#xff0c;你也許只會用到Android開發知識中的20%&#xff0c;有80%其實你學了也不一定會用。 而面試官也一樣&#xff0c;他也可能只掌握了20%的知…

PANEL中顯示窗體

var frm: TForm2;//定義窗口類begin PageControl1.activepage:tabsheet1; if Panel1.ControlCount 0 then begin frm : Tform2.Create(self); frm.Parent : Panel1; frm.BorderStyle : bsnone; frm.WindowState : wsmaximized; if skindata1.active…

被面試官問的Android問題難倒了,系列篇

本篇將由 環境搭建、實現原理、編程開發、插件開發、編譯運行、性能穩定、發展未來 等七個方面&#xff0c;對當前的 React Native 和 Flutter 進行全面的分析對比&#xff0c;希望能給你更有價值的參考。 前言 移動端跨平臺在經歷數年沉浮之后&#xff0c;如今還能在舞臺聚光…

使用screen管理后臺程序

我們常需要SSH 或者telent 遠程登錄到Linux 服務器&#xff0c;經常運行一些需要很長時間才能完成的任務&#xff0c;在此期間不能關掉窗口或者斷開連接&#xff0c;否則這個任務就會被殺掉&#xff0c;一切半途而廢了。這時&#xff0c;我們可以用screen命令解決這個問題。 Sc…