一、線性回歸問題
回歸最簡單的定義是,給出乙個點集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)。
線性回歸 梯度下降
線性回歸演算法屬於監督學習的一種,主要用於模型為連續函式的數值 過程總得來說就是初步建模後,通過訓練集合確定模型引數,得到最終 函式,此時輸入自變數即可得到 值。1 初步建模。確定假設函式 h x 最終 用 2 建立價值函式 j 也叫目標函式 損失函式等,求引數 用 3 求引數 對價值函式求偏導 即...
線性回歸梯度下降
梯度下降 一種最優化演算法,就是沿著函式的梯度方向尋找函式的最小值 線性回歸模型 最終的目標就是利用 梯度下降法 求出使 誤差函式 最小的線性函式的系數值 梯度下降演算法有兩種 1.批量梯度下降 batch gradient descent 2.隨機梯度下降 stochastic gradient ...
線性回歸 梯度下降
利用回歸方程對乙個或多個自變數和因變數之間進行建模的分析方式損失 計算損失用最小二乘法。優化。優化有兩種方式。一種是正規方程解法通常只適用於極少量資料,一般不會用 二是梯度下降的方式通常使用梯度下降 梯度下降的簡介。梯度就是倒導數 切線。沿著切線的方向下降的最快。梯度下降有兩個引數,起始點和學習率 ...