搜尋
首頁後端開發Python教學線性迴歸:從理論到實踐

在本指南中,我們將解釋線性迴歸及其工作原理,並逐步引導您完成整個過程。我們也將介紹特徵縮放梯度下降,這是提高模型準確度的關鍵技術。無論您是分析業務趨勢還是深入研究資料科學,本指南都是一個很好的起點。


目錄

  • 簡介
  • 理解監督學習
  • 什麼是線性迴歸?
  • 簡單線性迴歸
  • 多元線性迴歸
  • 成本函數
  • 特徵縮放
  • 梯度下降
  • 簡單線性迴歸的梯度下降
  • 多元線性迴歸的梯度下降

介紹

線性迴歸是一種簡單而強大的工具,用於理解不同因素之間的關係並做出預測。例如,您可能想知道您的學習時間如何影響您的考試成績,一棟房子根據其大小和位置可以賣多少錢,或透過更多的廣告如何增加銷售額。線性迴歸使我們能夠檢查資料點(例如學習時間或廣告支出)並繪製一條最能預測結果的直線,例如測驗分數或銷售資料。這項技術在許多領域都很有價值,可以幫助我們根據數據做出明智的決策。

了解監督學習

在深入研究線性迴歸之前,有必要了解監督式學習,這是一種使用標記資料來訓練模型的機器學習方法。在監督式學習中,我們為模型提供訓練範例,其中包括特徵(輸入變數)及其對應的標籤(正確的輸出)。

監督學習任務主要有兩種:

  1. 迴歸:這可以從無限範圍的可能輸出預測連續值。例如,根據各種特徵預測房價。
  2. 分類:這與迴歸不同,它是從一組有限的可能類別中預測類別或類別。例如,確定電子郵件是否為垃圾郵件。

什麼是線性迴歸?

線性迴歸是統計和機器學習中使用的一種監督學習方法,用於理解兩類變數之間的關係:自變數(我們認為影響結果的因素)和因變數(我們想要預測的結果)。

目標是使用線性方程式找到表示這種關係的最佳擬合線。透過分析標記資料(具有已知結果的資料),線性迴歸可以幫助我們了解自變數的變化如何影響因變數。

術語

Linear Regression : From Theory to Practice

簡單線性迴歸

簡單線性迴歸檢查一個因變數和一個自變數之間的關係。它的目的是透過將直線擬合到資料點來對關係進行建模,可以用以下方程式表示:

Linear Regression : From Theory to Practice

在此等式中:

  • y_hat(或 f_wb(x):因變量,表示預測的結果。這是我們根據自變數的輸入來估計的值。
  • b : 這是迴歸線的截距。它表示當自變數 x 為零時因變數 y 的期望值。截距允許迴歸線垂直調整以更好地擬合資料。
  • w : 自變數 x 的係數。此係數表示 x 變化一單位時因變數 y_hat 的變化量。正 w 表示隨著 x 的增加,y_hat也會增加,而負 w 表示反比關係。
  • x : 自變量,充當模型中的預測變數。此變數是用於估計 y_hat 表示的結果的輸入。

多元線性迴歸

多元線性迴歸透過檢查一個因變數與兩個或多個自變數之間的關係擴展了簡單線性迴歸的概念。這種方法使我們能夠建模更複雜的關係並了解多種因素如何影響結果。

Linear Regression : From Theory to Practice

地點:

  • n : 特徵總數(自變數)

成本函數

成本函數,也稱為損失函數,量化模型產生的預期(真實)值和預測值之間的差異。它衡量模型在給定資料集上的表現。在簡單線性迴歸中,最常用的成本函數是均方誤差

Linear Regression : From Theory to Practice

地點:

  • m 是訓練樣本的數量
  • y_hat 是預測值
  • y 是實際值或期望值

特徵縮放

特徵縮放是資料預處理中的關鍵步驟,特別是在使用依賴距離計算或梯度下降優化的演算法時,例如線性迴歸、邏輯迴歸和支援向量機。特徵縮放的目的是標準化資料中自變數或特徵的範圍,以確保它們對模型的學習過程做出同等的貢獻。

特徵縮放的常用技術

平均值歸一化

均值歸一化涉及調整特徵值,使其均值為零。

Linear Regression : From Theory to Practice

特點

  • 資料範圍約為 [−1,1] 或接近它。
  • 對異常值敏感,這可能會扭曲平均值並影響標準化。

用例

  • 線性迴歸:有助於提升訓練過程中的收斂性。
  • 基於梯度的演算法:當資料以零為中心時,神經網路和其他基於梯度的演算法通常收斂得更快。
  • 沒有顯著異常值的資料集:對於具有相似範圍且沒有極端異常值的資料集特別有效。

最小-最大縮放

最小-最大縮放是一種用於將特徵重新縮放到固定範圍的技術,通常為 [0,1] 或 [−1,1]。

Linear Regression : From Theory to Practice

特點

  • 固定範圍:將資料縮放到特定範圍,通常為[0,1]。
  • 對異常值的敏感度:它可能會受到異常值的顯著影響,這可能會扭曲其他值的縮放。

用例

  • 影像處理:常用於卷積神經網路 (CNN) 等深度學習模型,其中像素值縮放為 [0,1]。
  • 基於距離的演算法:對於依賴距離計算的演算法至關重要,例如k 最近鄰(KNN)、k 均值聚類和支援向量機(SVM),以確保所有特徵的貢獻相等.
  • 基於樹的模型:雖然與其他演算法相比,基於樹的模型(例如決策樹和隨機森林)不太重要,但它在特徵尺度差異很大的情況下仍然可以提供幫助。

Z 分數標準化

Z 分數標準化,也稱為標準縮放,將特徵轉換為平均值為零和標準差為 1。此技術對於假設常態分佈資料的演算法特別有用。

Linear Regression : From Theory to Practice

地點:

  • sigma 是特徵的標準差。

特點

  • 均值居中:將資料以零為中心。
  • 單位變異數:確保標準差為一。
  • 對異常值的穩健性:與最小-最大縮放相比更穩健,但對極端異常值仍然敏感。

用例

  • 神經網路:在訓練過程中增強效能並加速收斂。
  • 主成分分析 (PCA)線性判別分析 (LDA):這些技術需要確保所有功能同等貢獻。
  • 高斯樸素貝葉斯:透過規範化輸入特徵來提高分類性能。

穩健的縮放

穩健縮放是一種基於中位數和四分位數範圍 (IQR) 縮放特徵的技術。此方法對於具有顯著異常值的資料集特別有用,因為它減少了這些異常值對縮放值的影響。

Linear Regression : From Theory to Practice

地點:

  • IQR(x) 是特徵的四分位數範圍,定義為訓練集第 75 個百分位數和第 25 個百分位數之間的差異

特點

  • 中位數居中:將資料圍繞中位數而不是平均值居中,使其更能適應異常值。
  • 四分位數範圍(IQR) :使用IQR 縮放數據,IQR 是訓練資料的第75 個百分位數(Q3) 和第25 個百分位數(Q1) 之間的差值。這有助於保持發行版的穩健性。

用例

  • 有異常值的資料:在存在異常值的情況下有效。
  • 金融:在可能包含極端價值的金融資料集中有用。
  • 環境資料:非常適合測量結果差異很大的環境資料集。

梯度下降

梯度下降是一種強大的最佳化演算法,用於訓練機器學習模型,包括線性迴歸。其主要目標是最小化預期值和預測值之間的誤差。

最初,成本函數的斜率在起始(任意)點可能很陡。隨著演算法迭代和更新參數,斜率逐漸減小,引導模型趨向成本函數的最低點,稱為收斂點或局部最小值。在這個收斂點,成本函數達到最小值,表示模型預測盡可能接近實際值。一旦參數達到這一點,進一步的更新會對預測產生最小的變化,這表明優化過程已有效地識別了數據的最佳擬合參數。

流程涉及以下關鍵步驟:

  1. 初始化:從模型參數的隨機值開始(例如,截距 b 和係數 w)。
  2. 計算梯度:計算成本函數相對於模型參數的梯度。這個梯度代表了成本函數的變化方向和速率。
  3. 更新參數 :向梯度相反方向調整模型參數,以減少誤差。更新規則由下式給出:
  4. 迭代:重複此過程,直到成本函數的變化最小或達到指定的迭代次數。

提示:繪製迭代(x 軸)與成本(y 軸)的關係圖。如果繪圖顯示出平滑的下降趨勢,則您的實作可能是正確的。

Linear Regression : From Theory to Practice

梯度下降的種類

批量梯度下降

  • 優點:由於它使用整個資料集,因此可以提供穩定且準確的梯度估計。它可以直接收斂到凸函數的全域最小值。
  • 缺點:對於大型資料集來說可能非常慢,因為它在每次迭代中處理所有樣本。
  • 用例:通常用於資料集足夠小以適合記憶體的場景,例如表格資料的線性迴歸或邏輯回歸。

隨機梯度下降(SGD)

  • 優點:更新速度更快,因為它一次處理一個樣本,這可以導致更快的收斂。由於其固有的噪聲,它可以幫助擺脫局部極小值。
  • 缺點:收斂性較不穩定,可能會在最小值附近振盪,導致穩定性較差。
  • 用例:常用於線上學習場景、即時預測,或處理無法完整處理的大型資料集,例如在影像資料上訓練神經網路。

小批量梯度下降(MBD)

  • 優點:結合了批量梯度下降和隨機梯度下降的優點。它比批量梯度下降收斂得更快,比 SGD 收斂更穩定。它還可以利用向量化來實現高效計算。
  • 缺點:選擇小批量的大小可能具有挑戰性,並且可能會影響收斂速度和穩定性。
  • 用例:經常用於深度學習應用程序,特別是在大型資料集上進行訓練時,例如卷積神經網路(CNN)或自然語言處理模型中的影像分類任務。

簡單線性迴歸的梯度下降

簡單線性迴歸的梯度下降步驟

  1. 初始化 從模型參數的初始值開始。這些值可以隨機選擇或設定為零。

Linear Regression : From Theory to Practice

  1. 計算梯度 計算成本函數相對於模型參數的梯度。這個梯度代表了成本函數的變化方向和速率。

Linear Regression : From Theory to Practice

Linear Regression : From Theory to Practice

  1. 更新參數 在梯度相反的方向上調整模型參數以減少誤差。更新規則由下式給出:

Linear Regression : From Theory to Practice

Linear Regression : From Theory to Practice

哪裡:

  • J(w, b) 是成本函數,即上述所使用的均方誤差 (MSE)。
  • Alpha 是學習率,介於 0 和 1 之間的小正數。它控制梯度下降到達收斂點或局部最小值所需的步長。

提示:從較小的學習率(例如 0.01)開始,然後逐漸增加。如果成本平穩下降,那就是一個不錯的價格。如果它波動或發散,請降低學習率。學習率太大會導致梯度下降超調,永遠達不到最小值,無法收斂。

  1. 迭代:重複此過程,直到成本函數的變化最小或達到指定的迭代次數。

簡單線性迴歸的梯度下降的 Python 實現

簡單線性迴歸的梯度下降的 Python 實作

多元線性迴歸的梯度下降

多元線性迴歸的梯度下降步驟

  1. 初始化 從每個參數的隨機值開始,包括每個特徵的截距 b 和權重 w。

Linear Regression : From Theory to Practice

  1. 計算梯度 計算成本函數相對於模型參數的梯度。

Linear Regression : From Theory to Practice

Linear Regression : From Theory to Practice

向量形式

Linear Regression : From Theory to Practice

Linear Regression : From Theory to Practice

地點:

  • x_subscript_j_superscript_i 是第 i 個訓練範例的第 j_ 個特徵
  • x_superscript_T 是向量 x
  • 的轉置
  1. 更新參數 在梯度相反的方向上調整模型參數以減少誤差。更新規則由下式給出:

Linear Regression : From Theory to Practice

  1. 迭代 重複此過程,直到成本函數的變化最小或達到指定的迭代次數。

簡單線性迴歸的梯度下降的 Python 實現

簡單線性迴歸的梯度下降的 Python 實作


結論

恭喜! ! ?在這篇文章中,我們探討了線性迴歸和多元線性迴歸的基礎知識,介紹了實現梯度下降的過程,並討論了用於優化模型效能的特徵縮放等關鍵技術。透過了解如何初始化模型參數、計算梯度和迭代更新權重,您現在已經準備好實施線性迴歸演算法並提高其在現實資料集上的效能。

無論您是使用簡單的線性回歸還是處理多個特徵的複雜性,掌握梯度下降並掌握其核心原理都將顯著增強您開發準確高效的機器學習模型的能力。不斷嘗試,精進你的技能,擁抱學習過程-這和結果本身一樣重要!

請繼續關注更多關於機器學習技術和 Web 開發主題的見解。繼續探索並建立更聰明的模型,快樂學習! ??

讓我們在 LinkedIn 上聯絡?

「本文最初發佈於 Medium,我在這裡分享了更多關於數據分析、機器學習和程式設計的見解。歡迎查看並關注我以獲取更多內容!」

請按讚、分享、追蹤? .

請隨時在評論部分提出任何問題 - 我會及時、徹底地回覆您的詢問。熱烈歡迎您的疑問,我們將得到迅速、全面的答覆。 ❤️

以上是線性迴歸:從理論到實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您如何將元素附加到Python列表中?您如何將元素附加到Python列表中?May 04, 2025 am 12:17 AM

toAppendElementStoApythonList,usetheappend()方法forsingleements,Extend()formultiplelements,andinsert()forspecificpositions.1)useeAppend()foraddingoneOnelementAttheend.2)useextendTheEnd.2)useextendexendExendEnd(

您如何創建Python列表?舉一個例子。您如何創建Python列表?舉一個例子。May 04, 2025 am 12:16 AM

TocreateaPythonlist,usesquarebrackets[]andseparateitemswithcommas.1)Listsaredynamicandcanholdmixeddatatypes.2)Useappend(),remove(),andslicingformanipulation.3)Listcomprehensionsareefficientforcreatinglists.4)Becautiouswithlistreferences;usecopy()orsl

討論有效存儲和數值數據的處理至關重要的實際用例。討論有效存儲和數值數據的處理至關重要的實際用例。May 04, 2025 am 12:11 AM

金融、科研、医疗和AI等领域中,高效存储和处理数值数据至关重要。1)在金融中,使用内存映射文件和NumPy库可显著提升数据处理速度。2)科研领域,HDF5文件优化数据存储和检索。3)医疗中,数据库优化技术如索引和分区提高数据查询性能。4)AI中,数据分片和分布式训练加速模型训练。通过选择适当的工具和技术,并权衡存储与处理速度之间的trade-off,可以显著提升系统性能和可扩展性。

您如何創建Python數組?舉一個例子。您如何創建Python數組?舉一個例子。May 04, 2025 am 12:10 AM

pythonarraysarecreatedusiseThearrayModule,notbuilt-Inlikelists.1)importThearrayModule.2)指定tefifythetypecode,例如,'i'forineizewithvalues.arreaysofferbettermemoremorefferbettermemoryfforhomogeNogeNogeNogeNogeNogeNogeNATATABUTESFELLESSFRESSIFERSTEMIFICETISTHANANLISTS。

使用Shebang系列指定Python解釋器有哪些替代方法?使用Shebang系列指定Python解釋器有哪些替代方法?May 04, 2025 am 12:07 AM

除了shebang線,還有多種方法可以指定Python解釋器:1.直接使用命令行中的python命令;2.使用批處理文件或shell腳本;3.使用構建工具如Make或CMake;4.使用任務運行器如Invoke。每個方法都有其優缺點,選擇適合項目需求的方法很重要。

列表和陣列之間的選擇如何影響涉及大型數據集的Python應用程序的整體性能?列表和陣列之間的選擇如何影響涉及大型數據集的Python應用程序的整體性能?May 03, 2025 am 12:11 AM

ForhandlinglargedatasetsinPython,useNumPyarraysforbetterperformance.1)NumPyarraysarememory-efficientandfasterfornumericaloperations.2)Avoidunnecessarytypeconversions.3)Leveragevectorizationforreducedtimecomplexity.4)Managememoryusagewithefficientdata

說明如何將內存分配給Python中的列表與數組。說明如何將內存分配給Python中的列表與數組。May 03, 2025 am 12:10 AM

Inpython,ListSusedynamicMemoryAllocationWithOver-Asalose,而alenumpyArraySallaySallocateFixedMemory.1)listssallocatemoremoremoremorythanneededinentientary上,respizeTized.2)numpyarsallaysallaysallocateAllocateAllocateAlcocateExactMemoryForements,OfferingPrediCtableSageButlessemageButlesseflextlessibility。

您如何在Python數組中指定元素的數據類型?您如何在Python數組中指定元素的數據類型?May 03, 2025 am 12:06 AM

Inpython,YouCansspecthedatatAtatatPeyFelemereModeRernSpant.1)Usenpynernrump.1)Usenpynyp.dloatp.dloatp.ploatm64,formor professisconsiscontrolatatypes。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版