第二章 感知機(jī)(perceptron)

感知機(jī)是一個(gè)二分類的線性分類模型。用線性模型X.W+b=0 展開來就是 x^{(1)}*w^{(1)}+x^{(2)}*w^{(2)}+......x^{(n)}*w^{(n)}+b=0
也就是X,W 內(nèi)積 [x,w]+b =0
用線性模型來作為分割超平面。來劃分類別。
其本質(zhì)還是優(yōu)化問題。就是各個(gè)誤分類樣本點(diǎn)到分離超平面的距離和的最小值問題

image.png
image.png

感知機(jī)的自編程實(shí)現(xiàn)

import numpy as np
import matplotlib.pyplot as plt

class MyPerceptron:
    def __init__(self):
        self.w=None
        self.b=0
        self.l_rate=1

    def fit(self,X_train,y_train):
        #用樣本點(diǎn)的特征數(shù)更新初始w,如x1=(3,3)T,有兩個(gè)特征,則self.w=[0,0]
        self.w=np.zeros(X_train.shape[1])
        i=0
        while i<X_train.shape[0]:
            X=X_train[i]
            y=y_train[i]
            # 如果y*(wx+b)≤0 說明是誤判點(diǎn),更新w,b
            if y*(np.dot(self.w, X) + self.b) <= 0:
                self.w = self.w + self.l_rate * np.dot(y, X)
                self.b = self.b + self.l_rate * y
                i=0 #如果是誤判點(diǎn),從頭進(jìn)行檢測(cè)
            else:
                i+=1

def draw(X,w,b):
    #生產(chǎn)分離超平面上的兩點(diǎn)
    X_new=range(6)
    y_predict=-(b/w[1])-((w[0]*X_new)/w[1])
    #繪制訓(xùn)練數(shù)據(jù)集的散點(diǎn)圖
    plt.plot(X[:3,0],X[:3,1],"g*",label="1")
    plt.plot(X[3:,0], X[3:,1], "rx",label="-1")
    #繪制分離超平面
    plt.plot(X_new,y_predict,"b-")
    #設(shè)置兩坐標(biāo)軸起止值
    plt.axis([0,6,0,6])
    #設(shè)置坐標(biāo)軸標(biāo)簽
    plt.xlabel('x1')
    plt.ylabel('x2')
    #顯示圖例
    plt.legend()
    #顯示圖像
    plt.show()

def main():
    # 構(gòu)造訓(xùn)練數(shù)據(jù)集
    X_train=np.array([[3,2.5],[3,3],[4,3],[1,1],[1,1.5]])
    y_train=np.array([1,1,1,-1,-1])
    # 構(gòu)建感知機(jī)對(duì)象,對(duì)數(shù)據(jù)集繼續(xù)訓(xùn)練
    perceptron=MyPerceptron()
    perceptron.fit(X_train,y_train)
    print(perceptron.w)
    print(perceptron.b)
    # 結(jié)果圖像繪制
    draw(X_train,perceptron.w,perceptron.b)

if __name__=="__main__":
    main()

image.png

梯度下降,求損失函數(shù)的最小值的一種方法
梯度 梯度的定義 各個(gè)維度的偏導(dǎo)向量,和各個(gè)維度的自然基的內(nèi)積
超參數(shù)是模型之外,無法從訓(xùn)練數(shù)據(jù)中得到的,調(diào)節(jié)效率,模型結(jié)構(gòu)等的旋鈕

image.png

有關(guān)梯度以及梯度下降優(yōu)化算法,
<https://www.cnblogs.com/wangguchangqing/p/10521330.html>

感知機(jī)模型收斂性推導(dǎo)novikeff 不等式


image.png
image.png
image.png

感知機(jī)的對(duì)偶形式
知乎 感知機(jī)對(duì)偶形式理解

覺得對(duì)偶形式難懂的點(diǎn)在于ni而ni的含義書上并沒有明說,查了好久才發(fā)現(xiàn)。

ni表示的是第i個(gè)樣本點(diǎn)被誤判的次數(shù),而感知機(jī)一般形式中的w其實(shí)就是每個(gè)樣本點(diǎn)被誤判的次數(shù)乘以 XiYi的累加和,也就

image.png

在每次迭代的時(shí)候,ni表示的是到當(dāng)前為止,第i個(gè)樣本點(diǎn)被誤判的次數(shù),這個(gè)很重要。

因?yàn)橐磸?fù)讓樣本點(diǎn)中的輸入x兩兩相乘(這個(gè)在一般形式中計(jì)算w的時(shí)候也要這樣,自己模擬一遍就發(fā)現(xiàn)了),所以提前搞成一個(gè)矩陣存起來,類似于平時(shí)刷算法題說的打表。。。所以兩個(gè)形式本質(zhì)上是一樣的,不過把w用另外一種形式表示。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容