最小二乘線性回歸

? 線性回歸(linear regression):試圖學得一個線性模型以盡可能準確地預測實際值的輸出。

以一個例子來說明線性回歸,假設銀行貸款會根據 年齡 和 工資 來評估可放款的額度。即:

? 數據:工資和年齡(2個特征)

? 目標:預測銀行放款額度(標簽)

? 參數:考慮工資和年齡分別對放款額度的影響程度

可以寫成這樣: Y = X 1 θ 1 + X 2 θ 2 Y=X_1\theta_1+X_2\theta_2 Y=X1?θ1?+X2?θ2?,這里 X 1 、 X 2 就是特征, Y X_1、X_2 就是特征,Y X1?X2?就是特征,Y就是銀行最終放款額度。

? 找到最合適的一個平面來擬合數據點:
在這里插入圖片描述

? 擬合的平面方程: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_{\theta}(x)=\theta_0+\theta_1x_1+\theta_2x_2 hθ?(x)=θ0?+θ1?x1?+θ2?x2?,這里 θ 0 \theta_0 θ0?是偏置項。整合該方程可以寫成如下形式:
h θ ( x ) = ∑ i = 0 n θ i x i = θ ? x h_{\theta}(x)=\sum_{i=0}^n \theta_ix_i=\theta^\top x hθ?(x)=i=0n?θi?xi?=θ?x
注意這里 x 0 = 1 x_0=1 x0?=1,添加一個全為1的特征,方便表示。

? 真實值和預測值之間肯定存在誤差,用 ? \epsilon ?來表示誤差。對于每個樣本:
y i = θ ? x i + ? i y_i = \theta^\top x_i + \epsilon_i yi?=θ?xi?+?i?
這里 y i y_i yi? 為真實值, θ ? x i \theta^\top x_i θ?xi?為預測值, ? i \epsilon_i ?i?為誤差項

? 對于誤差的理解:誤差 ? i \epsilon_i ?i?是獨立同分布的,且服從均值為0方差為 θ 2 \theta^2 θ2的高斯分布

  • 獨立:每個樣本 x i x_i xi?是沒有關系的(張三李四一起放款,他倆沒關系)
  • 同分布:每個 x i x_i xi?都是對于同一個問題的(他倆都是來同一家銀行 )
  • 高斯分布:誤差可大可小,但是絕大多數情況下這個浮動不會太大,極小情況下浮動會比較大,符合正常情況。

? 由于誤差服從高斯分布:
p ( ? i ) = 1 2 π σ e ? 1 2 ( ? i σ ) 2 p(\epsilon_i) = \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{\epsilon_i}{\sigma}\right)^2} p(?i?)=2π ?σ1?e?21?(σ?i??)2
將預測值和誤差帶入上式得:
y i = θ ? x i + ? i 帶入?? p ( ? i ) = 1 2 π σ e ? 1 2 ( ? i σ ) 2 : p ( y i ∣ x i ; θ ) = 1 2 π σ e ? 1 2 ( y i ? θ ? x i σ ) 2 y_i = \theta^\top x_i + \epsilon_i \\ 帶入\ \ p(\epsilon_i) = \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{\epsilon_i}{\sigma}\right)^2}:\\ p(y_i|x_i;\theta)=\frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2} yi?=θ?xi?+?i?帶入??p(?i?)=2π ?σ1?e?21?(σ?i??)2p(yi?xi?;θ)=2π ?σ1?e?21?(σyi??θ?xi??)2
上式的似然函數如下:
L ( θ ) = ∏ i = 1 m p ( y i ∣ x i ; θ ) = ∏ i = 1 m 1 2 π σ e ? 1 2 ( y i ? θ ? x i σ ) 2 L(\theta) = \prod_{i=1}^mp(y_i|x_i;\theta)=\prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2} L(θ)=i=1m?p(yi?xi?;θ)=i=1m?2π ?σ1?e?21?(σyi??θ?xi??)2
對似然函數的解釋:

? 什么樣的參數跟我們的數據組合后恰好是真實值

對數似然:
l o g L ( θ ) = l o g ∏ i = 1 m p ( y i ∣ x i ; θ ) = l o g ∏ i = 1 m 1 2 π σ e ? 1 2 ( y i ? θ ? x i σ ) 2 = m l o g 1 2 π σ ? 1 σ 2 ? 1 2 ? ∑ i = 1 m ( y i ? θ ? x i ) 2 log L(\theta) =log \prod_{i=1}^mp(y_i|x_i;\theta)=log \prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2}\\=mlog\frac{1}{\sqrt{2 \pi}\sigma}-\frac{1}{\sigma ^2}*\frac12*\sum_{i=1}^m(y_i-\theta^\top x_i)^2 logL(θ)=logi=1m?p(yi?xi?;θ)=logi=1m?2π ?σ1?e?21?(σyi??θ?xi??)2=mlog2π ?σ1??σ21??21??i=1m?(yi??θ?xi?)2
目標是讓似然函數(對數變換之后)越大越好:
m a x l o g L ( θ ) → m i n J ( θ ) = 1 2 ∑ i = 1 m ( y i ? θ ? x i ) 2 (最小二乘法) max \ log L(\theta)\\ →min \ J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2(最小二乘法) max?logL(θ)min?J(θ)=21?i=1m?(yi??θ?xi?)2(最小二乘法)
J ( θ ) = 1 2 ∑ i = 1 m ( y i ? θ ? x i ) 2 J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2 J(θ)=21?i=1m?(yi??θ?xi?)2即為最小二乘法。

? 將目標函數寫為矩陣形式:
J ( θ ) = 1 2 ∑ i = 1 m ( y i ? θ ? x i ) 2 = 1 2 ( X θ ? y ) ? ( X θ ? y ) 對 θ 求偏導 : ? θ J ( θ ) = X ? X θ ? X ? y 令 ? θ J ( θ ) = 0 得 : θ = ( X ? X ) ? 1 X ? y J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2= \frac12(X\theta-y)^\top (X\theta-y)\\ 對\theta 求偏導:\\ \nabla_\theta J(\theta)=X^\top X\theta-X^\top y\\ 令\nabla_\theta J(\theta)=0得:\\ \theta=(X^\top X)^{-1}X^\top y J(θ)=21?i=1m?(yi??θ?xi?)2=21?(?y)?(?y)θ求偏導:?θ?J(θ)=X??X?y?θ?J(θ)=0:θ=(X?X)?1X?y
? 采用微分和跡的關系 d f = t r ( ( ? f ? X ) ? d X ) df= tr((\frac{\partial f}{\partial X})^\top dX) df=tr((?X?f?)?dX)進行求導,求導過程如下:
d J ( θ ) = t r ( d J ( θ ) ) = d [ 1 2 ( X θ ? y ) ? ( X θ ? y ) ] = t r [ d ( 1 2 ( θ ? X ? X θ ? 2 y ? X θ + y ? y ) ) ] = t r [ d ( 1 2 θ ? X ? X θ ) ] ? t r ( d ( 2 y ? X θ ) ) + t r ( d ( y ? y ) ) = t r ( 1 2 d θ ? X ? X θ ) + t r ( 1 2 θ ? X ? X d θ ) ? t r ( 2 y ? X d θ ) + 0 = t r ( 1 2 θ ? X ? X d θ ) + t r ( 1 2 θ ? X ? X d θ ) ? t r ( 2 y ? X d θ ) = t r ( θ ? X ? X d θ ? 2 y ? X d θ ) = t r ( ( θ ? X ? X ? 2 y ? X ) d θ ) = t r ( ( X ? X θ ? 2 X ? y ) ? d θ ) 故: ? J ( θ ) ? θ = X ? X θ ? 2 X ? y dJ(\theta)= tr(dJ(\theta))=d[\frac12(X\theta-y)^\top (X\theta-y)]\\ =tr[d(\frac12(\theta^\top X^\top X\theta-2y^\top X\theta+y^\top y))]\\ =tr[d(\frac12\theta^\top X^\top X\theta)]-tr(d(2y^\top X\theta))+tr(d(y^\top y))\\ =tr(\frac12d\theta^\top X^\top X\theta)+tr(\frac12\theta^\top X^\top Xd\theta)-tr(2y^\top Xd\theta)+0\\ =tr(\frac12\theta^\top X^\top Xd\theta)+tr(\frac12\theta^\top X^\top Xd\theta)-tr(2y^\top Xd\theta)\\ =tr(\theta^\top X^\top Xd\theta-2y^\top Xd\theta)=tr((\theta^\top X^\top X-2y^\top X)d\theta)\\ =tr(( X^\top X\theta - 2X^\top y)^\top d\theta)\\ 故:\\ \frac{\partial J(\theta)}{\partial \theta}=X^\top X\theta - 2X^\top y\\ dJ(θ)=tr(dJ(θ))=d[21?(?y)?(?y)]=tr[d(21?(θ?X??2y?+y?y))]=tr[d(21?θ?X?)]?tr(d(2y?))+tr(d(y?y))=tr(21?dθ?X?)+tr(21?θ?X?Xdθ)?tr(2y?Xdθ)+0=tr(21?θ?X?Xdθ)+tr(21?θ?X?Xdθ)?tr(2y?Xdθ)=tr(θ?X?Xdθ?2y?Xdθ)=tr((θ?X?X?2y?X)dθ)=tr((X??2X?y)?dθ)故:?θ?J(θ)?=X??2X?y
X ? X X^\top X X?X為滿秩矩陣或者正定矩陣時,令偏導數 ? J ( θ ) ? θ = X ? X θ ? 2 X ? y = 0 \frac{\partial J(\theta)}{\partial \theta}=X^\top X\theta - 2X^\top y=0 ?θ?J(θ)?=X??2X?y=0得到:
θ = ( X ? X ) ? 1 X ? y \theta=(X^\top X)^{-1}X^\top y θ=(X?X)?1X?y
?

其中 ( X ? X ) ? 1 (X^\top X)^{-1} (X?X)?1是矩陣 X ? X X^\top X X?X的逆矩陣。但是現實任務中, X ? X X^\top X X?X通常不是滿秩矩陣,例如在許多任務中會遇到大量的變量,其數目甚至超過樣例數,導致X的列數多于行數, X ? X X^\top X X?X X ? X X^\top X X?X顯然不滿秩。此時可以解出多個 θ \theta θ,他們都能使均方差最小化。選擇哪一個解作為輸出,將由機器學習算法的歸納偏好決定,常見的做法是引入正則化項。

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

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

相關文章

python將模塊進行打包

模塊名稱為:my_module 目錄結構: my_modulemy_module__init__.pymy_module_main.pysetup.pypython setup.pu sdist bdist_wheel生成tar.gz包和whl文件用于安裝 """ python setup.py sdist bdist_wheel """from setuptoo…

LeeCode前端算法基礎100題(2)- 最多水的容器

一、問題詳情: 給定一個長度為 n 的整數數組 height 。有 n 條垂線,第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。 返回容器可以儲存的最大水量。 說明:…

案例025:基于微信小程序的移動學習平臺的設計與實現

文末獲取源碼 開發語言:Java 框架:SSM JDK版本:JDK1.8 數據庫:mysql 5.7 開發軟件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序開發軟件:HBuilder X 小程序…

[C++歷練之路]優先級隊列||反向迭代器的模擬實現

W...Y的主頁 😊 代碼倉庫分享💕 🍔前言: 在C的宇宙中,優先隊列似乎是一座巨大的寶庫,藏匿著算法的珍寶。而就在這片代碼的天空下,我們不僅可以探索優先隊列的神奇,還能夠揭開反向迭…

shutil和fileinput模塊:文件操作的最佳實踐

在Python中,shutil和fileinput模塊是處理文件和輸入/輸出(I/O)操作的有力工具。shutil模塊提供了一種在Python中操作文件的高級接口,而fileinput模塊則允許我們輕松地讀取多個輸入流。 shutil模塊 shutil模塊是Python的標準庫之一,提供了很…

【【Linux系統下常用指令學習 之 二 】】

Linux系統下常用指令學習 之 二 文件查詢和搜索 文件的查詢和搜索也是最常用的操作,在嵌入式 Linux 開發中常常需要在 Linux 源碼文件中查詢某個文件是否存在,或者搜索哪些文件都調用了某個函數等等。 1、命令 find find 命令用于在目錄結構中查找文件…

BUUCTF [ACTF新生賽2020]outguess 1

BUUCTF:https://buuoj.cn/challenges 題目描述: 得到的 flag 請包上 flag{} 提交。 密文: 下載附件,得到一堆文件。 解題思路: 1、根據題目和flag.txt文件提示,猜測為outguess隱寫。 outguess下載安裝 kail 終端命…

數字鄉村:科技賦能農村產業升級

數字鄉村:科技賦能農村產業升級 數字鄉村是指通過信息技術和數字化手段,推動農業現代化、農村經濟發展和農民增收的一種新模式。近年來,隨著互聯網技術的飛速發展,數字鄉村開始在全國范圍內迅速興起,為鄉村經濟注入了新…

leedcode 刷題 - 除自身以外數組的乘積 - 和為 K 的子數組

I238. 除自身以外數組的乘積 - 力扣(LeetCode) 給你一個整數數組 nums,返回 數組 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘積 。 題目數據 保證 數組 nums之中任意元素的全部前綴元素和后綴的乘積都在…

AdaBoost提升分類器性能

目錄 AdaBoost算法原理 AdaBoost工作詳情 初始權重分配 第一輪 第二輪 后續輪次 最終模型 AdaBoost的API解釋 AdaBoost 對房價進行預測 AdaBoost 與決策樹模型的比較 結論 AdaBoost算法原理 在數據挖掘中,分類算法可以說是核心算法,其中 Ada…

gitee推薦-PHP面試準備的資料

該內容為giee項目。PHP-Interview: 這個項目是自己準備PHP面試整理的資料。包括PHP、MySQL、Linux、計算機網絡等資料。方便自己以后查閱,會不定期更新,歡迎提交pr,如果錯誤,請指出,謝謝 在線預覽地址:Intr…

leetcode面試經典150題——31 無重復字符的最長子串(方法二極簡代碼!!!)

題目: 無重復字符的最長子串 描述: 給定一個字符串 s ,請你找出其中不含有重復字符的 最長子串 的長度。 示例 1: 輸入: s “abcabcbb” 輸出: 3 解釋: 因為無重復字符的最長子串是 “abc”,所以其長度為 3。 leetcode鏈接 方法…

【LeetCode刷題筆記】DFSBFS(三)

圖的基礎知識 鄰接矩陣是一個二維表,其中橫縱坐標交叉的格子值為 1 的表示這兩個頂點是連通的,否則是不連通的。

Python-csv庫進行數據保存和讀寫

在 Python 中使用 CSV 文件非常簡單,Python 提供了內置的 csv 模塊來處理 CSV 文件。你可以使用 csv 模塊來讀取、寫入和操作 CSV 文件中的數據。 基礎使用 讀取 CSV 文件 python import csv# 打開 CSV 文件進行讀取 with open(file.csv, moder) as file:reader …

NVM得介紹和詳細使用教程

NVM???????(Node Version Manager)是一個用于管理多個Node.js版本的工具。它允許您在同一臺計算機上輕松地切換和管理不同的Node.js版本。以下是NVM的介紹和詳細使用教程: 安裝NVM: 首先,您需要在計算機上安裝N…

C#串口通信從入門到精通(27)——高速通信下解決數據處理慢的問題(20ms以內)

前言 我們在開發串口通信程序時,有時候會遇到比如單片機或者傳感器發送的數據速度特別快,比如10ms、20ms發送一次,并且每次發送的數據量還比較大,如果按照常規的寫法,我們會發現接收的數據還沒處理完,新的數據又發送過來了,這就會導致處理數據滯后,軟件始終處理的不是…

python樹的雙親存儲結構

這種存儲結構是一種順序存儲結構,采用元素形如“[結點值,雙親結點索引]”的列表表示。通常每個結點有唯一的索引(或者偽地址),根結點的索引為0,它沒有雙親結點,其雙親結點的索引為-1。例如,所示的樹對應的雙…

123. 股票買賣的最佳時機III(2次交易)

題目 題解 class Solution:def maxProfit(self, prices: List[int]) -> int:N len(prices)# 狀態定義 dp[i][j][k]代表在第i天,被允許完成j次交易時,持有或者不持有的最大利潤。k0代表不持有,k1代表持有dp [[[0 for k in range(2)] for…

醫學生秋招攻略,面試時一定要注意這些方面!

醫學生別拖了,今年秋招已經過去一波熱度了,趕早不趕晚!在籌備第二輪秋招以及明年的春招的醫學生一定要注意以下事項。 1.清晰目標 搜集秋招訊息 一定要早點多做準備,想清楚未來的目標,是繼續深造還是就業做醫生或者是…

FileReader與URL.createObjectURL實現圖片、視頻上傳預覽

之前做圖片、視頻上傳預覽常用的方案是先把文件上傳到服務器,等服務器返回文件的地址后,再把該地址字符串賦給img或video的src屬性,這才實現所謂的文件預覽。實際上這只是文件“上傳后再預覽”,這既浪費了用戶的時間,也…