日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

机器学习——逻辑回归算法

發(fā)布時(shí)間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习——逻辑回归算法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 邏輯回歸算法
    • 邏輯回歸概念
    • Sigmoid函數(shù)
    • 邏輯回歸模型
    • 代價(jià)函數(shù)
    • 最終運(yùn)用梯度下降求解
    • 實(shí)驗(yàn)
    • 總結(jié)

邏輯回歸算法

首先明確一個(gè)概念,邏輯回歸并不是解決回歸問(wèn)題,而是解決分類(lèi)問(wèn)題,它是通過(guò)訓(xùn)練數(shù)據(jù)中的正負(fù)例,學(xué)習(xí)樣本特征得到標(biāo)簽之間的假設(shè)函數(shù),是一種典型的線性分類(lèi)器。

邏輯回歸概念

面對(duì)一個(gè)回歸或者分類(lèi)問(wèn)題,建立代價(jià)函數(shù),然后通過(guò)優(yōu)化方法迭代求解出最優(yōu)的模型參數(shù),然后測(cè)試驗(yàn)證求解模型的好壞。

邏輯回歸實(shí)際是一種分類(lèi)方法,主要用于兩分類(lèi)問(wèn)題,即輸出只有兩種,分別代表兩個(gè)類(lèi)別。用Sigmoid函數(shù)就可以讓邏輯回歸只能輸出兩種值。

Sigmoid函數(shù)

Logistic函數(shù)(或Sigmoid函數(shù)),函數(shù)形式為:

對(duì)應(yīng)圖形如下:


可以看出,Sigmoid函數(shù)是一個(gè)S型的曲線,它的取值在[0,1]之間,在遠(yuǎn)離0的地方函數(shù)值會(huì)很快接近0或1。可以思考,一個(gè)事件發(fā)生的概率是在0到1之間的,每一個(gè)概率都可以映射到函數(shù)的某一個(gè)值上,就可以歸類(lèi)為超過(guò)50%的概率更容易實(shí)現(xiàn)歸一為1,低于50%的概率更不容易實(shí)現(xiàn)歸一為0,這樣就存在了只有0/1的二分類(lèi)問(wèn)題。

邏輯回歸模型

邏輯回歸模型所做的假設(shè)是:


可以發(fā)現(xiàn),這里離將Sigmoid函數(shù)中的變量x換成了一個(gè)線性回歸公式,組成了新的邏輯回歸公式。

代價(jià)函數(shù)

邏輯回歸算法也是用最大似然估計(jì)來(lái)學(xué)習(xí)的,所以單個(gè)樣本的后驗(yàn)概率為:

這是一個(gè)二項(xiàng)分布的整合式,相當(dāng)于當(dāng)y取1時(shí),式子取h(x),而當(dāng)y取0時(shí),式子取1-h(x)。那么整個(gè)樣本的后驗(yàn)概率為:

轉(zhuǎn)換成矩陣式,取對(duì)數(shù)可以得到對(duì)數(shù)似然度:

最終運(yùn)用梯度下降求解

對(duì)數(shù)似然是越大越好的,求梯度下降需要在式子前邊加負(fù)號(hào),轉(zhuǎn)變?yōu)榍蠼庾钚≈怠K郧笃珜?dǎo)的式子可以表示為:

最終可以化簡(jiǎn)為:

可以說(shuō),沿梯度負(fù)方向選擇一個(gè)較小的步長(zhǎng)可以保證代價(jià)函數(shù)是減小的,另一方面代價(jià)函數(shù)是凸函數(shù),可以保證找到的局部最優(yōu)值是全局最優(yōu)。

實(shí)驗(yàn)

利用梯度下降實(shí)現(xiàn)邏輯回歸模型,下述代碼用于求解y=2x1+x2+3,即使用梯度下降法求解y=ax1+bx2+c中參數(shù)a、b、c的最優(yōu)值:

import numpy as np import matplotlib.pyplot as pltrate = 0.001 x_train = np.array([[1,2], [2,1], [2,3], [3,5], [1,3], [4,2], [7,3], [4,5], [11,3], [8,7]]) y_train = np.array([7,8,10,14,8,13,20,16,28,26]) x_test = np.array([[1,4], [2,2], [2,5], [5,3], [1,5], [4,1]])a = np.random.normal() b = np.random.normal() c = np.random.normal()def h(x):return a * x[0] + b * x[1] + cfor i in range(100):sum_a = 0sum_b = 0sum_c = 0for x, y in zip(x_train, y_train):for xi in x:sum_a = sum_a + rate * (y - h(x)) * xisum_b = sum_b + rate * (y - h(x)) * xia = a + sum_ab = b + sum_bc = c + sum_cplt.plot([h(xi) for xi in x_test])print(a) print(b) print(c)result = [h(xi) for xi in x_train] print(result)result = [h(xi) for xi in x_test] print(result)plt.show()

算法求得的a、b、c的最優(yōu)值和效果圖如圖所示:

總結(jié)

邏輯回歸具有一些優(yōu)點(diǎn):形式簡(jiǎn)單,模型的可解釋性非常好。從特征的權(quán)重可以看到不同的特征對(duì)最后結(jié)果的影響,某個(gè)特征的權(quán)重值比較高,那么這個(gè)特征最后對(duì)結(jié)果的影響會(huì)比較大。訓(xùn)練速度較快。分類(lèi)的時(shí)候,計(jì)算量?jī)H僅只和特征的數(shù)目相關(guān),訓(xùn)練的速度可以通過(guò)堆機(jī)器進(jìn)一步提高,這樣我們可以在短時(shí)間內(nèi)迭代好幾個(gè)版本的模型。

但是邏輯回歸本身也有許多的缺點(diǎn):準(zhǔn)確率并不是很高。因?yàn)樾问椒浅5暮?jiǎn)單(非常類(lèi)似線性模型),很難去擬合數(shù)據(jù)的真實(shí)分布。很難處理數(shù)據(jù)不平衡的問(wèn)題。舉個(gè)例子:如果我們對(duì)于一個(gè)正負(fù)樣本非常不平衡的問(wèn)題,比如正負(fù)樣本比 10000:1,我們把所有樣本都預(yù)測(cè)為正也能使損失函數(shù)的值比較小。但是作為一個(gè)分類(lèi)器,它對(duì)正負(fù)樣本的區(qū)分能力不會(huì)很好。處理非線性數(shù)據(jù)較麻煩。邏輯回歸在不引入其他方法的情況下,只能處理線性可分的數(shù)據(jù),或者進(jìn)一步說(shuō),處理二分類(lèi)的問(wèn)題 。

總結(jié)

以上是生活随笔為你收集整理的机器学习——逻辑回归算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。