1. 程式人生 > >線性迴歸及梯度下降演算法詳解

線性迴歸及梯度下降演算法詳解

一、線性迴歸問題
  迴歸最簡單的定義是,給出一個點集D,用一個函式去擬合這個點集,並且使得點集與擬合函式間的誤差最小,如果這個函式曲線是一條直線,那就被稱為線性迴歸,如果曲線是一條二次曲線,就被稱為二次迴歸。
  總的來說,迴歸的目的就是建立一個迴歸方程用來預測目標值,迴歸的求解就是求這個迴歸方程的迴歸係數。預測的方法當然十分簡單,迴歸係數乘以輸入值再全部相加就得到了預測值。
  下面以一元線性迴歸為例來解釋線性迴歸的概念,下圖1為某地區的房屋面積(feet)與價格的一個數據集,在該資料集中,只有一個自變數面積(feet),和一個因變數價格,所以我們可以將資料集呈現在二維空間上,如圖2所示。利用該資料集,我們的目的是訓練一個線性方程,無限逼近所有資料點,然後利用該方程與給定的某一自變數(本例中為面積),可以預測因變數(本例中為房價)。本例中,訓練所得的線性方程如圖3所示。

  線性迴歸的目的就是找到預測效能最好的線性方程:

這裡寫圖片描述

  如果再在該案例中增添了一個自變數:房間數,資料集如下所示:

  此時,預測效能最好的線性方程應為如下所示:

這裡寫圖片描述

  因此,無論是一元線性方程還是多元線性方程,可統一寫成如下的格式:

這裡寫圖片描述

  因為引數只有θ,所以找到預測效能最好的線性方程換言之也就是找到最好的θ值,從而使得線性方程的預測最好。那麼我們該如何評估線性函式h(x)的好壞呢,這時候我們引入損失函式(loss function)的概念,用它來評估線性函式的好壞。

這裡寫圖片描述

  損失函式J(θ)也就是對每個樣本x(i)的估計值與真實值y(i)差的平方進行求和,得到整個樣本預測的值跟真實值之間的差距和損失,現在找最優的線性方程的問題可轉化為求解損失函式J(θ)的最小值。
  如何調整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(min square)和梯度下降法(Gradient Descent)。下面詳細講解梯度下降法。

二、梯度下降法
  由上可知,原始問題已轉化成求解J(θ)的最小值,也就是求解得到J(θ)取得最小值時θ0,θ1 … θn的值。這裡採用梯度下降的方法來進行相應值的求解,找到損失函式的最小值。
  我們先來看一張圖來理解梯度下降的概念:

這裡寫圖片描述

  上圖黑線即為梯度下降的走勢,在給定初始點開始向下走,往最低的點一步一步向下進行,直到找到最小點。但是這裡存在一個問題,初始點選擇不好有可能導致梯度下降的最終點不是全域性最小點,而是一個區域性最小點,如上圖紫色線所示,最終得到的值是一個區域性最小點。
  但是對於損失函式J(θ)為凸函式的情況,就不會存在上面的問題,它只有一個全域性最優解,如下圖所示:

這裡寫圖片描述

  所以由上可知,梯度下降的原理可以形象表示為:比如我們在一座大山上的某處位置,由於我們不知道怎麼下山,於是決定走一步算一步,也就是在每走到一個位置的時候,求解當前位置的梯度,沿著梯度的負方向,也就是當前最陡峭的位置向下走一步,然後繼續求解當前位置梯度,向這一步所在位置沿著最陡峭最易下山的位置走一步。這樣一步步的走下去,一直走到覺得我們已經到了山腳。當然這樣走下去,有可能我們不能走到山腳,而是到了某一個區域性的山峰低處。
  所以對於梯度下降法,它的主要步驟如下:
  (1) 先確定向下一步的步伐大小,我們稱為學習率α;
  (2) 任意給定一個初始值:;
  (3) 確定一個向下的方向,並向下走預先規定的步伐,並更新θ值;
  (4) 當下降的高度小於某個定義的值ε,則停止下降。
  它的核心演算法可以用下面一張圖來概括:

這裡寫圖片描述

  具體來說就是,α為學習率,決定了下降的步伐大小;損失函式J(θ)關於θ的偏導數決定了下降的方向;當損失函式J(θ)收斂時,停止更新θ的值。
  最後強調一下,梯度下降的步伐大小(即學習率α)非常重要,因為如果太小,會使得找到損失函式最小值的速度變得很慢,如果α太大,則有可能會出現跳過最優的現象,從而找不到損失函式的最優解。在實際應用中,若損失函式的值不斷變大,則有可能是步長速率a太大,導致演算法不收斂,這時可適當調整a值。

三、梯度下降演算法的優化除錯
3.1、演算法的步長選擇
  實際上,步長的取值取決於資料樣本,可以多取一些值,從大到小,分別執行演算法,看看迭代效果,如果損失函式在變小,說明取值有效,否則要增大步長。前面說了。步長太大,會導致迭代過快,甚至有可能錯過最優解。步長太小,迭代速度太慢,很長時間演算法都不能結束。所以演算法的步長需要多次執行後才能得到一個較為優的值。
3.2、引數初始值的選擇
  初始值不同,獲得的最小值也有可能不同,因此梯度下降求得的只是區域性最小值;當然如果損失函式是凸函式則一定是最優解。由於有區域性最優解的風險,需要多次用不同初始值執行演算法,關鍵損失函式的最小值,選擇損失函式最小化的初值。
3.3、歸一化
  由於樣本不同特徵的取值範圍不一樣,可能導致迭代很慢,為了減少特徵取值的影響,可以對特徵資料歸一化,也就是對於每個特徵x,求出它的平均值mean(x)、最大值max和最小值min,然後轉化為: [x-mean(x)]/(max-min)。

相關推薦

線性迴歸梯度下降演算法

一、線性迴歸問題   迴歸最簡單的定義是,給出一個點集D,用一個函式去擬合這個點集,並且使得點集與擬合函式間的誤差最小,如果這個函式曲線是一條直線,那就被稱為線性迴歸,如果曲線是一條二次曲線,就被稱為二次迴歸。   總的來說,迴歸的目的就是建立一個迴歸方程用

《機器學習實戰》學習筆記(四)之Logistic(上)基礎理論演算法推導、線性迴歸梯度下降演算法

轉載請註明作者和出處:http://blog.csdn.net/john_bh/ 執行平臺: Windows Python版本: Python3.6 IDE: Sublime text3 一、概述 Logistic迴歸是統計學習中的經典

斯坦福CS229機器學習課程筆記一:線性迴歸梯度下降演算法

機器學習三要素 機器學習的三要素為:模型、策略、演算法。 模型:就是所要學習的條件概率分佈或決策函式。線性迴歸模型 策略:按照什麼樣的準則學習或選擇最優的模型。最小化均方誤差,即所謂的 least-squares(在spss裡線性迴歸對應的模組就叫OLS即Ordinary Least Squares):

吳恩達機器學習課程筆記02——處理房價預測問題(梯度下降演算法

  建議記住的實用符號 符號 含義 m 樣本數目 x 輸入變數 y 輸出變數/目標變數

機器學習入門 線性迴歸梯度下降

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

線性迴歸梯度下降演算法與 tensorflow

舉個栗子 考慮一個二手房交易記錄資料集. 已知房屋面積,臥室數量和交易價格: 根據這個資料集,要求我們估算當前某個給定房屋價格. 我們應該怎麼做? 線性迴歸 迴歸就是根據已知資料來預測另一個數值型資料的目標值. 假設特徵和結果滿足線性關係: h(x

機器學習入門:線性迴歸梯度下降(附matlab程式碼)

 本文會講到: (1)線性迴歸的定義 (2)單變數線性迴歸 (3)cost function:評價線性迴歸是否擬合訓練集的方法 (4)梯度下降:解決線性迴歸的方法之一 (5)feature scaling:加快梯度下降執行速度的方法 (6)多變數線性迴歸 Linea

機器學習:單變數線性迴歸梯度下降

***************************************** 注:本系列部落格是博主學習Stanford大學 Andrew Ng 教授的《機器學習》課程筆記。博主深感學過課程後,不進行總結很容易遺忘,根據課程加上自己對不明白問題的補充遂有此係列部落格。

【機器學習線性迴歸梯度下降、最小二乘的幾何和概率解釋

線性迴歸 即線性擬合,給定N個樣本資料(x1,y1),(x2,y2)....(xN,yN)其中xi為輸入向量,yi表示目標值,即想要預測的值。採用曲線擬合方式,找到最佳的函式曲線來逼近原始資料。通過使得代價函式最小來決定函式引數值。 採用斯坦福大學公開課的

梯度下降與隨機梯度下降概念推導過程

        同這一張的梯度下降部分加起來,才是我們要講的如何求解多元線性迴歸.如果寫在一章中,內容過長,擔心有的同學會看不完,所以拆分成兩章.[壞笑]         上一章中有提到利用解析解求解多元線性迴歸,雖然看起來很方便,但是在解析解求解的過程中會涉及到矩陣求

邏輯迴歸梯度下降

引言 邏輯迴歸常用於預測疾病發生的概率,例如因變數是是否惡性腫瘤,自變數是腫瘤的大小、位置、硬度、患者性別、年齡、職業等等(很多文章裡舉了這個例子,但現代醫學發達,可以通過病理檢查,即獲取標本放到顯微鏡下觀察是否惡變來判斷);廣告界中也常用於預測點選率或者轉化

Machine Learning(Stanford)| 斯坦福大學機器學習筆記--第二週(1.多元線性迴歸多元線性迴歸梯度下降

一.Multivariate Linear regression(多元線性迴歸) 現在起將開始介紹一種新的更為有效的線性迴歸形式。這種形式適用於多個變數或者多特徵量的情況。 在之前學習過的線性迴歸中

第一個機器學習演算法線性迴歸梯度下降

# 第一個機器學習演算法:線性迴歸與梯度下降 ## 符號解釋 * $x^{(i)}$,$y^{(i)}$:某個訓練樣本 * $m$:樣本總數量 * $h_{\theta}$:假設函式 ## Linear regression(線性迴歸) ### 如何獲得一個線性迴歸模型? * 將**訓練資料**放入

線性迴歸梯度下降講解與程式碼

本文也是根據吳恩達機器學習課程作業的答案。 迴歸:預測值是連續的; 分類:預測值是離散的; 建模誤差:預測值與實際值之間的差距; 目標:選擇模型引數,使得建模誤差的平方和能夠最小,即代價函式最小; 代價函式:選擇平方誤差函式,是解決迴歸問題最常用的手段;代價函式是幫助我們選擇最優

【機器學習】梯度下降

一、導數 導數 就是曲線的斜率,是曲線變化快慢的一個反應。 二階導數 是斜率變化的反應,表現曲線的 凹凸性 y

Tensorflow環境下 線性迴歸梯度下降)的練手例項(完整原始碼+說明)

Tensorflow 入門篇-最小二乘法的線性迴歸演算法    本文將藉助Tensorflow來實現最小二乘法的線性迴歸演算法。    大體的思路:首先生成隨機紊亂的資料集,然後構建線性迴歸的Graph,最後在Session中迭代train器,得到擬合的引數w和b,最後畫出擬

機器學習--吳恩達(線性迴歸梯度下降,正規方程法)

本節課是對監督學習的講解,ng以自動駕駛為例,告訴我們汽車對方向的預測是連續值,故而是迴歸問題。 什麼是迴歸問題?(regression) 確定兩種或兩種以上變數相互依賴的定量關係的一種統計分析方法 迴歸與分類問題的不同 迴歸與分類都屬於預測問題,而回歸預測的結果是連續的值

斯坦福大學機器學習筆記——多變數的線性迴歸以及梯度下降法注意事項(內有程式碼)

在前面部落格中介紹了單變數線性迴歸的實現過程,本文將介紹多變數線性迴歸演算法。 兩者的對比如下: 1.資料方面的差異: 單變數線性迴歸資料: 多變數線性迴歸資料: 對於單變數線性迴歸來說,只有一個特徵(房子的大小),而對於多變數線性特徵迴歸特徵

【機器學習】【線性迴歸梯度下降的三種方式(BGD+SGD+MSGD)以及三種調優方法(加快收斂速度)

1.梯度下降演算法梯度下降演算法的核心思路和公式推導,可以詳見前面的文章:梯度下降演算法的核心思路和公式推導如果代價函式是凸函式,用梯度下降演算法一定可以求得最優解。2.梯度下降的三種方式在ML中,梯度下降有三種方式:1)批量梯度下降(Batch Gradient  Desc

線性迴歸梯度下降

線性迴歸(Linear Regression) 從這篇文章開始,主要介紹機器學習的一些列基本演算法,本文介紹線性迴歸問題,以及利用最小均方和梯度下降解決線性迴歸問題。 (以下內容是根據斯坦福大學ng教授的機器學習公開課總結的內容) 監督學習:即訓練資料中既包含了輸入資