機器學習之線性回歸原理及sklearn實現

2021-08-28 08:56:37 字數 2294 閱讀 2902

1、線性回歸問題

以房價**為例,占地面積為變數x1,房屋年齡為變數x2,房屋**為**變數y。

為什麼叫線性回歸問題,因為目標函式是乙個線性回歸函式。什麼是目標函式?   

(1)、目標函式:目標函式是我們需要的最終結果,及最終擬合了資料的函式。

假設目標函式為y = θ1*x1 + θ2*x2 + b。

那麼我們如何得到目標函式中的引數呢?如何使用資料來擬合得到最好的θ1、θ2以及b就是接下來要做的事情。

(2)、損失函式:損失函式是我們得到的**值y_pre與真實資料中的y的某種方式計算出來的差值。那麼也就是說損失函式越小,就代表著我們目標函式的引數越好。

一般線性回歸問題我們用均方差來作為損失函式,即 j(θ1,θ2)=∑(y-y_pre)^2  ​#小弟能力有限,暫時部落格沒什麼好的書寫方式,公式裡的符號能理解就好

也就是說我們現在的問題就是在這個j(θ1,θ2)上面找事情了,找到它最小的情況,並且計算出這時的θ1和θ2以及b

2、解決途徑

對於損失函式j(θ1,θ2)=∑(y-y_pre)^2,我們最常用的方式自然是傳說中的梯度下降法了。當然不只是梯度下降法,也有其他的解法,如最小二乘法等。

(1)、梯度下降

梯度下降的原理如其名所述,取其梯度,按梯度下降,然後下降到最低點,就得到我們最想要的最小的j了。 

梯度是什麼?對於損失函式 j = ∑(y-y_pre)^2  來說,梯度就是j分別對θ1和θ2求偏導數,即{∂j/∂θ1,∂j/∂θ2}

那梯度下降就是引數減去這個偏導數嘍。

θ1 = θ1 - ∂j/∂θ1

θ2 = θ2 - ∂j/∂θ2 

這樣一次減法操作就是一次梯度下降,梯度下降法正是通過這樣一次次的減法,直到最後使得θ1和θ2趨於穩定,也就是j達到或者接近最小值。

那麼為什麼這樣一次次的減法就能得到結果呢?我們畫個圖來看一下。

因為三維圖不太會畫,就用二維影象,乙個θ值來分析。乙個引數兩個引數都是一樣的,只不過多乙個減法公式。

如圖,假設初始的θ值位於a點,那麼a點的偏導,如斜線所示,是乙個正數,那麼θ = θ - ∂j/∂θ(正數)這樣的減法公式之後,橫左邊必然是變小了,a點自然是向左移動了,假設從a點移動到了b點,那麼可以發現j的值確實是變小了。如果a點在函式最小值的的左邊呢?

如圖,如果一開始在c點,這時的偏導是負數,那麼θ = θ - ∂j/∂θ(負數) 之後,theta變大了,橫座標右移,自然j也就變小了,這也就是說不論哪種情況下進行梯度下降,j都是在減小的。

損失函式j梯度下降公式是這樣的,以乙個θ舉例: θ = θ - λ*(∂j/∂θ),多出乙個λ,這個λ是超引數,是人為設定的,也就是可以我們可以控制梯度下降的步長,是下降的快一點還是慢一點。這裡不是設定的越大越好,因為如果λ太大,會導致發生從a點直接下降到c點這種情況,也就是說步子太大了,直接跨過了最低點。

以上就是線性回歸linear regression以及梯度下降gd的原理,下面我們來看一下sklearn中如何使用。

# 本篇學習線性回歸演算法,使用自帶的波士頓放假資料集    

#匯入包

from sklearn import datasets

from sklearn import linear_model

import pandas as pd

import matplotlib.pyplot as plt

#匯入資料,切分為資料集x以及目標集y

data = datasets.load_boston()

x = pd.dataframe(data['data'],columns=data.feature_names)

y = pd.dataframe(data['target'],columns=data.)

#生成模型物件,並fit資料,**結果

reg = linear_model.linearregression()

reg.fit(x,y)

predictions = reg.predict(x)

print(predictions)

sklearn的使用十分簡單,以上就是使用sklearn做的乙個線性回歸**房價,當然沒有什麼模型評價、模型優化等等,這些之後再聊。

機器學習之線性回歸

訓練樣例 x y 輸入變數 特徵 x ps n 1行,1 列 輸出變數 目標變數 y訓練樣例總數 m 特徵維度 n第 i 個訓練樣例 x i y i 所有訓練樣例的輸入變數組成的矩陣 x ps m行,n 1 列,每行是 x i t 所有訓練樣例的輸出變數組成的矩陣 y ps m行,1 列 下表是某地...

機器學習之線性回歸

線性回歸就是用線性方程去擬合一組資料,x 的最高端是1,用方程可以表示為 h x 0 1x1 n xn我們令 x0 1則上式可以改寫為 h x i 0n ixi tx 既然是擬合的模型,則肯定會存在不符合該模型的點,第 i 個點的真實值與模型 的值之間的差稱為誤差 e h x i y i 假設總共有...

機器學習之線性回歸

線性回歸分析 regression analysis 其資料集是給定乙個函式和他的一些座標點,然後通過回歸分析的演算法,來估計原函式的模型,求得最符合這些資料集的函式解析式。然後我們就可以用來預估未知資料,輸入乙個自變數便會根據這個模型解析式輸出因變數,這些自變數就是特徵向量,因變數即為標籤,而且標...