機器學習中最常見的兩個問題:
線性回歸可以用方程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=w1x
1+w
2x2
+w3
x3
+wn
xn即
f=i=
1∑n
wix
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
w2w
3..
.wn
⎦⎥⎥
⎥⎥⎤
x是:[x1
x2x3
...x
n]\left[ \begin x_1 \\ x_2\\ x_3\\ ...\\ x_n \end \right]
⎣⎢⎢⎢⎢⎡
x1
x2x
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時 要使用平方距離...