溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

機算法原理及Python實現(xiàn)實例分析

發(fā)布時間:2022-08-03 16:34:54 來源:億速云 閱讀:154 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了機算法原理及Python實現(xiàn)實例分析的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇機算法原理及Python實現(xiàn)實例分析文章都會有所收獲,下面我們一起來看看吧。

    寫在前面

    機器學(xué)習(xí)強基計劃聚焦深度和廣度,加深對機器學(xué)習(xí)模型的理解與應(yīng)用?!吧睢痹谠敿毻茖?dǎo)算法模型背后的數(shù)學(xué)原理;“廣”在分析多個機器學(xué)習(xí)模型:決策樹、支持向量機、貝葉斯與馬爾科夫決策、強化學(xué)習(xí)等。

    本期目標(biāo):實現(xiàn)這樣一個效果

    機算法原理及Python實現(xiàn)實例分析

    1.什么是線性模型

    線性模型的假設(shè)形式是屬性權(quán)重、偏置與屬性的線性組合,即

    機算法原理及Python實現(xiàn)實例分析

    稱為廣義線性模型(generalized linear model),其中g(shù)(⋅)稱為聯(lián)系函數(shù)(link function)。

    廣義線性模型本質(zhì)上仍是線性的,但通過g(⋅)進行非線性映射,使之具有更強的擬合能力,類似神經(jīng)元的激活函數(shù)。例如對數(shù)線性回歸(log-linear regression)是g(⋅)=ln(⋅)時的情形,此時模型擁有了指數(shù)逼近的性質(zhì)。

    線性模型的優(yōu)點是形式簡單、易于建模、可解釋性強,是更復(fù)雜非線性模型的基礎(chǔ)。

    2.感知機概述

    感知機(Perceptron)是最簡單的二分類線性模型,也是神經(jīng)網(wǎng)絡(luò)的起源算法,如圖所示。

    機算法原理及Python實現(xiàn)實例分析

    y=w^Tx^是 Rd空間的一條直線,因此感知機實質(zhì)上是通過訓(xùn)練參數(shù)w^改變直線位置,直至將訓(xùn)練集分類完全,如圖所示,或者參考文章開頭的動圖。

    機算法原理及Python實現(xiàn)實例分析

    3.手推感知機原理

    機器學(xué)習(xí)強基計劃的初衷就是搞清楚每個算法、每個模型的數(shù)學(xué)原理,讓我們開始吧!

    感知機的損失函數(shù)定義為全體誤分類點到感知機切割超平面的距離之和:

    機算法原理及Python實現(xiàn)實例分析

    對于二分類問題y∈{−1,1},則誤分類點的判斷方法為

    機算法原理及Python實現(xiàn)實例分析

    機算法原理及Python實現(xiàn)實例分析

    這在二分類問題中是個很常用的技巧,后面還會遇到這種等效形式。

    從而損失函數(shù)也可簡化為下面的形式以便于求導(dǎo):

    機算法原理及Python實現(xiàn)實例分析

    方程兩邊同時乘以系數(shù)都成立,所以直線系數(shù) w^可以隨意縮放,這里可令|w^|=1

    若采用梯度下降法進行優(yōu)化(梯度法可參考圖文詳解梯度下降算法的原理及Python實現(xiàn)),則算法流程為:

    機算法原理及Python實現(xiàn)實例分析

    4.Python實現(xiàn)

    4.1 創(chuàng)建感知機類

    class Perceptron:
        def __init__(self):
            self.w = np.mat([0,0])                                    # 初始化權(quán)重
            self.b = 0                                                  # 初始化偏置
            self.delta = 1                                              # 設(shè)置學(xué)習(xí)率為1
            self.train_set =  [[np.mat([3, 3]), 1], [np.mat([4, 3]), 1], [np.mat([1, 1]), -1]]  # 設(shè)置訓(xùn)練集
            self.history = []                                           # 訓(xùn)練歷史

    4.2 更新權(quán)重與偏置

    def update(self,error_point):
            self.w += self.delta*error_point[1]*error_point[0]
            self.b += self.delta*error_point[1]
            self.history.append([self.w.tolist()[0],self.b])

    4.3 判斷誤分類點

    def judge(self,point):
            return point[1]*(self.w*point[0].T+self.b)

    4.4 訓(xùn)練感知機

    def train(self):       
         flag = True
         while(flag):
             count = 0
             for point in self.train_set:
                 if(self.judge(point)<=0):
                     self.update(point)
                 else:
                     count += 1
             if(count == len(self.train_set)):
                 flag = False

    4.5 動圖可視化

    def show():
            print("參數(shù)w,b更新過程:",perceptron.history)
            anim = animation.FuncAnimation(fig, animate, init_func=init, frames=len(perceptron.history), 
                                            interval=1000, repeat=False,blit=True)
            plt.show()

    機算法原理及Python實現(xiàn)實例分析

    5.總結(jié)

    感知機最大的缺陷在于其線性,單個感知機只能表達一條直線,即使是如圖(a)所示簡單的異或門樣本,都無法進行分類。對此有兩種解決方式:

    通過多條直線,即多層感知機(Multi-Layer Perceptron, MLP)進行分類,如圖(b)所示;在線性加權(quán)的基礎(chǔ)上引入非線性變換,如圖(c)所示。

    機算法原理及Python實現(xiàn)實例分析

    關(guān)于“機算法原理及Python實現(xiàn)實例分析”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“機算法原理及Python實現(xiàn)實例分析”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI