了解線性回歸的數學原理:線性回歸背後的微積分

2020-12-10 人工智慧研究院

線性回歸通常是任何機器學習課程的起點。目的是預測輸入變量與目標變量之間的線性關係。

天真的情況是穿過空間原點的直線。在這裡,我們僅限於二維空間,即笛卡爾平面。讓我們從y = mx格式開始逐步發展,然後從y = mx + c回歸開始。

y = mx的簡化方案

在這種情況下,我們知道我們要對通過原點的數據擬合一條線。這是幼稚的情況,可能是一個很好的起點。讓我們開發損失函數並查看其行為。讓我們如下重寫我們的估計。

h(x)是估計函數,J(θ)是損失函數

請注意,我們使用平方誤差除以2m,其中m是我們擁有的數據點數。因此,我們可以將其視為平均值。準確地說,這是均方誤差的一半。當我們得到損失函數的導數時,可以看到除以2的直覺。這有助於我們對損失函數進行更簡化的推導。讓我們考慮以下幾點。

2D平面中的點集

我已經使用y = 5x圖生成了這些點,並增加了噪聲。因此,理想情況下,我們對θ的估計應具有接近於5的值。現在,如果我們針對變化的θ值繪製損耗函數,我們將得到如下所示的結果。

損失函數

注意,損失函數的最小值接近θ= 5。讓我們看看如何通過計算得出這個特定的最小值。

注意橙色切線及其漸變。它是一個正斜率,這使我們有了一個想法,我們必須朝相反的方向走才能找到一個較低的值。

梯度下降

正如通常所解釋的,梯度下降的思想是僅使用周圍斜坡的知識在未知的地形中下坡。因此,在此示例中,目標是使用斜率的梯度找到要遍歷方向並確定要移動的步長

查找遍歷方向

顯然,我們必須朝左走。步長呢?這就是學習率發揮作用的地方。這被稱為。步驟越小,速度越慢。但是,更大的步幅可能會使您錯過最小值(將您從θ= 7步進到θ= 1,這毫無意義)。因此我們可以將θ的變化公式化如下

θ計算的下一個值和損失函數的導數

由於線性回歸的這種情況與數據無關,因此可以將其用作計算損耗和進行梯度下降的標準方程式。這應該強調一個事實,即我們始終堅持標準損失函數,而沒有自己做任何事情。在python中實現它非常簡單。我們將len(x)用於m並將0.001用作。xy是訓練數據集或我們要估計的點集。

#損失函數(1/2* len(x)) * sum([(theta* x[i] - y[i])**2 for i in range(len(x))])#Change of thetatheta - 0.0001 * (1/len(x)) * sum([x[i]*(theta*x[i] - y[i]) for i in range(len(x))])

我們可以迭代進行梯度下降,直到達到最小值或直到損失函數低於某個閾值為止。我們還可以決定許多迭代。由於我們保證線性回歸的最小值,因此可以按以下方式實現遞減。

loss = float('inf')theta = 8while True:theta = descend(theta) if loss > loss_function(theta, x, y): loss = loss_function(theta, x, y) else: break

降序函數返回下一個θ值和loss_function返回在價值的損失θ。我們可以如下顯示梯度遍歷。

下坡以及損失功能

估計值隨每次迭代的變化而下降

完整方案y = mx + c

這是前一種情況的擴展,我們可以如下對估計的方程和損失函數進行建模。

h(x)是估計函數,J(θ1,θ2)是損失函數

以下是我要擬合的一組點。我已經使用函數y = 5 + 3x生成了這個,但是有點雜音。

y = 5 + 3x(有噪聲)

現在我們有了一個包含2個變量的損失函數,我們的損失函數將是一個3D圖,第三個軸對應於損失值。用圖解法,我們可以說明如下。

損失函數的變化。圓的中間是最小損失點。

可以類似地得出我們的梯度下降以得出以下方程組。

梯度下降函數的推導

注意,必須同時更新梯度,以使一個θ值的更新不會影響另一個。在python中,此操作如下所示。

theta1_new = theta1 - 0.01 * (1/len(x)) * sum([theta1 + theta2*x[i] - y[i] for i in range(len(x))])theta2_new = theta2 - 0.01 * (1/len(x)) * sum([x[i]*(theta1 + theta2*x[i] - y[i]) for i in range(len(x))])theta1, theta2 = theta1_new, theta2_new

損失函數如下。我們先前場景的唯一更新是現在有了第二個變量θ2

(1/2* len(x)) * sum([(theta1 + theta2* x[i] - y[i])**2 for i in range(len(x))])

我已經通過梯度下降更新了迭代,如下所示。除了檢查損失不斷減少的先前方案之外,我還考慮了直接損失的數量,以確保我不會在最小點附近進行很多迭代。

loss = float('inf')theta1 = 10theta2 = -1while True:theta1, theta2 = descend(theta1, theta2) if loss > loss_function(theta1, theta2, x, y) and \ abs(loss - loss_function(theta1, theta2, x, y)) > 0.001: loss = loss_function(theta1, theta2, x, y) else: break

我們可以將損失函數的梯度下降可視化如下。

與損失地形一起運動

當我們的theta值在變化時,我們的回歸擬合與表格中的值很好地吻合。它看起來像下面的樣子。

估計值隨每次迭代的變化而下降

在最終擬合中,我們分別獲得了6.52.7的截距和梯度值,考慮到數據中的噪聲,這是合理的。

相關焦點

  • 多元線性回歸、逐步回歸、邏輯回歸的總結
    做回歸分析。包括簡單多變量回歸、逐步回歸、邏輯回歸!對了,上次,用Python寫的兩篇回歸擬合分別是:基於最小二乘法的——線性回歸擬合(一)基於梯度下降法的——線性回歸擬合(二)多元回歸分析,生活中用的很多,因為一個因素可能與很多其它因素有關!言歸正傳,這裡考慮用R語言裡面的相關函數做回歸分析。
  • 線性回歸:簡單線性回歸詳解
    【導讀】本文是一篇專門介紹線性回歸的技術文章,討論了機器學習中線性回歸的技術細節。線性回歸核心思想是獲得最能夠擬合數據的直線。
  • 多重線性回歸
    python多重線性回歸分析多重線性回歸分析定義多重線性回歸模型:Mulitiple Linear Regression多元線性回歸模型:Multivariate Linear Regression數據準備#多重線性回歸#數據準備
  • Python中線性回歸的完整指南
    雖然算法很簡單,但只有少數人真正理解了基本原理。 首先,將深入研究線性回歸理論,以了解其內在運作。然後,將在Python中實現該算法來模擬業務問題。 理論 這背後的基本原理是,如果兩個預測變量相互作用,那麼包括它們的個體貢獻將對模型產生很小的影響。 好的!現在知道它是如何工作的,讓它讓它工作!將通過Python中的簡單和多元線性回歸進行研究,並將展示如何在兩種情況下評估參數的質量和整體模型。 可以在此處獲取代碼和數據。
  • 線性回歸(Linear Regression)原理小結
    線性回歸推廣5. 加正則化項的線性回歸6. 線性回歸模型綜合評價7. 參考1.線性回歸推廣4.1 多項式回歸    以一個只有兩個特徵的p次方多項式回歸的模型為例進行說明:,然後令 ,這樣我們就得到了下式:此時,一個二元的多項式回歸,轉化為了一個五元的線性回歸,然後便可以使用線性回歸的方法來完成算法。
  • 線性模型(一)普通線性回歸到廣義線性模型
    普通線性回歸線性回歸線性模型如何解決非線性問題建模方法論背景線性模型為什麼能解決非線性問題。同時提醒讀者避免只從字面理解「線性」帶來誤會,即線性模型只能解決線性問題。本章將線性模型定位和表述為在數學表達式上具有線性的表示方式的數學模型,包含普通線性回歸模型和廣義線性模型(線性支持向量機本章不進行講述)。
  • 各種線性回歸
    一.sklearn中的各種線性回歸1,普通線性回歸
  • 廣義線性模型與邏輯回歸
    所以我們無法直接採用線性回歸模型進行建模。對於這一類問題,可以用邏輯回歸來處理。在講邏輯回歸之前,先簡單介紹下指數族分布、廣義線性模型,因為邏輯回歸是廣義線性模型的一種,所以我們需要了解如何從廣義線性模型得到邏輯回歸。二、指數族分布之所以先介紹指數族分布,因為指數族分布是所有廣義線性模型的假設條件之一。
  • 線性回歸的正則化 ——嶺回歸與LASSO回歸
    本文作者:王   歌文字編輯:孫曉玲在《基於廣義線性模型的機器學習算法——線性回歸》中我們介紹了如何使用線性回歸算法來擬合學習器
  • 原理+代碼|Python實戰多元線性回歸模型
    其中多元共線性這個問題將貫穿所有的機器學習模型,所以本文會「將原理知識穿插於代碼段中」,爭取以不一樣的視角來敘述和講解「如何更好的構建和優化多元線性回歸模型」。主要將分為兩個部分:詳細原理Python 實戰Python 實戰Python 多元線性回歸的模型的實戰案例有非常多,這裡雖然選用的經典的房價預測
  • 線性回歸-如何對數據進行回歸分析
    線性回歸模型是最基礎的一種回歸模型,理解起來也很容易,我們從解方程組談起。1,解方程組相信大家對解方程都不陌生,這是我們初中時期最熟悉的數學知識。通常,我們的模型是通過多個特徵值來預測一個目標值,那麼線性回歸模型的數學公式為:其中:線性回歸模型與數學中的解方程不同,後者的結果是精確解,而前者則是一個近似解。因此在公式中存在一個 ε 。
  • 線性回歸的求解:矩陣方程和梯度下降、數學推導及NumPy實現
    前一節我們曾描述了線性回歸的數學表示,最終得出結論,線性回歸的機器學習過程就是一個使得損失函數最小的最優化問題求解過程。Normal Equation對於損失函數,可以使其導數為零,尋找損失函數的極值點。
  • python機器學習--線性回歸
    python機器學習--線性回歸線性回歸是最簡單的機器學習模型,其形式簡單,易於實現,同時也是很多機器學習模型的基礎。對於一個給定的訓練集數據,線性回歸的目的就是找到一個與這些數據最吻合的線性函數。針對線性回歸算法在之前的數模案例也有涉及喔,歡迎去看看上一篇博客數學建模預測模型實例--大學生體測數據模型在這裡插入圖片描述OLS線性回歸Ordinary Least Squares 最小二乘法一般情況下,線性回歸假設模型為下,其中w為模型參數
  • 線性模型(二)正則化的回歸
    正則化的回歸正則化的回歸是在普通回歸經驗風險中加入正則項構成的回歸,如式(9-10)所示:正則化原理最常見的正則化方法是使用Lp正則化項,即Lp範數,其數學表達式為式(9-11):兩種正則的線性組合稱為ElasticNet(彈性網絡)回歸Sklearn中的正則化的回歸實現較為全面。
  • 線性回歸分析淺談
    但要在這些數據基礎上去預測或評估結果的優劣時則必須要依賴於一定的數學模型,這時候可以採取一個折中辦法,即尋找一個趨近真實結果的函數關係式來描繪當前兩組「不相關」數據的關聯性。在數學分析中,最簡單的數學函數關係莫過於線性方程,用於求解這個函數關係式的方法大多採用最小平方差(least square,LS,有的也稱最小二乘法)方法。
  • 多重線性回歸實例 - CSDN
    在上一期SPSS的推文中我們講了一些關於線性回歸的基本知識,還利用一個簡單的實例進行了簡單線性回歸的分析,今天我們就來講講多重線性回歸(也叫多元線性回歸),有關多元線性回歸的概念我在上一期的推文中也已經講過,這裡就不提了。可瀏覽上一篇SPSS的推文:SPSS第二期——線性回歸(上),兩篇對照起來看,或許能學到更多知識。
  • Python 實戰多元線性回歸模型,附帶原理+代碼
    其中多元共線性這個問題將貫穿所有的機器學習模型,所以本文會「將原理知識穿插於代碼段中」,爭取以不一樣的視角來敘述和講解「如何更好的構建和優化多元線性回歸模型」。主要將分為兩個部分:多元線性回歸建模現在我們直接構建多元線性回歸模型:from statsmodels.formula.api import
  • python多重線性回歸分析
    python多重線性回歸分析多重線性回歸分析定義多重線性回歸模型:Mulitiple Linear Regression多元線性回歸模型:MultivariateLinear Regression數據準備#多重線性回歸#數據準備import pandas as pddf=pd.read_csv('e:/python/out/corr.csv',encoding='utf8')df根據預測目標,確定自變量和因變量#多重線性回歸
  • 入門機器學習之線性回歸
    回歸分析是研究相關關係的是一種數學工具,是用一個變量取得的值去估計另一個變量所取得的值。回歸分析按照涉及的變量的多少,分為一元回歸和多元回歸分析;按照因變量的多少,可分為簡單回歸分析和多重回歸分析;按照自變量和因變量之間的關係類型,可分為線性回歸分析和非線性回歸分析。如果在回歸分析中,只包括一個自變量和一個因變量,且二者的關係可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。
  • spss線性回歸 回歸方程 - CSDN
    多元線性回歸,主要是研究一個因變量與多個自變量之間的相關關係,跟一元回歸原理差不多,區別在於影響因素(自變量)更多些而已,例如:一元線性回歸方程 為:    毫無疑問,多元線性回歸方程應該為:   今天跟大家一起討論一下,SPSS---多元線性回歸的具體操作過程,下面以教程教程數據為例,分析汽車特徵與汽車銷售量之間的關係。通過分析汽車特徵跟汽車銷售量的關係,建立擬合多元線性回歸模型。數據如下圖所示: