繪製一條 函式曲線 要求是 盡量去符合 觀測到的值
觀測到的 x 和 y
把x帶入到 我們 假設的函式中 得到y_
y-y_
y = w*x+b
w 是 斜率 也可以認為是權重 weight
b 是 截距 也可以認為是偏差 bias
先來看兩張圖
左邊這張是樣本各個點的資料集,那麼我們利用機器學習的線性回歸模型繪製出來的如右圖所示。
根據已有的點 通過調整w和b的值 讓損失函式(所有**值和真實值之間差值的平方和)的值最小,這就是線性回歸做的事情。
可見上式是乙個二次方程,那麼它的函式曲線就是乙個有開口的,有對稱軸的曲線
梯度下降的原理就是在曲線上取任意點,對所在點的位置求導得到k,代入下式中
position - a *k
然後移動a*k個單位,若所在點在最小值點的右側 ,那麼它的導數會逐漸的減小,移動的距離也越小
梯度下降的時間空間複雜度都相對比較高,一般應用於有多個特徵值的時候使用.
(x*w-y)^2 想要獲得這個公式的極小值 需要求導並零導數為0
注意: 這裡的變數是w(我們想知道的是什麼樣的w能夠使得 函式有最佳擬合)
#求導後得:求導(x*w-y)^2
2(x*w-y)*x =0
注意:這裡是乙個復合函式的求導
#x^2 a*x+b
x*w=y
這裡的x是乙個矩陣,要計算矩陣就不能簡單的把x除過去了,必須要求得x的逆矩陣,通過逆矩陣與x做點乘得1,把x消去求得w
那麼首先要確保 做 逆矩陣的 矩陣 是方陣 才可以求逆矩陣
所以要乘以x的轉置(任意矩陣和自己的 轉置矩陣 相乘 得到的是乙個方陣)
(x.t*x)^-1*x.t*x*w=(x.t*x)^-1*x.t*y
import得w=(x.t*x)^-1*x.t*ynumpy as np
x = np.random.randint(0,10,size=(2,3))
array([[4, 1, 2],
[5, 1, 4]])
x.t
#行變成 列 就是 矩陣的轉置
#任意矩陣和自己的 轉置矩陣 相乘 得到的是乙個方陣
np.dot(x,x.t)
#linalg 線性代數 linear algerithm
np.linalg.inv(np.dot(x,x.t))
a = np.array([[21, 29],
[29, 42]])
b = np.array([[ 1.02439024, -0.70731707],
[-0.70731707, 0.51219512]])
np.dot(a,b)
#趨近於1,趨近於0
array([[1.00000001e+00, 1.00000009e-08],
[2.00000003e-08, 1.00000001e+00]])
那麼 我們對這個推導出來的公式進行一次測試
2*x1+3*x2=5
1*x1+1*x2=4
1*x1-1*x2=10
x2 = -3
x1 = 7
x =np.array([y = np.array([5,4,10])[2,3],
[1,1],
[1,-1]
])
a =np.linalg.inv(np.dot(x.t,x))b =np.dot(a,x.t)
np.dot(b,y)
得 array([ 7., -3.])
from sklearn.linear_model importlinearregression
lr = linearregression() #
使用模型的建構函式 來建立乙個新的模型
lr.fit(x,y)
lr.coef_
線性回歸演算法 1 簡單線性回歸原理
一類機器學習演算法的思路 通過分析問題,找到問題的損失函式或者效用函式,通過最優化損失函式或者效用函式,確定機器學習的演算法模型 如圖所示,對於樣本,求一條擬合曲線 y ax b hat 為 的某個樣本 x 的 值,而 y 為樣本的真實值。我們希望 hat 和 y 的差距盡量小 y hat 2 此處...
線性回歸演算法原理及實現
我們之前介紹了幾種機器學習演算法,這些機器學習演算法都是用來進行分類的。今天換換口味,我們來了解一下如何進行回歸,回歸是基於已有的資料對新的資料進行 比如 產品銷量。我們來看看最簡單的線性回歸,基於標準的線性回歸,可以擴充套件出更多的線性回歸演算法,比如基於核函式的區域性加權線性回歸,lasso等。...
線性回歸模型原理及推導
今天我們來看乙個最常見的機器學習模型 線性回歸 linear regression 模型。先舉個例子讓你明白什麼是線性回歸。現在我們有房屋面積和 的一些資料,如下圖 現在我們想知道的是,如果給乙個新的房屋面積130m 能否根據已知的資料來 新的面積對應的 是多少呢?這時,線性回歸模型就派上用場了。我...