日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

机器学习之单变量线性回归(Linear Regression with One Variable)

發(fā)布時(shí)間:2025/3/21 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习之单变量线性回归(Linear Regression with One Variable) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

機(jī)器學(xué)習(xí)之單變量線性回歸(Linear Regression with One Variable)

1. 模型表達(dá)(Model Representation)

我們的第一個(gè)學(xué)習(xí)算法是線性回歸算法,讓我們通過(guò)一個(gè)例子來(lái)開(kāi)始。這個(gè)例子用來(lái)預(yù)測(cè)住房?jī)r(jià)格,我們使用一個(gè)數(shù)據(jù)集,該數(shù)據(jù)集包含俄勒岡州波特蘭市的住房?jī)r(jià)格。在這里,我要根據(jù)不同房屋尺寸所售出的價(jià)格,畫(huà)出我的數(shù)據(jù)集:

我們來(lái)看這個(gè)數(shù)據(jù)集,如果你有一個(gè)朋友正想出售自己的房子,如果你朋友的房子是1250平方尺大小,你要告訴他們這房子能賣(mài)多少錢(qián)。 那么,你可以做的一件事就是構(gòu)建一個(gè)模型,也許是條直線。從這個(gè)數(shù)據(jù)模型上來(lái)看,也許你可以告訴你的朋友,他大概能以220000美元左右的價(jià)格賣(mài)掉這個(gè)房子,顯然這就是監(jiān)督學(xué)習(xí)算法的一個(gè)例子。

在上一篇博文Introduction to Machine Learning,我們已經(jīng)了解到之所以這個(gè)例子被稱(chēng)作 Supervised Learning ,是因?yàn)閷?duì)于每個(gè)數(shù)據(jù)來(lái)說(shuō),我們給出了“正確的答案”。而且,更具體來(lái)說(shuō),這是一個(gè)回歸問(wèn)題。回歸一詞指的是我們根據(jù)之前的數(shù)據(jù)預(yù)測(cè)出一個(gè)準(zhǔn)確的輸出值。對(duì)于這個(gè)例子就是價(jià)格。

同時(shí),還有另一種最常見(jiàn)的 Supervised Learning 的方式叫做分類(lèi)問(wèn)題。更進(jìn)一步來(lái)說(shuō),在 Supervised Learning 中我們有一個(gè)數(shù)據(jù)集,這個(gè)數(shù)據(jù)集被稱(chēng)訓(xùn)練集。因此對(duì)于房?jī)r(jià)的例子,我們有一個(gè)包含不同房屋價(jià)格的訓(xùn)練集,我們的任務(wù)就是從這個(gè)訓(xùn)練集中學(xué)習(xí)并預(yù)測(cè)房屋價(jià)格

現(xiàn)在我們給出經(jīng)常使用的一些符號(hào)定義,如下:

用 m 來(lái)表示訓(xùn)練樣本的數(shù)目,因此,在這個(gè)數(shù)據(jù)集中如果表中有47行,那么我們就有47組訓(xùn)練樣本,m就等于47。


用小寫(xiě)字母 x 來(lái)表示輸入變量,往往也被稱(chēng)為特征量,就是用 x 表示輸入的特征,并且我們將用 y 來(lái)表示輸出變量或者目標(biāo)變量,也就是我的預(yù)測(cè)結(jié)果,也就是上面表格的第二列。

在這里我們要使用 (x, y) 來(lái)表示一個(gè)訓(xùn)練樣本,因此,在這個(gè)表格中的單獨(dú)的一行對(duì)應(yīng)于一個(gè)訓(xùn)??練樣本。

為了表示某個(gè)特定的訓(xùn)練樣本,我們將使用x上標(biāo)(i)與y上標(biāo)(i)來(lái)表示,并且用這個(gè)來(lái)表示第 i 個(gè)訓(xùn)練樣本,所以上標(biāo)為 i ,注意這不是求冪運(yùn)算,這個(gè)(x(i), y(i)) 括號(hào)里的上標(biāo) i 只是一個(gè)索引,表示我的訓(xùn)練集里的第 i 行。

我們的房屋價(jià)格預(yù)測(cè)就是一個(gè)監(jiān)督學(xué)習(xí)算法的工作方式,如下圖:

我們可以看到這里有我們的訓(xùn)練集里房屋價(jià)格,我們把它喂給我們的學(xué)習(xí)算法,進(jìn)而學(xué)習(xí)得到一個(gè)函數(shù),按照慣例,通常表示為小寫(xiě) h,h 代表 hypothesis(假設(shè)), 在此處,h 表示一個(gè)函數(shù),其輸入是房屋尺寸大小。因此 h 根據(jù)輸入的 x 值來(lái)得出 y 值,y 值對(duì)應(yīng)房子的價(jià)格。因此,h 是一個(gè)從 x到 y 的函數(shù)映射。

大家經(jīng)常會(huì)有這樣的疑問(wèn):為什么這個(gè)函數(shù)被稱(chēng)作假設(shè)(hypothesis)?你們中有些人可能知道 hypothesis 的意思,從字典或者其它什么方式可以查到。其實(shí)在機(jī)器學(xué)習(xí)中,這是一個(gè)在早期被用于機(jī)器學(xué)習(xí)的名稱(chēng),它有點(diǎn)繞口,對(duì)某些函數(shù)來(lái)說(shuō)這可能不是一個(gè)很恰當(dāng)?shù)拿帧@?#xff0c;對(duì)表示從房屋的大小到價(jià)格的函數(shù)映射,我認(rèn)為這個(gè)詞 "hypothesis" 就可能不是最好的名稱(chēng)。但是這是人們?cè)跈C(jī)器學(xué)習(xí)中使用的標(biāo)準(zhǔn)術(shù)語(yǔ),所以我們不用太糾結(jié)人們?yōu)槭裁催@么叫它。

小結(jié):當(dāng)解決房?jī)r(jià)預(yù)測(cè)問(wèn)題時(shí),我們實(shí)際上是要將訓(xùn)練集“喂”給我們的學(xué)習(xí)算法,進(jìn)而學(xué)習(xí)得一個(gè)假設(shè) h,然后將我們要預(yù)測(cè)的房屋的尺寸作為輸入變量輸入給 h,預(yù)測(cè)出該房屋的交易價(jià)格作為輸出變量輸出為結(jié)果。

當(dāng)我們?cè)谠O(shè)計(jì)學(xué)習(xí)算法的時(shí)候,需要去思考的是怎樣得到這個(gè)假設(shè) h。例如,對(duì)于我們的房?jī)r(jià)預(yù)測(cè)問(wèn)題,我們?cè)撊绾伪磉_(dá) h ? 一種可能的表達(dá)方式為:

因?yàn)橹缓幸粋€(gè)特征/輸入變量,因此這樣的問(wèn)題叫作單變量線性回歸問(wèn)題。

那么為什么是一個(gè)線性函數(shù)呢? 實(shí)際上,有時(shí)候我們會(huì)有更復(fù)雜的函數(shù),也許是非線性函數(shù),但是由于線性方程是簡(jiǎn)單的形式,我們將先從線性方程的例子入手。當(dāng)然,最終我們將會(huì)建立更復(fù)雜的模型以及更復(fù)雜的學(xué)習(xí)算法。

2. 代價(jià)函數(shù)(Cost Function)

接下來(lái)我們將定義代價(jià)函數(shù)的概念,這將有助于我們弄明白怎樣將最有可能的直線與我們的數(shù)據(jù)相擬合。

在線性回歸中我們有一個(gè)像上圖一樣的訓(xùn)練集 記住 m 代表了訓(xùn)練樣本的數(shù)量,例如,此處 m = 47 。

而我們的假設(shè)函數(shù)(也就是用來(lái)進(jìn)行預(yù)測(cè)的函數(shù)),線性函數(shù)形式也已在上圖中表示出來(lái)了。

接下來(lái)我們引入一些術(shù)語(yǔ),諸如 θ0 和 θ1 之類(lèi)這些 θi 我們通常稱(chēng)其為模型參數(shù)。那么我們?nèi)绾芜x擇這兩個(gè)參數(shù)值 θ0 和 θ1 呢?選擇不同的參數(shù)?? θ0 和 θ1 我們會(huì)得到不同的假設(shè)函數(shù)。例如下圖:

在線性回歸中,我們有一個(gè)訓(xùn)練集,我們要做的就是得出 θ0 和 θ1 這兩個(gè)參數(shù)的值,來(lái)讓假設(shè)函數(shù)表示的直線盡量地與這些數(shù)據(jù)點(diǎn)很好的擬合。那么我們?nèi)绾蔚贸?θ0 和 θ1 的值,來(lái)使它很好地?cái)M合數(shù)據(jù)的呢?

我們的想法是,我們要選擇能使 h(x) 輸入 x 時(shí)我們預(yù)測(cè)的值最接近該樣本對(duì)應(yīng)的 y 值的參數(shù) θ0 和 θ1 。在我們的訓(xùn)練集中有一定數(shù)量的樣本,我們知道 x 表示賣(mài)出哪所房子,并且知道這所房子的實(shí)際價(jià)格,所以,我們要選擇參數(shù)值,盡量使得在訓(xùn)練集中給出的 x 值,能準(zhǔn)確地預(yù)測(cè) y 的值。

讓我們給出標(biāo)準(zhǔn)的定義,在線性回歸中,我們要解決的是一個(gè)最小化問(wèn)題

我們選擇的參數(shù) θ0 和 θ1 決定了我們得到的直線相對(duì)于我們的訓(xùn)練集的準(zhǔn)確程度,模型所預(yù)測(cè)的值與訓(xùn)練集中實(shí)際值之間的差距(下圖中藍(lán)線所指)就是建模誤差(modeling error)。

我們的目標(biāo)便是選擇出可以使得建模誤差的平方和能夠最小的模型參數(shù)。即使得代價(jià)函數(shù):

最小。我們繪制一個(gè)等高線圖,三個(gè)坐標(biāo)分別為 θ0 和 θ1 和J(θ0 1):

可以看出在三維空間中存在一個(gè)使得J(θ0,θ1)最小的點(diǎn)。

3. 梯度下降(Gradient Descent)

我們已經(jīng)定義了代價(jià)函數(shù),現(xiàn)在我們來(lái)介紹梯度下降算法,該算法可以將代價(jià)函數(shù) J 最小化。梯度下降是很常用的算法,它不僅被用在線性回歸上,并且被廣泛的應(yīng)用于機(jī)器學(xué)習(xí)的眾多領(lǐng)域中,之后為了解決其他線性回歸問(wèn)題,我們也將使用梯度下降法來(lái)最小化其他函數(shù)。

在這里,我們有一個(gè)函數(shù) J(θ0 1) ,也許這是一個(gè)線性回歸的代價(jià)函數(shù),也許是一些其他函數(shù),要使其最小化,我們需要用一個(gè)算法來(lái)最小化函數(shù)??? J(θ0 1),事實(shí)證明,梯度下降算法可應(yīng)用于多種多樣的函數(shù)求解,所以想象一下如果你有一個(gè)函數(shù)J(θ0, θ1, θ2, ...,θn ),你希望可以通過(guò)最小化 θ0 到 θn 來(lái)最小化此代價(jià)函數(shù)J(θ0 到θn),用n個(gè)θ是為了證明梯度下降算法可以解決更一般的問(wèn)題。但為了簡(jiǎn)潔起見(jiàn),為了簡(jiǎn)化符號(hào),在接下來(lái)的討論中,我們只用兩個(gè)參數(shù)。

下面就是關(guān)于梯度下降的構(gòu)想。首先我們要做的是對(duì) θ0? 和 θ1 進(jìn)行初始化。實(shí)際上,它們到底是什么其實(shí)并不重要,但通常的選擇是將 θ0 設(shè)為0
,同時(shí)也將 θ1 也設(shè)為0,即將它們都初始化為0。

我們?cè)谔荻认陆邓惴ㄖ幸龅木褪遣煌5匾稽c(diǎn)點(diǎn)地改變 θ0 和 θ1 ,試圖通過(guò)這種改變使得 J(θ0 1) 變小,直到我們找到 J(θ0 1) 的最小值。或許是局部最小值。

讓我們通過(guò)一些圖片來(lái)看看梯度下降法是如何工作的,我們?cè)谠噲D讓 J(θ0 1)? 最小,注意坐標(biāo)軸 θ0 和 θ1 在水平軸上,而函數(shù) J(θ0 1) 在垂直坐標(biāo)軸上,圖形表面高度即是 J(θ0 1) 的值。我們希望最小化這個(gè)函數(shù),因此我們從 θ0 和 θ1 的某個(gè)值出發(fā)。所以想象一下,對(duì) θ0 和 θ1 賦以某個(gè)初值,也就是對(duì)應(yīng)于從這個(gè)函數(shù)表面上的某個(gè)起始點(diǎn)出發(fā),因此不管 θ0 和 θ1 的取值是多少,我將它們初始化為0。但有時(shí)你也可把它初始化為其他值。

現(xiàn)在我希望大家把這個(gè)圖像想象為一座山。想像類(lèi)似這樣的景色,公園中有兩座山,想象一下你正站立在山的這一點(diǎn)上,站立在你想象的公園這座紅色山上。在梯度下降算法中,我們要做的就是旋轉(zhuǎn)360度,看看我們的周?chē)?#xff0c;并問(wèn)自己,如果我想要下山,如果我想盡快走下山,我們需要朝什么方向?

如果我們站在山坡上的某一點(diǎn),你看一下周?chē)??,你會(huì)發(fā)現(xiàn)最佳的下山方向大約是那個(gè)方向。好的,現(xiàn)在你在山上的新起點(diǎn)上,你再看看周?chē)?#xff0c;然后再一次想想我應(yīng)該從什么方向邁著小碎步下山? 然后你按照自己的判斷又邁出一步,往那個(gè)方向走了一步。然后重復(fù)上面的步驟,從這個(gè)新的點(diǎn),你環(huán)顧四周并決定從什么方向?qū)?huì)最快下山,然后又邁進(jìn)了一小步,又是一小步…并依此類(lèi)推,直到你接近局部最低點(diǎn)的位置。

此外這種下降有一個(gè)有趣的特點(diǎn),不同的起始點(diǎn)開(kāi)始進(jìn)行梯度下降算法,你會(huì)得到一個(gè)非常不同的局部最優(yōu)解,這就是梯度下降算法的一個(gè)特點(diǎn)。

下圖是梯度下降算法的定義:


注意,在梯度下降算法中,我們需要同時(shí)更新 θ0 和 θ1。

如果學(xué)習(xí)速率太小,只能這樣像小寶寶一樣一點(diǎn)點(diǎn)地挪動(dòng),去努力接近最低點(diǎn),這樣就需要很多步才能到達(dá)最低點(diǎn)。

如果學(xué)習(xí)速率太大,那么梯度下降法可能會(huì)越過(guò)最低點(diǎn),甚至可能無(wú)法收斂。實(shí)際上,會(huì)離最低點(diǎn)越來(lái)越遠(yuǎn),因此,如果α太大,會(huì)導(dǎo)致無(wú)法收斂,甚至發(fā)散。

如果你的參數(shù)已經(jīng)處于局部最低點(diǎn),那么梯度下降法更新其實(shí)什么都沒(méi)做(求導(dǎo)為0),它不會(huì)改變參數(shù)的值,這也正是你想要的,因?yàn)樗鼓愕慕馐冀K保持在局部最優(yōu)點(diǎn),這也解釋了為什么即使學(xué)習(xí)速率 α 保持不變時(shí),梯度下降也可以收斂到局部最低點(diǎn)

梯度下降一步后,新的導(dǎo)數(shù)會(huì)變小一點(diǎn)點(diǎn)。隨著梯度下降法的運(yùn)行,你移動(dòng)的幅度會(huì)自動(dòng)變得越來(lái)越小,直到最終移動(dòng)幅度非常小,你會(huì)發(fā)現(xiàn)已經(jīng)收斂到局部極小值。

在梯度下降法中,當(dāng)我們接近局部最低點(diǎn)時(shí),梯度下降法會(huì)自動(dòng)采取更小的幅度。這是因?yàn)楫?dāng)我們接近局部最低點(diǎn)時(shí)(很顯然在局部最低時(shí)導(dǎo)數(shù)等于零 ),導(dǎo)數(shù)值會(huì)自動(dòng)變得越來(lái)越小,所以梯度下降將自動(dòng)采取較小的幅度,這就是梯度下降的做法,所以實(shí)際上沒(méi)有必要再另外減小α。


實(shí)際上,用于線性回歸的代價(jià)函數(shù)總是呈現(xiàn)一個(gè)弓形的樣子,這個(gè)函數(shù)的專(zhuān)業(yè)術(shù)語(yǔ)是凸函數(shù)。這個(gè)函數(shù)沒(méi)有任何局部最優(yōu)解,只有一個(gè)全局最優(yōu)解。

實(shí)際上,我們剛剛介紹的梯度下降,是“批量梯度下降”,指的是,在梯度下降的每一步中我們都用到了所有的訓(xùn)??練樣本。在梯度下降中,在計(jì)算微分求導(dǎo)項(xiàng)時(shí),我們需要進(jìn)行求和運(yùn)算,所以在每一個(gè)單獨(dú)的梯度下降中,我們最終都要計(jì)算這樣一項(xiàng),這項(xiàng)需要對(duì)所有m個(gè)訓(xùn)練樣本求和。

而事實(shí)上,也有其他類(lèi)型的梯度下降法不是這種"批量"型的,不考慮整個(gè)的訓(xùn)練集,而是每次只關(guān)注訓(xùn)練集中的一些小的子集。

總結(jié)

以上是生活随笔為你收集整理的机器学习之单变量线性回归(Linear Regression with One Variable)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。