理論加實(shí)操快速掌握機(jī)器學(xué)習(xí)中幾類回歸算法
一周前學(xué)姐的一篇干貨講解了“機(jī)器學(xué)習(xí)初學(xué)者要掌握哪些知識(shí)點(diǎn)”通過簡(jiǎn)單的例子,解釋了比較復(fù)雜的概念,便于大家理解掌握。
?
理解了概念之后我們就需要學(xué)習(xí)一下機(jī)器學(xué)習(xí)中的幾類算法,今天講解的是回歸算法,為了方便同學(xué)們的理解采用了理論加python代碼的方式,畢竟初學(xué)者的難處學(xué)姐有切身體會(huì)。
?
1.線性回歸
?

線性回歸是一種統(tǒng)計(jì)方法,用來模擬輸入特征和輸出之間的關(guān)系。輸入特征稱為自變量,輸出稱為因變量。目的是通過將輸入特征與其最優(yōu)系數(shù)相乘來預(yù)測(cè)輸入特征的輸出值。
?
線性回歸實(shí)際應(yīng)用案例:
?
(1)預(yù)測(cè)產(chǎn)品銷量。
(2)預(yù)測(cè)經(jīng)濟(jì)增長(zhǎng)。
(3)預(yù)測(cè)石油價(jià)格。
(4)預(yù)測(cè)新車的排放量。
(5) GPA對(duì)大學(xué)錄取的影響。
?
線性回歸有兩種類型:
1.簡(jiǎn)單線性回歸
2.多元線性回歸
?
1.1 簡(jiǎn)單線性回歸:
?
在簡(jiǎn)單線性回歸中,我們僅根據(jù)一個(gè)輸入特征來預(yù)測(cè)輸出/因變量。簡(jiǎn)單線性回歸由下式給出:
?

下面使用Python中的sklearn庫來實(shí)現(xiàn)簡(jiǎn)單的線性回歸。
?
實(shí)現(xiàn)思路及步驟:
?
a. 導(dǎo)入所需庫:
?
因?yàn)樾枰鞣N庫來進(jìn)行計(jì)算,所以要導(dǎo)入庫.

b. 讀取CSV文件
在本例中,我們使用的是車輛模型數(shù)據(jù)集——請(qǐng)查看Softlayer IBM上的數(shù)據(jù)集(數(shù)據(jù)集鏈接在文章末尾)。
?
檢查數(shù)據(jù)集的前五行
?

c.選擇在預(yù)測(cè)值時(shí)要考慮的特征:
?
我們的目標(biāo)是根據(jù)數(shù)據(jù)集中“發(fā)動(dòng)機(jī)尺寸”的值預(yù)測(cè)“二氧化碳排放量”的值。

d. 繪制數(shù)據(jù):
?
用散點(diǎn)圖可視化數(shù)據(jù).

e. 將數(shù)據(jù)分為訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù):
?
為了檢查模型的準(zhǔn)確性,把數(shù)據(jù)分成訓(xùn)練和測(cè)試數(shù)據(jù)集。然后使用訓(xùn)練數(shù)據(jù)來訓(xùn)練模型,使用測(cè)試數(shù)據(jù)集檢查模型的準(zhǔn)確性。

f. 訓(xùn)練模型:
?
下圖代碼是訓(xùn)練模型并找到最佳擬合回歸線的系數(shù)
?

G.繪制最佳擬合線:
?
根據(jù)系數(shù),我們可以為我們的數(shù)據(jù)集繪制最佳擬合線。
?

h.預(yù)測(cè)函數(shù):
?
為測(cè)試數(shù)據(jù)集使用預(yù)測(cè)函數(shù).

i. 預(yù)測(cè)二氧化碳排放量:
?
基于回歸線預(yù)測(cè)二氧化碳排放值。
?

?
j. 檢查測(cè)試數(shù)據(jù)的準(zhǔn)確性:
通過實(shí)際值與數(shù)據(jù)集中的預(yù)測(cè)值進(jìn)行比較來檢查模型的準(zhǔn)確性。
?

執(zhí)行代碼匯總:
?
1.2 多元線性回歸:
?
簡(jiǎn)單的線性回歸只能用一個(gè)輸入特征來預(yù)測(cè)輸出特征的值。但在多元線性回歸中,可以基于多個(gè)輸入特征來預(yù)測(cè)輸出。
多元線性回歸的公式:

實(shí)現(xiàn)思路及步驟:
?
a. 導(dǎo)入庫:

b讀取CSV文件:

c. 定義X and Y:
?
X存儲(chǔ)輸入特征,Y存儲(chǔ)輸出特征.

d. 將數(shù)據(jù)劃分為測(cè)試和訓(xùn)練數(shù)據(jù)集:
?
在訓(xùn)練中使用 80% 的數(shù)據(jù),在測(cè)試中使用 20% 的數(shù)據(jù).

e. 訓(xùn)練模型:
?
用80%的數(shù)據(jù)訓(xùn)練模型.

f. 求得輸入特征系數(shù):
?
我們要知道哪個(gè)特征對(duì)輸出變量的影響更顯著。為此,我們print系數(shù)值。
?
注意,負(fù)系數(shù)意味著它對(duì)輸出有相反的影響。如果該特征的值增加,則輸出值減少。

?
g. 預(yù)測(cè)值:

?
h. 模型的準(zhǔn)確度:

?
這里使用相同的數(shù)據(jù)集進(jìn)行簡(jiǎn)單和多變量線性回歸。我們可以看到,多元線性回歸的準(zhǔn)確度遠(yuǎn)遠(yuǎn)好于簡(jiǎn)單線性回歸的準(zhǔn)確度。
執(zhí)行代碼匯總:
?
?
1.3 多項(xiàng)式回歸:

有時(shí),數(shù)據(jù)不僅僅遵循線性趨勢(shì),或遵循多項(xiàng)式趨勢(shì)。這時(shí)我們可以使用多項(xiàng)式回歸。
在深入研究它的實(shí)現(xiàn)之前,我們需要知道一些主要多項(xiàng)式數(shù)據(jù)的圖形是怎樣的。
多項(xiàng)式函數(shù)及其圖形:
?
a. Y=X的圖形:

?
b. Y = X2的圖形:

?
c. Y = X3的圖形:

?
d. 多個(gè)多項(xiàng)式圖: Y = X3+X2+X:

上圖中紅點(diǎn)顯示了Y=X3+X2+X的圖形,藍(lán)點(diǎn)顯示了Y = X3的圖形??芍?,最突出的冪會(huì)影響圖形的形狀。
?
多項(xiàng)式回歸公式如下:

在之前的回歸模型中,我們使用了sci-kit學(xué)習(xí)庫來實(shí)現(xiàn)?,F(xiàn)在,我們將使用正規(guī)方程來實(shí)現(xiàn)。
?
也可以使用scikit-learn來實(shí)現(xiàn)多項(xiàng)式回歸,但是別的方法會(huì)讓我們了解它是如何工作的。
?
等式如下:

上面的等式中:
?
θ: hypothesis parameters that define it the best.
?
X: input feature value of each instance.
?
Y: Output value of each instance.
?
?
1.3.1 多項(xiàng)式回歸的假設(shè)函數(shù)

標(biāo)準(zhǔn)方程中的主矩陣:

實(shí)現(xiàn)思路及步驟:
?
a. 導(dǎo)入庫:

b.生成數(shù)據(jù)點(diǎn):
?
生成一個(gè)數(shù)據(jù)集來實(shí)現(xiàn)多項(xiàng)式回歸.

c. 初始化x,x2,x3向量:
?
取x的最大冪為3,X矩陣將有X、X2、X3。
?

?
d. X矩陣的第1列:
?
主矩陣X的第一列始終為1,因?yàn)樗4媪薭eta_0的系數(shù).

e. 形成完整的X矩陣:
?
查看開始時(shí)的矩陣X,通過附加向量來創(chuàng)建:
?

?
f. 矩陣轉(zhuǎn)置:
?
找到矩陣的轉(zhuǎn)置,逐步計(jì)算theta的值

?
g. 矩陣乘法:
?
找到轉(zhuǎn)置后,將其與原始矩陣相乘。使用正規(guī)方程來實(shí)現(xiàn)它時(shí),必須遵循規(guī)則。

h. 矩陣的逆矩陣:
?
查找矩陣的逆矩陣并將其存儲(chǔ)在temp1中.

?
i. 矩陣乘法:
?
找到轉(zhuǎn)置的X和Y向量的乘法將其存儲(chǔ)在temp2變量中.

j. 系數(shù)值:
?
要找到系數(shù)值,我們需要將 temp1 和 temp2 相乘,參考正規(guī)方程公式。

?
k. 將系數(shù)存儲(chǔ)在變量中:
?
將這些系數(shù)值存儲(chǔ)在不同的變量中:

l. 用曲線繪制數(shù)據(jù):
?
用回歸曲線繪制數(shù)據(jù):

m. 預(yù)測(cè)函數(shù):
?
使用回歸曲線來預(yù)測(cè)輸出

?
n. 誤差函數(shù):
?
使用均方誤差函數(shù)計(jì)算誤差:

?
o. 計(jì)算誤差:
?

執(zhí)行代碼匯總:
?
?
1.4 指數(shù)回歸:

?
指數(shù)增長(zhǎng)的例子:
?
1.培養(yǎng)物中的微生物。
?
2.食物變質(zhì)。
?
3.人口。
?
4.復(fù)利。
?
5.大流行(如Covid-19)。
?
6.埃博拉疫情。
?
7.入侵物種。
?
8.火災(zāi)。
?
9.癌細(xì)胞。
?
10.智能手機(jī)的使用和銷售。
?
指數(shù)回歸公式:

?
這種情況下使用scikit-learn庫來查找系數(shù)值,例如 a、b、c。
?
實(shí)現(xiàn)思路及步驟:
?
a. 導(dǎo)入所需庫:

?
b. 插入數(shù)據(jù)點(diǎn):

c. 實(shí)現(xiàn)指數(shù)回歸算法:

d.應(yīng)用最優(yōu)參數(shù)和協(xié)方差:
?
使用curve_fit來尋找最優(yōu)參數(shù)值,返回兩個(gè)變量,稱為popt、pcov。popt存儲(chǔ)最優(yōu)參數(shù)的值,pcov存儲(chǔ)其協(xié)方差的值。
?
popt變量有兩個(gè)值,這些值是最佳參數(shù)。使用這些參數(shù)并繪制最佳擬合曲線,如圖。

?
e.繪制數(shù)據(jù):
?
用找到的系數(shù)繪制數(shù)據(jù)

?
f. 檢查模型的準(zhǔn)確性:
?
使用r2_score檢查模型的準(zhǔn)確性:

?
執(zhí)行代碼匯總:
?
?
1.5 正弦回歸
?

?
?正弦回歸應(yīng)用例子:
?
音樂波的產(chǎn)生。
聲音以波的形式傳播。
構(gòu)造中的三角函數(shù)。
用于太空飛行。
GPS 位置計(jì)算。
建筑學(xué)。
電流。
無線電廣播。
海洋的低潮和高潮。
建筑物。
?
正弦回歸公式:

實(shí)現(xiàn)思路及步驟:
?
a. 生成數(shù)據(jù)集:


?
b. 應(yīng)用正弦函數(shù):
?
創(chuàng)建了一個(gè)名為“calc_sine”的函數(shù)來根據(jù)最優(yōu)系數(shù)計(jì)算輸出值。使用scikit-learn庫來尋找最優(yōu)參數(shù)。


?
c. 為什么正弦回歸比線性回歸表現(xiàn)更好?
?
在用直線擬合數(shù)據(jù)后檢查模型的準(zhǔn)確性,可以看到預(yù)測(cè)的準(zhǔn)確性低于正弦波回歸的準(zhǔn)確性,這就是使用正弦回歸的原因。
?


?
執(zhí)行代碼匯總:
?
?
?
1.6 對(duì)數(shù)回歸

對(duì)數(shù)回歸實(shí)際應(yīng)用:
?
地震的震級(jí)。
聲音的強(qiáng)度。
溶液的酸度。
溶液的 pH 值。
化學(xué)反應(yīng)的產(chǎn)率。
商品的生產(chǎn)。
嬰兒的成長(zhǎng)。
COVID-19 圖表。
?
有時(shí)數(shù)據(jù)在呈現(xiàn)中以指數(shù)級(jí)增長(zhǎng),但在某個(gè)點(diǎn)之后,變得平坦。這種情況下,可以使用對(duì)數(shù)回歸。
?

實(shí)現(xiàn)思路及步驟:
?
a. 導(dǎo)入庫:

?
b. 生成數(shù)據(jù)集

?
c. 矩陣X的第一列:
?
使用正規(guī)方程找到系數(shù)值

d. 重塑X
?

?
e. 使用正規(guī)方程公式

?
f.形成主矩陣 X
?

g. 找到轉(zhuǎn)置矩陣

?
h. 執(zhí)行矩陣乘法
?

i.求逆

j. 矩陣乘法

k. 查找系數(shù)值

?
l. 用回歸曲線繪制數(shù)據(jù):

m. 準(zhǔn)確性

執(zhí)行代碼匯總:
?
參考文檔:
https://pub.towardsai.net/machine-learning-algorithms-for-beginners-with-python-code-examples-ml-19c6afd60daa
https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/ML0101ENv3/labs/FuelConsumptionCo2.csv
如果有錯(cuò)誤的地方歡迎評(píng)論區(qū)指出!
關(guān)注【學(xué)姐帶你玩AI】公眾號(hào),掌握一手AI前沿,知識(shí)點(diǎn),比賽baseline
