ML 8 感知機演算法 傳統和對偶形式

2022-06-17 15:48:11 字數 3810 閱讀 9254

感知機模型

感知機模型損失函式

感知機模型損失函式的優化方法

感知機模型的演算法

感知機模型的演算法對偶形式

我們知道較早的分類模型——感知機(2023年)是二類分類的線性分類模型,也是後來神經網路和支援向量機的基礎。

感知機模型是一種二分類的線性分類器,只能處理線性可分的問題,感知機的模型就是嘗試找到乙個超平面將資料集分開,在二維空間這個超平面就是一條直線,在三維空間就是乙個平面。

這樣我們就得到了初步的感知機模型的損失函式。

我們研究可以發現,分子和分母都含有θ,當分子的θ擴大n倍時,分母的l2範數也會擴大n倍。也就是說,分子和分母有固定的倍數關係。那麼我們可以固定分子或者分母為1,然後求另乙個即分子自己或者分母的倒數的最小化作為損失函式,這樣可以簡化我們的損失函式。在感知機模型中,我們採用的是保留分子,即最終感知機模型的損失函式簡化為:

14 print("迭代次數為:%d w=[%d,%d] b=%d"%(j,w[0],w[1],b))

15 if y[i]*(np.dot(w,x[i])+b)<=0: #未被正確分類

16 #更新w,b

17 w=w+y[i]*x[i]

18 b=b+y[i]

19 count+=1

20 j+=1

21 if count==0:

22 f="f(x)=sign(%d*x+%d*x+%d)"%(w[0],w[1],b)

23 print("感知機模型為:%s"%f)

24 return w,b,f

25 w,b,f=train(x,y,w,b)

26

27 #畫分離超平面圖

28 def fun(x):

29 y=(-b-w[0]*x)/w[1]

30 return y

31 x_data=np.linspace(0,5)

32 y_data=fun(x_data)

33 plt.plot(x_data,y_data,color='r')

34 plt.title("perceptron")

35

36 #畫散點圖

感知機的對偶形式與原始形式並沒有多大的區別,運算的過程都是一樣的,但通過對偶形式會事先計算好一些步驟的結果並儲存到gray矩陣中,因此可以加快一些運算速度,資料越多節省的計算次數就越多,因此比原始形式更加的優化

import numpy as np

import matplotlib.pyplot as plt

x = np.array([[3, 3], [4, 3], [1, 1]])

y = np.array([[1], [1], [-1]])

# 建立gram矩陣

z = np.transpose(x)

m = np.dot(x,z)

print("構建的gram矩陣為:\n",m)

print("-------------------------")

a = np.zeros((x.shape[0], 1))

b = 0

def train(x,y,m,a,b):

length = x.shape[0]

while true:

count = 0

for i in range(length):

n = np.dot(m[i], a * y ) + b

if n* y[i] <= 0:

a[i] = a[i] + 1

b = b + y[i]

count += 1

if count == 0:

w = np.sum(x * a* y, axis=0)

print(w,b)

print("感知機模型:\nf(x) = sign(%dx+%dy+(%d))\n"%(w[0],w[1],b))

return w,b

w,b = train(x,y,m,a,b)

def fun(x):

y = (-b -w[0] * x) / w[1]

return y

x_data = np.linspace(0, 5, 100) # 建立等差陣列

感知機學習演算法的原始形式和對偶形式

原始形式和對偶形式是從兩個方面去計算梯度下降的問題,兩種方法找誤分點的個數是一樣的,區別在於,找到乙個誤分點時兩者接下來的計算方法 n為訓練集大小,n為特徵數量 1 對偶形式 掃一遍n,計算每條資料在之前被加了幾 ai 次 當 取1時,ai相當於第i組資料的梯度xiyi被加了幾次,找到乙個誤分點後直...

感知機學習演算法的對偶形式

感知機學習演算法的對偶形式,演算法2.2參考李航 統計學習方法 書中第二章的演算法 clear all clcx 3,3 4,3 1,1 y 1,1,1 訓練資料集及標記 learnrate 1 學習率 0,1 alpha zeros 1,size x,1 b 0 alpha和b的初值 g x x ...

人工神經網路 感知機學習演算法的對偶形式

from matplotlib import pyplot as plt from mpl toolkits.mplot3d import axes3d import numpy as np from sklearn.neural network import mlpclassifier from ...