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

2021-10-03 10:18:23 字數 2882 閱讀 1076

學習目標:

損失函式推導過程:

最終優化函式:

min l(w,b)
推導過程:

假設空間 ,即特徵空間中的所有線性分類器。模型的複雜度主要體現在例項特徵向量的維度d上或者特徵數量上。

(1) 用python 自程式設計實現感知機模型,對訓練資料集進行分類,並對比誤分類點選擇次序不同對最終結果的影響。可採用函式式程式設計或物件導向的程式設計。

import numpy as np

class

perceptron

:def

__init__

(self, x, y, n, eta)

: self.x = x # 例項點

self.y = y # 例項點的分類

self.n = n # 例項點個數

self.eta = eta # 學習率

# 隨機梯度下降法

defsgd

(self)

:# 對w,b取初值

w = np.array([0

,0])

b =0# 記錄一次迭代是否有誤分類點

flag =

1while flag ==1:

flag =

0for i in

range

(n):

# 如果有誤分類點

if self.y[i]

*(w.dot(self.x[i]

)+ b)

<=0:

# 更新w,b,設定flag為1

w = w + self.eta * self.y[i]

* self.x[i]

b = b + self.eta * self.y[i]

flag =

1return w, b

if __name__ ==

"__main__"

: x = np.array([[

3,3]

,[4,

3],[

1,1]

])y = np.array([1

,1,-

1]) n =

3 eta =

1 perceptron = perceptron(x, y, n, eta)

w, b = perceptron.sgd(

)print

("模型引數w:"

, w,

"b:"

, b)

模型引數w:[1

1] b:

-3

(2)試呼叫sklearn.linear_model 的perceptron模組,對訓練資料集進行分類,並對比不同學習率h對模型學習速度及結果的影響。

)# fit用於訓練資料集

perceptron.fit(x, y)

# coef_:權重w,intercept_:b,n_iter:迭代次數

print

("w:"

, perceptron.coef_,

"\n"

,"b:"

, perceptron.intercept_,

"\n"

,"n_iter:"

, perceptron.n_iter)

# score用來評價訓練效果

res = perceptron.score(x, y)

print

("correct rate:{}"

.format

(res)

)

w:[[

1.0.

]] b:[-2

.] n_iter:

none

correct rate:

1.0

(3)附加題:對比傳統感知機演算法及其對偶形式的執行速度。

樣本數n

特徵維度

d原始形式的複雜度:o(d)

對偶形式的複雜度:o(n)

故,樣本量較大時使用原始形式;特徵維度較大時,使用對偶形式。

統計學習方法二 感知機

一 什麼是感知機?感知機是二類分類的線性分類模型,其輸入為例項的特徵向量,輸出為例項的類別,取 1和 1二值。特性 1 二分類 2 線性分類模型 3 判別模型模型 4 假設空間 定義在特徵空間 有時可以理解為輸入空間 中的所有線性分類模型或線性分類器,即函式集合 4 學習目的 求出分離超平面二 感知...

感知機 統計學習方法

一 感知機適用問題以及它的輸入,輸出,求解方法 1 感知機 perceptron 適用於二類分類問題 該分類問題是線性可分問題 2 感知機模型是線性分類模型 3 感知機的幾何解釋,感知機對應的是乙個超平面 4 輸入 例項的特徵向量 5 輸出 例項的類別,取 1和 1二值 6 求解方法 有監督學習 給...

《統計學習方法》 感知機

最近終於有開始看 統計學習方法 了,畢竟無腦調參確實沒有什麼意義。一方面是作為看書的筆記,一方面作為比部落格或許能起到一點參考作用吧。希望可以日更。由輸入空間到輸出空間的函式 f x si gn w x b f x sign w cdot x b f x s ign w x b 稱為感知機。感知機是...