線性最小二乘兩種方法

2022-08-11 01:00:28 字數 1865 閱讀 8411

線性最小二乘擬合 y = w0 +w1x  (引數 w0, w1)

(1)如何評價一條擬合好的直線

y = w0 +w1x 的誤差?

(2)最小二乘方法的思路

使 rss 盡量小。

而rss 函式的影象是這樣的:

極小值 處導數為0.

對rss 求導:

有兩種方法求解。

1.closed form:

解析解, 使gradient = 0

得到:

w1:slope = ((sum of x * y) - (1/n)*(sum of x)*(sum of y)) / ((sum of x^2) -(1/n)* (sum of x)*(sum of x))

w0:intercept = (1/n)*(sum of y) - slope * (1/n)* (sum of x)

2.gradient descent

梯度下降方法。

對於簡單的函式擬合,可以直接求出解析解。但對於一些不能直接求出解析解的情況(例如神經網路),就可以使用梯度下降方法。

注意到:

w0 的導數 = sum (yi - (w0+w1xi) ) ,即  w0導數 =  sum( error )

w1的導數  = sum( error*x )

演算法過程:

step 0.初始化:

initial_w0 = 0

initial_w1 = 0

step_size = 0.05

tolerance = 0.01

step 1 ~. 對於接下來的每一步:

(1)根據當前 w0、 w1 計算 y ,並計算w0 、w1的導數 sum( error ) 和 sum( error *x)

(2)更新 w0 、w1 的值:

adjustment  =  step_size *  derivative(導數)

w0 = w0 - adjustment (w1 同理)

(3)檢查演算法是否應該結束(導數是否已經收斂到乙個很小的值了):

magnitude = sqrt(sum (derivative ^2))

if magnitude < tolerance:

end出處:華盛頓大學machine learning:regression  week 1

最小二乘線性擬合

實驗 給出實驗資料 程式 如下 write by void,2013.4.15,beijing import matplotlib.pyplot as plt import numpy as np x 13,15,16,21,22,23,25,29,30,31,36,40,42,55,60,62,6...

非線性最小二乘

非線性最小二乘問題是求解目標引數 的最優值的方法 1.要有待優化的引數x 2.要知道引數與估計值的函式關係 f x 3.要有觀測資料z 4.待優化引數的初值x0 5.待優化引數的範圍 可選 非線性最小二乘問題,可以轉化為非線性優化問題 解非線性最小二乘需要非線性優化演算法 非線性優化演算法最通用的方...

sklearn 最小二乘線性回歸

sklearn是機器學習中的乙個常用的python第三方模組,裡面對機器學習的許多方法進行了封裝,在進行機器學習的任務時,許多常用的演算法可在這個模組中直接呼叫。並且sklearn中還提供了許多可用於分類 回歸的優質資料集。使用好sklearn最直接的方法就是仔細閱讀官方 sklearn就像是乙個模...