真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python核函數(shù),python核函數(shù)擬合

python svm怎么選擇核函數(shù)

Python寫程序原則是所有進(jìn)來(lái)的字符串(讀文件,爬網(wǎng)頁(yè)),一進(jìn)來(lái)就decode,處理完之后在要輸出的地方在encode。題主讀入(read)和輸出(print)在一行里,要在win下面想不出錯(cuò)就這么寫 print response.decode('utf-8').encode('gbk')

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),新林企業(yè)網(wǎng)站建設(shè),新林品牌網(wǎng)站建設(shè),網(wǎng)站定制,新林網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,新林網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

python的seaborn.kdeplot有什么用

kde(kernel density estimation)是核密度估計(jì)。核的作用是根據(jù)離散采樣,估計(jì)連續(xù)密度分布。

如果原始采樣是《陰陽(yáng)師》里的式神,那么kernel(核函數(shù))就相當(dāng)于御魂。

假設(shè)現(xiàn)在有一系列離散變量X = [4, 5, 5, 6, 12, 14, 15, 15, 16, 17],可見(jiàn)5和15的概率密度應(yīng)該要高一些,但具體有多高呢?有沒(méi)有三四層樓那么高,有沒(méi)有華萊士高?如果要估計(jì)的是沒(méi)有出現(xiàn)過(guò)的3呢?這就要自己判斷了。

核函數(shù)就是給空間的每個(gè)離散點(diǎn)都套上一個(gè)連續(xù)分布。最簡(jiǎn)單的核函數(shù)是Parzen窗,類似一個(gè)方波:

這時(shí)候單個(gè)離散點(diǎn)就可以變成區(qū)間,空間或者高維空間下的超立方,實(shí)質(zhì)上是進(jìn)行了升維。

設(shè)h=4,則3的概率密度為:

(只有4對(duì)應(yīng)的核函數(shù)為1,其他皆為0)

kernel是非負(fù)實(shí)值對(duì)稱可積函數(shù),表示為K,且一本滿足:

這樣才能保證cdf仍為1。

實(shí)際上應(yīng)用最多的是高斯核函數(shù)(Gaussian Kernel),也就是標(biāo)準(zhǔn)正態(tài)分布。所謂核密度估計(jì)就是把所有離散點(diǎn)的核函數(shù)加起來(lái),得到整體的概率密度分布。核密度估計(jì)在很多機(jī)器學(xué)習(xí)算法中都有應(yīng)用,比如K近鄰、K平均等。

在支持向量機(jī)里,也有“核”的概念,同樣也是給數(shù)據(jù)升維,最常用的還是高斯核函數(shù),也叫徑向基函數(shù)(Radial Basis Funtion)。

seaborn.kdeplot內(nèi)置了多種kerne,總有一款適合你。

Python中怎樣編寫混合核函數(shù)?

這個(gè)和用不用python沒(méi)啥關(guān)系,是數(shù)據(jù)來(lái)源的問(wèn)題。 調(diào)用淘寶API,使用 api相關(guān)接口獲得你想要的內(nèi)容,我 記得api中有相關(guān)的接口,你可以看一下接口的說(shuō)明。 用python做爬蟲來(lái)進(jìn)行頁(yè)面數(shù)據(jù)的獲齲。

支持向量機(jī)—從推導(dǎo)到python手寫

筆者比較懶能截圖的地方都截圖了。

支持向量機(jī)分為三類:

(1)線性可分支持向量機(jī),樣本線性可分,可通過(guò)硬間隔最大化訓(xùn)練一個(gè)分類器。

(2)線性支持向量機(jī),樣本基本線性可分,可通過(guò)軟間隔最大化訓(xùn)練一個(gè)分類器。

(3)非線性支持向量機(jī),樣本線性不可分,可通過(guò)核函數(shù)和軟間隔最大化訓(xùn)練一個(gè)分類器。

上面最不好理解的恐怕就是硬間隔和軟間隔了,

說(shuō)白了硬間隔就是說(shuō)存在這么一個(gè)平面,可以把樣本完全正確無(wú)誤的分開,當(dāng)然這是一種極理想的情況,現(xiàn)實(shí)中不存在,所以就有了軟間隔。

軟間隔說(shuō)的是,不存在一個(gè)平面可以把樣本完全正確無(wú)誤的分開,因此呢允許一些樣本被分錯(cuò),怎么做呢就是加入松弛變量,因?yàn)橄M皱e(cuò)的樣本越小越好,因此松弛變量也有約束條件。加入松弛變量后,問(wèn)題就變?yōu)榫€性可分了,因?yàn)槭敲恳粋€(gè)樣本都線性可分,因此松弛變量是針對(duì)樣本的,每一個(gè)樣本都對(duì)應(yīng)一個(gè)不同的松弛變量。

其實(shí)感知機(jī)說(shuō)白了就是找到一條直線把樣本點(diǎn)分開,就是上方都是一類,下方是另一類。當(dāng)然完全分開是好事,往往是不能完全分開的,因此就存在一個(gè)損失函數(shù),就是誤分類點(diǎn)到這個(gè)平面的距離最短:

這里啰嗦一句,誤分類點(diǎn)y*(wx+b)0,所以加個(gè)負(fù)號(hào)在前邊。

一般情況下||w||都是可以縮放,那么我們把它縮放到1,最后的目標(biāo)函數(shù)就變成了

間隔就是距離,我們假設(shè)分離超平面為 ,那么樣本點(diǎn)到這個(gè)平面的距離可以記為 。我們都知道通過(guò)感知機(jī)劃分的點(diǎn),超平面上方的點(diǎn) ,下方的點(diǎn) ,然后通過(guò)判斷 的值與y的符號(hào)是否一致來(lái)判斷分類是否正確。根據(jù)這個(gè)思路函數(shù)間隔定義為:

支持向量的定義來(lái)源于幾何間隔,幾何間隔最直接的解釋是離分隔超平面最近點(diǎn)的距離,其他任何點(diǎn)到平面的距離都大于這個(gè)值,所以幾何間隔就是支持向量。然后呢同樣道理,w和b是可以縮放的,所以定義支持向量滿足如下條件:

再通俗一點(diǎn)說(shuō),支持向量是一些點(diǎn),這些點(diǎn)到分隔平面的距離最近,為了便于表示,把他們進(jìn)行一下縮放計(jì)算,讓他們滿足了wx+b=+-1.

核函數(shù)是支持向量機(jī)的核心概念之一,它存在的目的就是將維度轉(zhuǎn)換之后的計(jì)算簡(jiǎn)化,達(dá)到減少計(jì)算量的目的。我們都知道支持向量機(jī)求的是間距最大化,通常情況下我們求得的alpha都等于0,因此支持向量決定了間距最大化程度。

核函數(shù)的形式是這樣的

其中x(i)和x(j)都是向量,他們兩個(gè)相乘就是向量?jī)?nèi)積,相乘得到一個(gè)數(shù)。剛才說(shuō)了目標(biāo)函數(shù)一般只和支持向量有關(guān),因此在做核函數(shù)計(jì)算之前,實(shí)際就是選擇的支持向量進(jìn)行計(jì)算。

這個(gè)寫完下面得再補(bǔ)充

我們知道了支持向量的概念,那么支持向量機(jī)的目標(biāo)函數(shù)是要使這兩個(gè)支持向量之間的距離盡可能的遠(yuǎn),因?yàn)檫@樣才能更好地把樣本點(diǎn)分開,當(dāng)然支持向量也要滿足最基本的約束條件,那就是分類正確,還有就是其他點(diǎn)到分隔平面的距離要大于等于支持向量到分隔平面的距離。

這種凸優(yōu)化問(wèn)題都可以通過(guò)拉格朗日算子進(jìn)行優(yōu)化,就是把約束條件通過(guò)拉格朗日系數(shù)放到目標(biāo)函數(shù)上。這部分基礎(chǔ)知識(shí),就是拉格朗日算法可以將等式約束和不等式約束都加到目標(biāo)函數(shù)上,完成求解問(wèn)題的轉(zhuǎn)換,但是要滿足一些約束條件,也就是我們后邊要說(shuō)的kkt條件。

這里有個(gè)細(xì)節(jié)就是轉(zhuǎn)換時(shí)候的加減號(hào)問(wèn)題,這個(gè)和目標(biāo)函數(shù)還有約束的正負(fù)號(hào)有關(guān)。一般這么理解,就是求最小化問(wèn)題時(shí)候,如果約束是大于0的,那么拉個(gè)朗日算子可以減到這一部分,這樣一來(lái)目標(biāo)函數(shù)只能越來(lái)越小,最優(yōu)解就是約束為0的時(shí)候,這個(gè)時(shí)候和沒(méi)有約束的等價(jià),再求最小就是原問(wèn)題了。

這里是最小化問(wèn)題,直接減掉這部分約束,然后后半部分永遠(yuǎn)大于等于0所以這個(gè)式子的值是要小于原來(lái)目標(biāo)函數(shù)值的。我們知道當(dāng)x滿足原問(wèn)題的約束條件的時(shí)候,最大化L就等于那個(gè)原目標(biāo)函數(shù)。所以我們可以把這個(gè)問(wèn)題轉(zhuǎn)化為:

把它帶回去原來(lái)的目標(biāo)函數(shù)中,整理一下。

這個(gè)時(shí)候只要求最優(yōu)的α,就可以求出w和b了。我們上邊做了那么一堆轉(zhuǎn)換,這個(gè)過(guò)程要滿足一個(gè)叫做kkt條件的東西,其實(shí)這個(gè)東西就是把一堆約束條件整理到一起。

(1)原有問(wèn)題的可行性,即h(x )=0,g(x )0

放到這里就是:

SMO算法的核心思想是求出最優(yōu)化的α,然后根據(jù)之前推導(dǎo)得到的w,b,α之間的關(guān)系計(jì)算得到w和b,最后的計(jì)算公式是:

現(xiàn)在的問(wèn)題就是怎么求α了。

SMO算法總共分兩部分,一部分是求解兩個(gè)α的二次規(guī)劃算法,另一部分是選擇兩個(gè)α的啟發(fā)式算法。

先說(shuō)這個(gè)選擇α的啟發(fā)式算法部分:大神可以證明優(yōu)先優(yōu)化違反kkt條件的α可以最快獲得最優(yōu)解,至于咋證明的,就先不看了。

在講支持向量機(jī)的求解算法時(shí)候,直接給出了核函數(shù)K,那么怎么去理解核函數(shù)呢。核函數(shù)的作用是解決樣本點(diǎn)在高維空間的內(nèi)積運(yùn)算問(wèn)題,怎么理解呢,通常的分類問(wèn)題都是有很多個(gè)特征的,然后為了達(dá)到現(xiàn)線性可分,又會(huì)從低維映射到高維,樣本量再一多計(jì)算量非常大,因此先通過(guò)函數(shù)進(jìn)行一個(gè)轉(zhuǎn)換,減少乘法的計(jì)算量。

要理解核函數(shù),先理解內(nèi)積運(yùn)算,內(nèi)積運(yùn)算實(shí)際是兩個(gè)向量,對(duì)應(yīng)位置相乘加和,比如我有x1 = [v1,v2], x2=[w1,w2],那么x1和x2的內(nèi)積計(jì)算方法就是:v1w1+v2w2。

如果上面那種情況線性不可分,需要到高維進(jìn)行映射,讓數(shù)據(jù)變得線性可分,然后數(shù)據(jù)變?yōu)槲寰S的,即v1 2+v2 2+v1+v2+v1v2,然后再進(jìn)行一次內(nèi)積計(jì)算,數(shù)據(jù)變?yōu)? 。

稍作變換,可以變?yōu)? ,形式展開和上邊那個(gè)長(zhǎng)式子差不多,然后其實(shí)可以映射內(nèi)積相乘的情況,所以可以進(jìn)行核函數(shù)的變化。

問(wèn)題在于,當(dāng)你需要顯式的寫出來(lái)映射形式的時(shí)候,在維度很高的時(shí)候,需要計(jì)算的量太大,比如x1有三個(gè)維度,再進(jìn)行映射就有19維度了,計(jì)算很復(fù)雜。如果用核函數(shù),還是在原來(lái)低維度進(jìn)行運(yùn)算,既有相似的效果(映射到高維),又低運(yùn)算量,這就是核函數(shù)的作用了。

核函數(shù)的種類:

這部分的核心在于SMO算法的編寫。有待補(bǔ)充。

2020-05-22 第十三章 支持向量機(jī)模型(python)

SVM 是 Support Vector Machine 的簡(jiǎn)稱,它的中文名為支持向量機(jī),屬于一種有監(jiān)督的機(jī)器學(xué)習(xí)算法,可用于離散因變量的分類和連續(xù)因變量的預(yù)測(cè)。通常情況下,該算法相對(duì)于其他單一的分類算法(如 Logistic 回歸、決策樹、樸素貝葉斯、 KNN 等)會(huì)有更好的預(yù)測(cè)準(zhǔn)確率,主要是因?yàn)樗梢詫⒌途S線性不可分的空間轉(zhuǎn)換為高維的線性可分空間。

“分割帶”代表了模型劃分樣本點(diǎn)的能力或可信度,“分割帶”越寬,說(shuō)明模型能夠?qū)颖军c(diǎn)劃分得越清晰,進(jìn)而保證模型泛化能力越強(qiáng),分類的可信度越高;反之,“分割帶”越窄,說(shuō)明模型的準(zhǔn)確率越容易受到異常點(diǎn)的影響,進(jìn)而理解為模型的預(yù)測(cè)能力越弱,分類的可信度越低。

線性可分的 所對(duì)應(yīng)的函數(shù)間隔滿足 的條件,故 就等于 。所以,可以將目標(biāo)函數(shù) 等價(jià)為如下的表達(dá)式:

假設(shè)存在一個(gè)需要最小化的目標(biāo)函數(shù) ,并且該目標(biāo)函數(shù)同時(shí)受到 的約束。如需得到最優(yōu)化的解,則需要利用拉格朗日對(duì)偶性將原始的最優(yōu)化問(wèn)題轉(zhuǎn)換為對(duì)偶問(wèn)題,即:

分割面的求解

分割面的表達(dá)式

對(duì)于非線性SVM模型而言,需要經(jīng)過(guò)兩個(gè)步驟,一個(gè)是將原始空間中的樣本點(diǎn)映射到高維的新空間中,另一個(gè)是在新空間中尋找一個(gè)用于識(shí)別各類別樣本點(diǎn)線性“超平面”。

假設(shè)原始空間中的樣本點(diǎn)為 ,將樣本通過(guò)某種轉(zhuǎn)換 映射到高維空間中,則非線性SVM模型的目標(biāo)函數(shù)可以表示為:

其中,內(nèi)積 可以利用核函數(shù)替換,即 。對(duì)于上式而言,同樣需要計(jì)算最優(yōu)的拉格朗日乘積 ,進(jìn)而可以得到線性“超平面” 與 的值:

假設(shè)原始空間中的兩個(gè)樣本點(diǎn)為 ,在其擴(kuò)展到高維空間后,它們的內(nèi)積 如果等于樣本點(diǎn) 在原始空間中某個(gè)函數(shù)的輸出,那么該函數(shù)就稱為核函數(shù)。

線性核函數(shù)的表達(dá)式為 ,故對(duì)應(yīng)的分割“超平面”為:

多項(xiàng)式核函數(shù)的表達(dá)式為 ,故對(duì)應(yīng)的分割“超平面”為:

高斯核函數(shù)的表達(dá)式為 ,故對(duì)應(yīng)的分割“超平面”為:

Sigmoid 核函數(shù)的表達(dá)式為 ,故對(duì)應(yīng)的分割“超平面”為:

在實(shí)際應(yīng)用中, SVM 模型對(duì)核函數(shù)的選擇是非常敏感的,所以需要通過(guò)先驗(yàn)的領(lǐng)域知識(shí)或者交叉驗(yàn)證的方法選出合理的核函數(shù)。大多數(shù)情況下,選擇高斯核函數(shù)是一種相對(duì)偷懶而有效的方法,因?yàn)楦咚购耸且环N指數(shù)函數(shù),它的泰勒展開式可以是無(wú)窮維的,即相當(dāng)于把原始樣本點(diǎn)映射到高維空間中。

output_13_0.png

如何利用 Python 實(shí)現(xiàn) SVM 模型

我先直觀地闡述我對(duì)SVM的理解,這其中不會(huì)涉及數(shù)學(xué)公式,然后給出Python代碼。

SVM是一種二分類模型,處理的數(shù)據(jù)可以分為三類:

線性可分,通過(guò)硬間隔最大化,學(xué)習(xí)線性分類器

近似線性可分,通過(guò)軟間隔最大化,學(xué)習(xí)線性分類器

線性不可分,通過(guò)核函數(shù)以及軟間隔最大化,學(xué)習(xí)非線性分類器

線性分類器,在平面上對(duì)應(yīng)直線;非線性分類器,在平面上對(duì)應(yīng)曲線。

硬間隔對(duì)應(yīng)于線性可分?jǐn)?shù)據(jù)集,可以將所有樣本正確分類,也正因?yàn)槿绱耍茉肼晿颖居绊懞艽?,不推薦。

軟間隔對(duì)應(yīng)于通常情況下的數(shù)據(jù)集(近似線性可分或線性不可分),允許一些超平面附近的樣本被錯(cuò)誤分類,從而提升了泛化性能。

如下圖:

實(shí)線是由硬間隔最大化得到的,預(yù)測(cè)能力顯然不及由軟間隔最大化得到的虛線。

對(duì)于線性不可分的數(shù)據(jù)集,如下圖:

我們直觀上覺(jué)得這時(shí)線性分類器,也就是直線,不能很好的分開紅點(diǎn)和藍(lán)點(diǎn)。

但是可以用一個(gè)介于紅點(diǎn)與藍(lán)點(diǎn)之間的類似圓的曲線將二者分開,如下圖:

我們假設(shè)這個(gè)黃色的曲線就是圓,不妨設(shè)其方程為x^2+y^2=1,那么核函數(shù)是干什么的呢?

我們將x^2映射為X,y^2映射為Y,那么超平面變成了X+Y=1。

那么原空間的線性不可分問(wèn)題,就變成了新空間的(近似)線性可分問(wèn)題。

此時(shí)就可以運(yùn)用處理(近似)線性可分問(wèn)題的方法去解決線性不可分?jǐn)?shù)據(jù)集的分類問(wèn)題。

---------------------------------------------------------------------------------------------------------------------------

以上我用最簡(jiǎn)單的語(yǔ)言粗略地解釋了SVM,沒(méi)有用到任何數(shù)學(xué)知識(shí)。但是沒(méi)有數(shù)學(xué),就體會(huì)不到SVM的精髓。因此接下來(lái)我會(huì)用盡量簡(jiǎn)潔的語(yǔ)言敘述SVM的數(shù)學(xué)思想,如果沒(méi)有看過(guò)SVM推導(dǎo)過(guò)程的朋友完全可以跳過(guò)下面這段。

對(duì)于求解(近似)線性可分問(wèn)題:

由最大間隔法,得到凸二次規(guī)劃問(wèn)題,這類問(wèn)題是有最優(yōu)解的(理論上可以直接調(diào)用二次規(guī)劃計(jì)算包,得出最優(yōu)解)

我們得到以上凸優(yōu)化問(wèn)題的對(duì)偶問(wèn)題,一是因?yàn)閷?duì)偶問(wèn)題更容易求解,二是引入核函數(shù),推廣到非線性問(wèn)題。

求解對(duì)偶問(wèn)題得到原始問(wèn)題的解,進(jìn)而確定分離超平面和分類決策函數(shù)。由于對(duì)偶問(wèn)題里目標(biāo)函數(shù)和分類決策函數(shù)只涉及實(shí)例與實(shí)例之間的內(nèi)積,即xi,xj。我們引入核函數(shù)的概念。

拓展到求解線性不可分問(wèn)題:

如之前的例子,對(duì)于線性不可分的數(shù)據(jù)集的任意兩個(gè)實(shí)例:xi,xj。當(dāng)我們?nèi)∧硞€(gè)特定映射f之后,f(xi)與f(xj)在高維空間中線性可分,運(yùn)用上述的求解(近似)線性可分問(wèn)題的方法,我們看到目標(biāo)函數(shù)和分類決策函數(shù)只涉及內(nèi)積f(xi),f(xj)。由于高維空間中的內(nèi)積計(jì)算非常復(fù)雜,我們可以引入核函數(shù)K(xi,xj)=f(xi),f(xj),因此內(nèi)積問(wèn)題變成了求函數(shù)值問(wèn)題。最有趣的是,我們根本不需要知道映射f。精彩!

我不準(zhǔn)備在這里放推導(dǎo)過(guò)程,因?yàn)橐呀?jīng)有很多非常好的學(xué)習(xí)資料,如果有興趣,可以看:CS229 Lecture notes

最后就是SMO算法求解SVM問(wèn)題,有興趣的話直接看作者論文:Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines

我直接給出代碼:SMO+SVM

在線性可分?jǐn)?shù)據(jù)集上運(yùn)行結(jié)果:

圖中標(biāo)出了支持向量這個(gè)非常完美,支持向量都在超平面附近。

在線性不可分?jǐn)?shù)據(jù)集上運(yùn)行結(jié)果(200個(gè)樣本):

核函數(shù)用了高斯核,取了不同的sigma

sigma=1,有189個(gè)支持向量,相當(dāng)于用整個(gè)數(shù)據(jù)集進(jìn)行分類。

sigma=10,有20個(gè)支持向量,邊界曲線能較好的擬合數(shù)據(jù)集特點(diǎn)。

我們可以看到,當(dāng)支持向量太少,可能會(huì)得到很差的決策邊界。如果支持向量太多,就相當(dāng)于每次都利用整個(gè)數(shù)據(jù)集進(jìn)行分類,類似KNN。


本文名稱:python核函數(shù),python核函數(shù)擬合
本文鏈接:http://weahome.cn/article/hciopg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部