機器學習 線性回歸

2021-10-11 02:52:42 字數 3615 閱讀 2771

機器學習中最常見的兩個問題:

線性回歸可以用方程y=kx+b來表示,今天我們拓展到多元的線性回歸,其表現形式為:

f =w

1x1+

w2x2

+w3x

3+wn

xn即f

=∑i=

1nwi

xif=w_1x_1+w_2x_2+w_3x_3+w_nx_n即f=\sum_^

f=w1​x

1​+w

2​x2

​+w3

​x3​

+wn​

xn​即

f=i=

1∑n​

wi​x

i​用矩陣的形式表示就是

f =w

txf=w^tx

f=wt

x其中w是

[ w1

w2w3

...w

n]\left[ \begin w_1 \\ w_2\\ w_3\\ ...\\ w_n \end \right]

⎣⎢⎢⎢⎢⎡

​w1​

w2​w

3​..

.wn​

​⎦⎥⎥

⎥⎥⎤​

x是:[x1

x2x3

...x

n]\left[ \begin x_1 \\ x_2\\ x_3\\ ...\\ x_n \end \right]

⎣⎢⎢⎢⎢⎡

​x1​

x2​x

3​..

.xn​

​⎦⎥⎥

⎥⎥⎤​

在我們使用訓練模型時x矩陣是我們的輸入值

線性回歸的目的就是求解出合適的w,b,在一元的情況下擬合出一條直線(多元情況下是平面或者曲面),可以近似的代表各個資料樣本的標籤值。所以最好的直線要距離各個樣本點都很接近,而如何求出這條直線就是本篇文章重點要將的內容。

未訓練之前以及訓練之後的曲線:

求解線性回歸模型的方法叫做最小二乘法,最小二乘法的核心就是保證所有資料偏差的平方和最小。而這個函式就是我們定義的損失函式,它的具體形式是:

求解最小二乘法的方法一般有兩種方法:矩陣式和梯度下降法

下面我具體講解一下我們最常用的梯度下降法:

我們以下面這個二次函式:

=0時d

ydx∣

x0=−

4x_0=0時\frac|x_0=-4

x0​=0時

dxdy

​∣x0

​=−4

import matplotlib.pyplot as plt

import tensorflow as tf

import time

trre_w =

3.0true_b =

5.0num_samples =

100# 初始化隨機資料

x = tf.random.normal(shape=

[num_samples,1]

).numpy(

)# 生成乙個正態分佈的100行,一列的矩陣

noise = tf.random.normal(shape=

[num_samples,1]

).numpy(

)y = x * trre_w + true_b + noise # 新增雜訊

plt.scatter(x, y)

plt.show(

)# 接下來我們定義線性回歸模型

# f(w,b,x)=w*x+b

class

model

(object):

def__init__

(self)

:# 隨機初始化引數

self.w = tf.variable(tf.random.uniform([1

])) self.b = tf.variable(tf.random.uniform([1

]))def

__call__

(self, x)

:return self.w * x + self.b

# 先例項化模型

model = model(

)plt.scatter(x, y)

plt.plot(x, model(x)

, c=

'r')

# 繪製折現圖

# 上面的曲線並不能 夠很好的擬合我們的資料,我們接下來定義損失函式

# loss(w,vb,x,y)=[f(w,b,x)-y]^2

defloss

(model, x, y)

: y_ = model(x)

return tf.reduce_mean(tf.square(y_ - y)

)# 通過梯度下降進行迭代,降低損失

epochs =

1000

# 定義訓練次數

learning_rate =

0.01

# 定義學習率

for epoch in

range

(epochs)

:with tf.gradienttape(

)as tape:

loss = loss(model, x, y)

dw, db = tape.gradient(loss,

[model.w, model.b]

) model.w.assign_sub(learning_rate * dw)

model.b.assign_sub(learning_rate * db)

print

("epoch:[{}/{}],loss:,w/b:[/]"

.format

(epoch, epochs, loss,

float

(model.w.numpy())

,float

(model.b.numpy())

))plt.scatter(x, y)

plt.plot(x, model(x)

, c=

"purple"

)plt.show(

)

機器學習 線性回歸

可以說基本上是機器學習中最簡單的模型了,但是實際上其地位很重要 計算簡單 效果不錯,在很多其他演算法中也可以看到用lr作為一部分 先來看乙個小例子,給乙個 線性回歸是什麼 的概念。圖來自 2 假設有乙個房屋銷售的資料如下 面積 m 2 銷售價錢 萬元 123 250 150 320 87 160 1...

機器學習(線性回歸)

在機器學習中,回歸 分類和標註共同構成了監督學習技術。監督學習 supervised learning 是機器學習在工業界應用最廣的乙個領域分支。在學術界中也是研究最多的領域之一。大家都知道的資料探勘十大經典演算法中,監督學習技術佔據6席。方法 自變數 特徵 因變數 結果 關係 回歸演算法是試圖採用...

機器學習 線性回歸

line fitter linearregression 建立模型 line fitter.fit temperature,sales 傳入引數 sales predict line fitter.predict temperature 模型 直線 直線上會有loss 計算loss時 要使用平方距離...