1. 程式人生 > >斯坦福大學機器學習筆記——單變數的線性迴歸以及損失函式和梯度下降法(包含程式碼)

斯坦福大學機器學習筆記——單變數的線性迴歸以及損失函式和梯度下降法(包含程式碼)

迴歸問題:
所謂的迴歸問題就是給定的資料集,且每個資料集中的每個樣例都有其正確的答案,通過給定的資料集進行擬合,找到一條能夠最好代表該資料集的曲線,然後對於給定的一個樣本,能夠預測出該樣本的答案(對於迴歸問題來說,最終的輸出結果是一個連續的數值)。比如,房價預測問題,最終的輸出房價是一個連續的數值。迴歸問題是監督學習的一種。
分類問題:
與迴歸問題一樣,分類問題同屬於監督學習,與之不同的是,分類問題預測的結果輸出是離散的值,比如判斷一個人得的腫瘤是良性的還是惡性的,這就是0/1離散輸出問題。
對於一個迴歸問題來說,它的一般流程為:
迴歸問題的流程
其中,h代表擬合的曲線,也稱為學習演算法的解決方案或函式或假設


單變數的線性迴歸是迴歸問題的一種,它的表示式為:
hθ(x)=θ0+θ1x
由於它只有一個特徵/輸入變數x,同時它擬合的曲線是一條直線,所以該問題叫做單變數線性迴歸問題
以房價問題為例,來舉例說明迴歸問題。
這裡寫圖片描述
對於迴歸問題來說,假設的選擇是一個關鍵問題,在只有資料的情況下,如何確定h的形式?我們假設房價問題是線性迴歸,則θ0θ1,在房價問題這個例子中便是直線的斜率和在y軸上的截距。
但是我們如何選擇引數θ0θ1,來使得到的線性擬合更加準確呢!這裡需要引入一個代價函式(cost function),該函式的功能就是衡量了預測的結果與真正結果之間的差距。
在迴歸問題中我們一般選擇均方誤差代價函式(也叫作平方誤差代價函式)
,它是解決迴歸問題最常用的手段,該函式的表達形式如下:
J(θ0,θ1)=12mmi=1(hθ(xi)yi)2
訓練的目標就是使得J(θ0,θ1)最小。
對於代價函式的理解可以通過下面一個例子加深:
迴歸問題的整個過程即為:
這裡寫圖片描述
為了方便繪圖和理解,可以對上述問題進行簡化,上述各個形式轉化為:
這裡寫圖片描述
假設有三組資料,資料分別為(1,1),(2,2),(3,3)
θ1=0.5時,hθ(x)=0.5x,這三個點分別預測為:
(1,0.5),(2,1),(3,1.5)
則此時的損失函式的值為((1-0.5)^2+(1-2)^2+(3-1.5)^2)/(2*3)=0.583
θ1=1時,hθ
(x)=x
這三個點分別預測為:
(1,1),(2,2),(3,3)
則此時的損失函式的值為((1-1)^2+(2-2)^2+(3-3)^2)/(2*3)=0
以此類推,推出多個θ1值下的損失函式的值,然後繪製θ1J(θ1)的曲線,找到使得J(θ1)取得最小值時的θ1的值。繪製的曲線為:
這裡寫圖片描述
從中可以看出當θ1=1時損失函式最小,所以h的表達形式為:
hθ(x)=x
然後對於一個待測試的樣本,最終的預測值就可以通過確定的h表示式來獲得。這就是完整的迴歸問題。

上述的問題已經將其進行了簡化,若不是簡化形式,求解形式相同,只不過原來的θ1J(θ1)的曲線,轉化為θ0θ1J(θ1θ0)曲面,代價函式的圖形模樣變成了下圖所示:
這裡寫圖片描述
我們不希望通過上述方法,編個程式把這些點繪製出來,通過人工的方法將最低點找到。在低維的情況下還可以這麼做,但是在高維更多引數的情況下,顯然上述方法是不可行的。所以,可以使用梯度下降法來實現。

梯度下降法的思想是:開始隨機選擇一個引數的組合θ0θ1...,θn,計算代價函式,然後我們尋找下一個能讓代價函式下降最多的引數組合。我們持續這樣做,直到到達一個區域性最小值。由於我們沒有嘗試所有的引數組合,所以不能確定得到的結果是區域性最小值還是全域性最小值。
梯度下降法的數學定義如下:
這裡寫圖片描述
其中,α代表學習率(learning rate),它決定了沿著能讓代價函式下降程度最大方向的步長。
值得注意的是,θ0θ1是同時更新,也就是說:
這裡寫圖片描述
如左圖所示,為正確的更新過程,二者不同的地方在於,右圖中在求θ1的更新時,代價函式中的θ0是已經更新過的了,而左圖中的為將θ0θ1都求過偏導之後再進行更新,代價函式中的θ0θ1都是上一代中的值,與本次迭代更新無關。
下面舉例說明梯度下降的過程:
這裡寫圖片描述
例如上圖代表兩座山,你現在所處的位置為最上面的那一點,你想以最快的速度達到山下,你環顧360度尋找能快速下山的方向,這個過程對應於求偏導的過程,你每次移動一步,移動的步長對應於α,當你走完這一步,然後接著環顧360度,尋求最快下山的方法,然後在走出一步,重複這個過程,直到走到山下,走到山下對應於找到了區域性最小值。

下面討論一下步長α和偏導對梯度下降法的影響:
注意:下圖中討論,都是在θ0=0的簡單形式下討論的。
步長對梯度下降法的影響:
1. 當步長太小時,每次走的步子很小,導致到達最小值的速度會很慢,也就是收斂速度慢,但是能保證收斂到最小值點。
2. 當步長太大時,梯度下降法可能會越過最小值點,甚至可能無法收斂。
兩種情況的示意圖如下:
步長太小時步長太大時
梯度對梯度下降法的影響:
以下圖為例:
這裡寫圖片描述
粉紅色的點為初始點,在此點求出導數,然後乘以學習率,更新引數θ1,到達第二個點,然後再在第二個點求導數,從斜率上明顯可以看出,第二個點的斜率明顯比第一個點的斜率低,也就是說雖然學習率固定,但是這一次更新的步長比上一次要小,以此類推,我們能夠得出一個結論,當接近區域性最低時,導數值會自動變得越來越小,所以梯度下降法會自動採用較小的幅度,這就是梯度下降的做法。所以實際上沒有必要再另外減小α

下面我們來討論一下線性迴歸的梯度下降法:
梯度下降演算法和線性迴歸演算法如下圖所示:
這裡寫圖片描述
我們想用梯度下降演算法來最小化損失函式,關鍵問題在於求導,即:
這裡寫圖片描述
當j=0時:

相關推薦

斯坦福大學機器學習筆記——變數線性迴歸以及損失函式梯度下降包含程式碼

迴歸問題: 所謂的迴歸問題就是給定的資料集,且每個資料集中的每個樣例都有其正確的答案,通過給定的資料集進行擬合,找到一條能夠最好代表該資料集的曲線,然後對於給定的一個樣本,能夠預測出該樣本的答案(對於迴歸問題來說,最終的輸出結果是一個連續的數值)。比如

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

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

吳恩達機器學習變數線性迴歸實現部分

C++實現 程式碼實現 “linear_regression.h” //單變數線性迴歸模型 struct elem_var1 { double x, y; //訓練集元素資料:自變數、因變數 }; class var1_lin_reg { p

吳恩達機器學習變數線性迴歸理論部分

理論部分 1.方程形式 在進行資料處理過程中,有時資料影象可擬合成單變數線性函式,即 2.如何擬合 此時,我們雖知道擬合函式的形式,但如何擬合仍是個問題,怎樣擬合可以最接近實際資料情況呢? 最小二乘法 此時我們引入代價函式這個概念 代價函式 接下來我們來分析如何

機器學習(一)——變數線性迴歸

關鍵詞:線性迴歸、監督學習、模型、假設函式、代價函式、梯度遞降、學習率、訓練集 一.前言 前段時間在學習 Andrew Ng 的《機器學習課程》,個人認為這是一個非常適合新手學習機器學習的課程(即使你對線性代數,微積分、概率論等已經忘得差不多了)。這裡對

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

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

機器學習變數線性迴歸Linear Regression with One Variable

1. 模型表達(Model Representation) 我們的第一個學習演算法是線性迴歸演算法,讓我們通過一個例子來開始。這個例子用來預測住房價格,我們使用一個數據集,該資料集包含俄勒岡州波特蘭市的住房價格。在這裡,我要根據不同房屋尺寸所售出的價格,畫出我的資料集: 我們來看這個資料集,如果你有一個朋

吳恩達Coursera機器學習課程筆記-變數線性迴歸

The Hypothesis Function we will be trying out various values of θ0 and θ1 to try to find values which provide the best possibl

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

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

斯坦福大學機器學習筆記——異常檢測演算法高斯分佈、多元高斯分佈、異常檢測演算法

異常檢測問題介紹: 異常檢測演算法主要用於無監督學習問題,但從某種角度看它又類似於一種有監督學習的問題,下面我們從一個例子中簡單介紹一下什麼是異常檢測問題。 比如我們有一個飛機引擎製造商,對於一個新造出的飛機引擎我們想判斷這個引擎是不是異常的。 假如我們有

斯坦福大學機器學習筆記——聚類k-均值聚類演算法、損失函式、初始化、聚類數目的選擇

上面的部落格的演算法都是有監督學習的演算法,即對於每個資料我們都有該資料對應的標籤,資料集的形式如下: 而今天我們學習的演算法是一種無監督學習的演算法——聚類,該演算法中的每個資料沒有標籤,資料集的形式如下: K-均值聚類 k-均值聚類是一種最常見

斯坦福大學機器學習筆記——推薦系統協同過濾、低秩分解、推薦系統

這個部落格讓我們來討論一下推薦系統,首先我們來討論一下為什麼學習推薦系統: 1. 推薦系統是機器學習中的一個重要應用,它已經用於很多企業中,比如淘寶、今日頭條、亞馬遜等。它們會根據你的瀏覽記錄,當你再

Machine LearningStanford| 斯坦福大學機器學習筆記--第一週1.監督學習與無監督學習的介紹

以上例子中,總共有兩個特徵,即病人年齡和腫瘤大小。在別的ML問題中,經常會用到更多特徵,別人在研究這個問題時, 通常使用如下這些特徵:比如腫瘤的厚度,腫瘤細胞大小和形狀的一致性等等。 真正對於一些學習問題,用到的不只是三五個特徵,經常要用到無數多個特徵,非常多的屬性。所以,你的學習演算法要利用很多的屬性或特徵

斯坦福大學機器學習筆記——正則化的邏輯迴歸模型

在上面部落格中我們討論了正則化的線性迴歸模型,下面我們來討論一下正則化的邏輯迴歸模型。 前面我們講述了兩種常用於邏輯迴歸的方法: 基於梯度下降法的邏輯迴歸模型 基於高階優化的邏輯迴歸模型 基於

斯坦福大學機器學習筆記——特徵多項式迴歸以及正規方程

我們可以舉一個例子來引入多項式迴歸: 比如我們之前遇到的房價問題,對於房價的影響我們假設有兩個特徵,一個是房子的寬度x1,另外一個是房子的長度x2,這針對房價的估測我們可以建立下面形式的假設: hθ

斯坦福大學機器學習筆記——邏輯迴歸、高階優化以及多分類問題

shi先簡單說一下邏輯迴歸,其實會有很多人誤解,會將邏輯迴歸當成迴歸演算法,其實邏輯迴歸就是我們所說的分類問題,所謂的邏輯,一般我們說的邏輯就是邏輯0或者邏輯1,所以可以藉此理解。但是邏輯迴歸不僅僅只包括兩分類問題,它還包括多分類問題。 那麼能否使用線性迴歸的

斯坦福大學機器學習筆記——機器學習系統設計誤差分析、查全率查準率、F1值

這次部落格我們主要討論機器學習系統設計的主要問題,以及怎樣巧妙的構建一個複雜的機器學習系統。 我們先用一個例子引入機器學習系統的設計: 以一個垃圾郵件分類器演算法為例: 對於該問題,我們首先要做的是怎樣選擇並且表達特徵向量x。我們可以選擇100個詞所構

吳恩達機器學習之多變數線性迴歸實現部分

C++實現梯度下降法 “linear_regression.h” //多變數線性迴歸模型 struct elem_var2 { double y; double* x; //用陣列傳入自變數資料(x[0]=1,便於之後的計算) }; class var2

吳恩達機器學習之多變數線性迴歸理論部分

本部落格主要參考此部落格:戀雨心 一.Multiple Features — 多維特徵 相對於單變數線性迴歸模型,多變數線性迴歸模型適用於處理多個變數/特徵。 對比: 以之前我們介紹的單變數線性迴歸模型為例: 用房屋面積x預測房子價格y。 現在我們對房價模型增加更多的特徵,例如房間

機器學習筆記之四——線性迴歸原理以及推導

一元線性迴歸:   對於樣本[(x1,y1),(x2,y2),……(xn,yn)],xi為特徵,yi為標籤。(字幕i代表下標)   假定y與x有: