線性最小二乘擬合 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就像是乙個模...