機器學習之經典演算法之(二十五) 最小二乘法

2021-08-20 23:21:31 字數 2208 閱讀 9999

(一)  最小二乘法簡介:

最小二乘法,也叫最小平方法,在古漢語中「平方」稱為「二乘」,「最小」指的是引數的估計值要保證各個觀測點與估計點的距離的平方和達到最小。最小二乘作為一種損失函式,在這整個解決方案中,最小二乘法演算為每一方程式的結果中,將殘差平方和的總和最小化。最重要的應用是在曲線擬合上。最小平方所涵義的最佳擬合,即殘差(殘差為:觀測值與模型提供的擬合值之間的差距)平方總和的最小化。當問題在自變數有重大不確定性時,那麼使用簡易回歸和最小二乘法會發生問題;在這種情況下,須另外考慮變數-誤差-擬合模型所需的方法,而不是最小二乘法。

最小平方問題分為兩種:線性或普通的最小二乘法,和非線性的最小二乘法,取決於在所有未知數中的殘差是否為線性。線性的最小平方問題發生在統計回歸分析中;它有乙個封閉形式的解決方案。非線性的問題通常經由迭代細緻化來解決;在每次迭代中,系統由線性近似,因此在這兩種情況下核心演算是相同的。

最小二乘法所得出的多項式,即以擬合曲線的函式來描述自變數與預計應變數的變異數關係。當觀測值來自指數族且滿足輕度條件時,最小平方估計和最大似然估計是相同的。最小二乘法也能從動差法得出。回歸分析的最初目的是估計模型的引數以便達到對資料的最佳擬合。

(二)最小二乘法實現原理:

__author__ = 'administrator'

import numpy as np

import matplotlib.pyplot as plt

input = np.array([[1, 3],[2, 5],[3, 7],[4, 10],[5,12]])

m = np.shape(input)[0]

x = np.matrix([np.ones(m), input[:,0]]).t

print(x)

y = np.matrix(input[:,1]).t

print("x.t",x.t,"x.t.dot(x)",x.t*x)

beta=np.linalg.inv(x.t*x)*x.t*y

print(beta)

plt.figure(1)

xx = np.linspace(0, 5, 2)

yy = np.array(beta[0] + beta[1] *xx)

plt.plot(xx, yy.t, color='b')

plt.scatter(input[:,0], input[:,1], color='r')

plt.show()

(三)scipy中最小二乘法應用舉例:

__author__ = 'administrator'

##最小二乘法

import numpy as np

import scipy as sp

import matplotlib.pyplot as plt

from scipy.optimize import leastsq  #引入最小二乘法演算法

xi=np.array([6,2.5,7.2,7.0,5.6,2.6,3.9,2.5,9.5,4.6])

yi=np.array([5,2.8,6.5,6.7,5.1,4.2,5.0,2.0,10.5,6.5])

def func(p,x):

k,b=p

return k*x+b

def error(p,x,y):

return func(p,x)-y

p0=[1,15] #初始值

para=leastsq(error,p0,args=(xi,yi)) #第乙個引數為擬合直線係數。

print(para)

k,b=para[0]

print("k=",k,"b=",b)

print("cost:"+str(para[1]))

print("y="+str(round(k,2))+"x+"+str(round(b,2)))

#畫樣本點

plt.figure(figsize=(9,6))

plt.scatter(xi,yi,color="green",label="sampledata",linewidth=2)

#畫擬合直線

x=np.linspace(0,15,150) ##在0-15直接畫150個連續點

y=k*x+b ##函式式

plt.plot(x,y,color="red",label="linear ",linewidth=2)

plt.show()

機器學習(二十五) 強化學習(2)

為了獲得更多的獎勵,我們往往不能只看當前獎勵,更要看將來的獎勵。給定乙個mdp週期,總的獎勵顯然為 r r1 r 2 rnr r 1 r2 r n那麼,從當前時間t開始,總的將來的獎勵為 rt rt rt 1 r n rt rt r t 1 rn 但是environment往往是隨機的,執行特定的動...

機器學習經典演算法之(二十一) 嶺回歸

一 嶺回歸簡介 線性回歸最主要問題是對異常值敏感。在真實世界的資料收集過程中,經過會遇到錯誤的度量結果。而線性回歸使用的普通最小二乘法,其目標是使平方誤差最小化。這時,由於異常值誤差的絕對值很大,因此破壞整個模型。如何解決呢?我們引入正則化項的係數作為閾值來消除異常的影響。這個方法稱為嶺回歸。具體原...

機器學習之經典演算法之(二十六) 最大似然估計

一 最大似然估計簡介 最大似然法 maximumlikelihood,ml 也稱為最大概似估計,也叫極大似然估計,是一種具有理論性的點估計法,此方法的基本思想是 當從模型總體隨機抽取n組樣本觀測值後,最合理的引數估計量應該使得從模型中抽取該n組樣本觀測值的概率最大,而不是像最小二乘估計法旨在得到使得...