sklearn學(xué)習(xí)之線性回歸

目錄

  • 什么是回歸
  • 一元線性回歸
  • 損失函數(shù)
  • 最小二乘估計
  • 小結(jié)及代碼

1. 什么是回歸

  • 回歸算法是相對分類算法而言的,與我們想要預(yù)測的目標(biāo)變量y的值類型有關(guān)。
    • 如果目標(biāo)變量y是分類型變量,如預(yù)測用戶的性別(男、女),預(yù)測月季花的顏色(紅、白、黃……),預(yù)測是否患有肺癌(是、否),那我們就需要用分類算法去擬合訓(xùn)練數(shù)據(jù)并做出預(yù)測;

    • 如果y是連續(xù)型變量,如預(yù)測用戶的收入(4千,2萬,10萬……),預(yù)測員工的通勤距離(500m,1km,2萬里……),預(yù)測患肺癌的概率(1%,50%,99%……),我們則需要用回歸模型。

    • 分類問題也可以轉(zhuǎn)化為回歸問題,例如肺癌預(yù)測,我們可以用回歸模型先預(yù)測出患肺癌的概率,然后再給定一個閾值,例如50%,概率值在50%以下的人劃為沒有肺癌,50%以上則認(rèn)為患有肺癌。

2.一元線性回歸

線性回歸可以說是用法非常簡單、用處非常廣泛、含義也非常容易理解的一類算法。我們將y作為因變量,x作為自變量,得到方程:
y = \beta_1* x+\beta_0

當(dāng)\beta_0, \beta_1 已知的時候,畫在坐標(biāo)圖內(nèi)是一條直線(這就是“線性”的含義)。

  • 當(dāng)我們只用一個x來預(yù)測y,就是一元線性回歸,也就是在找一個直線來擬合數(shù)據(jù)
  • 如圖,一組數(shù)據(jù)的散點(diǎn)圖,橫坐標(biāo)代表廣告投入金額,縱坐標(biāo)代表銷售量,
  • 線性回歸就是要找一條直線,并且讓這條直線盡可能地擬合圖中的數(shù)據(jù)點(diǎn)。
    擬合-回歸
  • 我們得到的擬合方程是y = 0.5x + 3,
  • 當(dāng)我們獲得一個新的廣告投入金額后,我們就可以用這個方程預(yù)測出大概的銷售量。

3.損失函數(shù)

那既然是用直線擬合散點(diǎn),為什么最終得到的直線是y = 0.5x + 3,而不是下圖中的y = 0.6x + 2呢?

2.png

這兩條線看起來都可以擬合這些數(shù)據(jù)???畢竟數(shù)據(jù)不是真的落在一條直線上,而是分布在直線周圍,所以我們要找到一個評判標(biāo)準(zhǔn),用于評價哪條直線才是最“合適”的

我們先從殘差說起。殘差說白了就是真實值y和預(yù)測值\hat{y}間的差值(也可以理解為差距、距離),用公式表示是:

e = y-\hat{y}

3.jpg

對于某個廣告投入x_i ,我們有對應(yīng)的實際銷售量y_i,和預(yù)測出來的銷售量\hat{y}_i(通過將x_i
代入公式\hat{y}_i = \beta_0*x_i+\beta_1計算得到),計算
e_i = y_i-\hat{y}_i

的值,再將其平方(為了消除負(fù)號),對于我們數(shù)據(jù)中的每個點(diǎn)如此計算一遍,再將所有i

相加,就能量化出擬合的直線和實際之間的誤差。

用公式表示就是:
\begin{split} Q & = \sum_{i = 1}^{n}(y_i-\hat{y}_i)^2\\ & = \sum_{i = 1}^{n}(y_i-(\beta_0+\beta_1*x_i))^2 \end{split}

  • 稱為殘差平方和,即SSE(Sum of Squares for Error),在機(jī)器學(xué)習(xí)中它是回歸問題中最常用的損失函數(shù)。
  • 損失函數(shù)是衡量回歸模型誤差的函數(shù),也就是我們要的“直線”的評價標(biāo)準(zhǔn)。
  • 這個函數(shù)的值越小,說明直線越能擬合我們的數(shù)據(jù)。

4.最小二乘估計

  • 問題: \beta_0\beta_1的具體值究竟是怎么算出來的呢?

  • 我們知道,兩點(diǎn)確定一線,有兩組x,y的值,就能算出來\beta_0\beta_1。但是現(xiàn)在我們有很多點(diǎn),且并不正好落在一條直線上,這么多點(diǎn)每兩點(diǎn)都能確定一條直線,這到底要怎么確定選哪條直線呢?

  • 當(dāng)給出兩條確定的線,如y = 0.5x + 3,y = 0.6x + 2時,我們知道怎么評價這兩個中哪一個更好?

  • 給定一組樣本觀測值(x_i,y_i),i=1,2,…n,要求回歸函數(shù)盡可能擬合這組值。

  • 最小二乘法給出的判斷標(biāo)準(zhǔn)是:殘差平方和的值達(dá)到最小。

我們再來看一下殘差平方和的公式:
\begin{split} Q & = \sum_{i = 1}^{n}(y_i-\hat{y}_i)^2\\ & = \sum_{i = 1}^{n}(y_i-(\beta_0+\beta_1*x_i))^2 \end{split}

  • 這個公式是一個關(guān)于\beta_0\beta_1的二次函數(shù)
  • 一元二次函數(shù)圖像:


    2.png
  • 二元二次函數(shù)圖像:


    2.png
  • 導(dǎo)數(shù)為0時, Q 取最小值,因此我們分別對\beta_0\beta_1求偏導(dǎo)并令其為0:
    \begin{split} & \frac{\partial{Q}}{\partial{\beta_0}} = 2\sum_1^n(y_i-\beta_0-\beta_1*x_i) = 0\\ & \frac{\partial{Q}}{\partial{\beta_1}} = 2\sum_1^n(y_i-\beta_0-\beta_1*x_i) x_{i} = 0 \end{split}
  • (x_i,y_i)(i=1,2,…n)都是已知的,全部代入上面兩個式子,就可求得\beta_0\beta_1啦。
  • 這就是最小二乘法,“二乘”是平方的意思。

5.小結(jié)

  • 線性回歸的定義,是利用最小二乘函數(shù)對一個或多個自變量之間關(guān)系進(jìn)行建模的方法。
  • 以上舉的例子是一維的例子(只有一個變量x),
  • 如果有兩個特征(x_1,x_2),就是二元線性回歸,要擬合的就是二維空間中的一個平面
    y = a*x_1+b*x_2+c
  • 如果有多個特征(x_1,x_2,\dots, x_n),那就是多元線性回歸:
    y = a_1*x_1+a_2*x_2+\dots+a_n*x_n+b

6.代碼

  • API: LinearRegression()
    • 方法:
      • fit
      • predict

sklearn建模流程

  • 建立模型
Model = sklearn.linear_model.LinearRegression()
  • 訓(xùn)練模型
Model.fit(x,y)
  • 模型評估
Model.score(x,y)
  • 模型預(yù)測
Model.predict(x)
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

#模擬數(shù)據(jù)
x = np.linspace(0, 10, 50)
noise = np.random.uniform(-2,2,size=50)
y = 5 * x + 6 + noise
#創(chuàng)建模型
liner = LinearRegression()
#擬合模型
liner.fit(np.reshape(x,(-1,1)),np.reshape(y,(-1,1)))
print(liner)
#預(yù)測
y_pred = liner.predict(np.reshape(x,(-1,1)))
plt.figure(figsize=(5,5))
plt.scatter(x,y)
plt.plot(x,y_pred, color="r")
plt.show()
print(liner.coef_)
print(liner.intercept_)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容