統計學習方法 第二章 感知機

2021-07-31 04:08:55 字數 3295 閱讀 9178

感知機是二分類的線性分類模型,輸入是例項的特徵x∈

rn,輸出是例項的類別

。感知機對應於輸入空間中將例項劃分為正負兩類的分離超平面,屬於判別模型。感知機學習旨在求出將訓練資料進行線性劃分的分離超平面,為此,匯入基於誤分類的損失函式,利用梯度下降法對損失函式進行極小化,求得感知機模型。

假設輸入空間(特徵空間)是x⊆

rn,輸出空間是y=

.由輸入空間到輸出空間的如下函式f(

x)=s

ign(

w⋅x+

b)稱為感知機。

假設訓練資料集是線性可分的。給定訓練資料集t=

其中,xi

∈x=r

n ,yi

∈y=,

i=1,

2,…,

n 。

感知機sig

n(w⋅

x+b)

學習的損失函式為l(

w,b)

=−∑x

i∈my

i(w⋅

xi+b

) 其中m

為誤分類點的集合。梯度下降法wb

←w+η

yixi

←b+η

yi假設初始值w0

,b0 均為

0 。對誤分類點(x

i,yi

)通過ni

次修改(i

=1,2

,…,n

) , wb

←w+n

iηyi

xi←b

+niη

yi對應誤分類點xi

nib←ni+

1←b+

ηyi

輸入:訓練資料集t=

,其中xi

∈x=r

n ,yi

∈y=,

i=1,

2,…,

n ;學習率η(

0<η≤

1);

輸出:w,b

;感知機模型f(

x)=s

ign(

w⋅x+

b).

(1) 選取初始值w0

,b0

(2) 在訓練集中選取資料(x

i,yi

) (3) 如果yi

(w⋅x

i+b)

≤0 w

b←w+

ηyix

i←b+

ηyi

(4) 轉至(2),直到訓練集中沒有誤分類點。

輸入:訓練資料集t=

,其中xi

∈x=r

n ,yi

∈y=,

i=1,

2,…,

n ;學習率η(

0<η≤

1);

輸出:n,b

;感知機模型f(

x)=s

ign(

∑nj=

1njη

yjxj

⋅x+b

).其中n=

(n1,

n2,…

,nn)

t.(1)n←

0,b←

0 (2)在訓練集中選取(x

i,yi

) (3)如果yi

(∑nj

=1nj

yjxj

⋅xi+

b)≤0

nib←ni+

1←b+

ηyi

(4)轉至(2)直到沒有誤分類資料.

import numpy as np

"""原始型別的感知器

輸入:訓練資料x,y和eta

輸出:w,b

感知機模型:f(x) = sign(wx+b)

"""def

perceptron_original

(x, y, eta):

(m, n) = x.shape

w = np.zeros(n)

b = 0

ok = true

while

true:

for i in range(m):

if y[i]*(np.dot(w,x[i])+b) <= 0:

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

b = b + eta*y[i]

ok = false

ifnot ok:

ok = true

else:

break

return w, b

# main

arr = np.loadtxt('test.txt', delimiter=',')

[m,n]=arr.shape # m是訓練資料的條數,n是訓練特徵數

n = n - 1

x = arr[:,0:n] # 輸入

y = arr[:,n] # 輸出

eta = 1

(w, b) = perceptron_original(x, y, eta)

print w

print b

import numpy as np

"""對偶形式的感知機

輸入:訓練資料x、y,學習率eta

輸出:a、b

"""def

perceptron_dual

(x, y, eta):

(m, n) = x.shape

a = np.zeros(m)

b = 0

ok = true

while

true:

for i in range(m):

w = np.zeros(n)

for j in range(m):

w += a[j]*y[j]*x[j]

if y[i]*(np.dot(w, x[i]) + b) <= 0:

a[i] += 1

b += eta*y[i]

ok = false

ifnot ok:

ok = true

else:

break

return a, b

# main

arr = np.loadtxt('test.txt', delimiter=',')

[m,n]=arr.shape # m是訓練資料的條數,n是訓練特徵數

n = n - 1

x = arr[:,0:n] # 輸入

y = arr[:,n] # 輸出

eta = 1

(w, b) = perceptron_dual(x, y, eta)

統計學習方法(第二章)感知機

1 什麼是感知機 在 機器學習中,感知機 perceptron 是二分類的線性分類模型,屬於監督學習演算法。輸入為例項的特徵向量,輸出為例項的類別 取 1和 1 感知機對應於輸入空間中將例項劃分為兩類的分離超平面。感知機旨在求出該超平面,為求得超平面匯入了基於誤分類的損失函式,利用梯度下降法 對損失...

感知機 《統計學習方法》第二章

模型 線性分類模型 屬於判別模型 策略 演算法 梯度下降法 由輸入空間到輸出空間的函式 f x s ign wx b f x si gn w x b 其中w是權值向量,b是偏置。wx b 0 w x b 0對應特徵空間中的乙個超平面s,w是超平面的法向量,b是超平面的截距。這個超平面將特徵空間劃分為...

《統計學習方法》 第二章 感知機

1 感知機定義 2 幾何解釋 1 資料集的線性可分性 2 感知機的學習策略 感知機的學習策略是 在假設空間中選取損失函式最小的模型。1 感知機學習演算法的原始形式 第三步 重複第 二 三兩步直到訓練集上沒有錯誤樣本點.該演算法的直觀解釋 2 感知機學習演算法的對偶形式 注意 書中的演算法過程使用b ...