機(jī)器學(xué)習(xí)系統(tǒng)設(shè)計(jì)
第九十三課:確定執(zhí)行的優(yōu)先級(jí)
當(dāng)你在設(shè)計(jì)復(fù)雜的機(jī)器學(xué)習(xí)系統(tǒng)時(shí)所面臨的主要問題,并會(huì)在如何制定一個(gè)復(fù)雜的機(jī)器學(xué)習(xí)系統(tǒng)方面給出一些建議!
首先,在實(shí)際工過程中,我們應(yīng)該優(yōu)先處理哪些事情?

如何通過監(jiān)督學(xué)習(xí)的方法來構(gòu)造一個(gè)分類器,區(qū)分垃圾郵件和非垃圾郵件呢?
選擇單詞作為特征,單詞是否出現(xiàn)就組成了特征向量組!

如何在有限的時(shí)間內(nèi),讓你的垃圾郵件分類器具有高精準(zhǔn)度和低錯(cuò)誤率?

1.一種很容易想到的就是收集大量數(shù)據(jù),數(shù)據(jù)收集的越多,分類就越準(zhǔn)確。
2.用更復(fù)雜的特征變量來描述郵件,例如郵件人標(biāo)題。
3.關(guān)注郵件的主體部分并構(gòu)建更復(fù)雜的特征
...
有些時(shí)候花時(shí)間去研究這些方法那個(gè)更有效是徒勞的,所以有的人最后就干脆隨機(jī)決定使用哪種方法。
如何更加系統(tǒng)的選擇一種方式來增加算法的成功率呢?
第九十四課:誤差分析
它能幫助你更系統(tǒng)的在眾多方法中作出選擇。

如果你準(zhǔn)備從事研發(fā)機(jī)器學(xué)習(xí)產(chǎn)品,或者開發(fā)機(jī)器學(xué)習(xí)應(yīng)用。通常來說,最好的辦法,不是建立一個(gè)很復(fù)雜的有許多復(fù)雜特征的系統(tǒng),而是通過一個(gè)簡單的算法來快速實(shí)現(xiàn)它。每當(dāng)我開始一個(gè)機(jī)器學(xué)習(xí)問題時(shí),我最多只會(huì)花一天時(shí)間,把這個(gè)項(xiàng)目簡單粗暴的做出來,而不是設(shè)計(jì)一個(gè)很復(fù)雜的系統(tǒng)。即使這個(gè)速成的東西不是很完美,但是通過交叉驗(yàn)證集來測(cè)試數(shù)據(jù),做完這些以后,你就能畫出相應(yīng)學(xué)習(xí)曲線,通過畫出的學(xué)習(xí)曲線以及檢驗(yàn)誤差,來找出你的算法是否存在高偏差或者高方差的問題。作出這些分析以后,再來決定是否使用更多的數(shù)據(jù)或者特征等等。因?yàn)槟悴⒉荒茯?yàn)證你是需要更多的特征還是需要更多的數(shù)據(jù),在缺乏各種數(shù)據(jù)的前提下,你很難提前知道這些,因?yàn)槟銢]有畫出學(xué)習(xí)曲線。所以應(yīng)當(dāng)先進(jìn)行一次簡單快速的實(shí)現(xiàn),然后畫出學(xué)習(xí)曲線來幫助你進(jìn)行之后的判斷。你要避免出現(xiàn)過早優(yōu)化的問題,這種思想告訴我們,我們應(yīng)當(dāng)用實(shí)際的證據(jù)來指導(dǎo)我們的決策,來決定把時(shí)間花在哪里而不是憑直覺?
除了繪制學(xué)習(xí)曲線還有一件非常有用的事,就是誤差分析。通過觀察交叉驗(yàn)證集的情況,然后看一看那些被算法錯(cuò)誤分類的文件有什么共同的規(guī)律和特征。這樣就可以啟發(fā)你應(yīng)該設(shè)計(jì)怎么樣的新特征,或是告訴你現(xiàn)在的算法有什么優(yōu)點(diǎn)和缺點(diǎn),然后指導(dǎo)你想出辦法來改進(jìn)它。
舉個(gè)具體地例子:

對(duì)出現(xiàn)錯(cuò)誤分類的例子進(jìn)行總結(jié)和應(yīng)對(duì),手動(dòng)誤差分析??梢钥焖僬业剿惴ǖ牟蛔愫碗y以處理的樣本類型,然后集中精力在它們上面。
另一個(gè)技巧是保證自己對(duì)學(xué)習(xí)算法有一種數(shù)值估計(jì)的方法。當(dāng)你改進(jìn)學(xué)習(xí)算法的時(shí)候,如果你的算法能夠返回一個(gè)數(shù)值評(píng)價(jià)指標(biāo)來估計(jì)算法執(zhí)行的效果將會(huì)很有幫助??赡芩惴ㄊ菧?zhǔn)確的,也有可能是錯(cuò)誤的。但是這個(gè)數(shù)字能告訴你,你的學(xué)習(xí)算法效果有多好。

錯(cuò)誤率數(shù)值變化,對(duì)這個(gè)特定的問題,這個(gè)很自然的單一規(guī)則的數(shù)值評(píng)價(jià)指標(biāo)叫做交叉驗(yàn)證錯(cuò)誤率。它能更快的幫你決定是否使用詞干提取器軟件!
強(qiáng)烈推薦在交叉驗(yàn)證集上做誤差分析,而不是在測(cè)試集上。
第九十五課:不對(duì)稱性分類的誤差評(píng)估
誤差分析以及設(shè)定誤差度量值非常重要,設(shè)定某個(gè)實(shí)數(shù)來評(píng)估你的學(xué)習(xí)算法并衡量它的表現(xiàn),有了算法的評(píng)估和誤差度量值,有一件重要的事情需要注意:就是使用一個(gè)合適的誤差度量值有時(shí)會(huì)對(duì)你的學(xué)習(xí)算法造成非常微妙的影響。這個(gè)重要的問題就是偏斜類問題。
正例和負(fù)例的比率非常接近于一個(gè)極端情況,例子中正樣本的數(shù)量與負(fù)樣本的數(shù)量相比非常非常少,我們把這種情況叫做偏斜類。一個(gè)類中的樣本數(shù)與另一個(gè)類的數(shù)據(jù)相比多很多。因此使用分類誤差或者分類精確度來作為評(píng)估度量可能會(huì)產(chǎn)生問題。

因此當(dāng)出現(xiàn)偏斜類問題時(shí),我們希望有一個(gè)不同的誤差度量值或者不同的評(píng)估度量值,其中一種誤差度量值叫做查準(zhǔn)率和召回率。

查準(zhǔn)率和召回率越高越好。通過查準(zhǔn)率和召回率我們可以知道分類模型到底好不好。總的來說,即使我們有一個(gè)非常偏斜的類,算法也不能夠欺騙我們,僅僅通過預(yù)測(cè)y總是等于0或者1,它沒辦法得到高的查準(zhǔn)率和高的召回率。因此我們能夠肯定擁有高查準(zhǔn)率和高召回率的模型是一個(gè)好的分類模型。這給予了我們一個(gè)更好的評(píng)估值,就更直接的方法來評(píng)估模型的好壞。
最后記住一件事,在查準(zhǔn)率和召回率的定義中,我們總是習(xí)慣性的用y = 1,如果這個(gè)類出現(xiàn)的非常少,因此如果我們?cè)噲D檢測(cè)某種稀少的情況,比如患癌癥的概率,我們會(huì)把查準(zhǔn)率和召回率定義為y = 1。
第九十六課:精確度和召回率的權(quán)衡
查準(zhǔn)率和召回率作為算法評(píng)估度量值更有效方式?
取決于你要什么!

有沒有辦法自動(dòng)選擇臨界值?
平均值貌似不是一個(gè)好主意。F值可以檢測(cè),是因?yàn)樗髢烧叨夹枰艽蟆?/p>

通過變動(dòng)臨界值,你可以控制權(quán)衡查準(zhǔn)率和召回率,通過F值權(quán)衡給你一個(gè)評(píng)估度量值。
第九十八課:機(jī)器學(xué)習(xí)數(shù)據(jù)
機(jī)器學(xué)習(xí)系統(tǒng)設(shè)計(jì)中被訓(xùn)練的數(shù)據(jù)有多少?
在有些條件下,得到大量的數(shù)據(jù)并在某種類型的學(xué)習(xí)算法中進(jìn)行訓(xùn)練,可以是一種有效的方法來獲得一個(gè)具有良好性能的學(xué)習(xí)算法。這種情況往往出現(xiàn)在這些條件對(duì)你的問題都成立,并且你能夠得到大量的數(shù)據(jù)的情況下。這可以是一個(gè)很好的方式來獲得非常高性能的學(xué)習(xí)算法。

并不是擁有最好算法的人能成功,而是擁有最多數(shù)據(jù)的人能成功。

給定一個(gè)輸入特征向量x,給定這些特征值,也給定了相同的可用的信息和學(xué)習(xí)算法,加入我們?nèi)ト祟悓<疫@個(gè)領(lǐng)域,一個(gè)人類學(xué)家能夠準(zhǔn)確或自信的預(yù)測(cè)出y值么?

假設(shè)特征值有足夠的信息來預(yù)測(cè)y值,假設(shè)我們使用一種需要大量參數(shù)的學(xué)習(xí)算法,也許是有很多特征值的邏輯回歸或線性回歸。實(shí)際上是在利用許多隱藏單元的神經(jīng)網(wǎng)絡(luò),它們有很復(fù)雜的參數(shù),這些參數(shù)可以擬合非常復(fù)雜的函數(shù),低偏差算法,我們能夠擬合非常復(fù)雜的函數(shù),而且因?yàn)槲覀冇蟹浅?qiáng)大的學(xué)習(xí)算法,如果我們用數(shù)據(jù)訓(xùn)練這些算法,它能很好的擬合訓(xùn)練集,訓(xùn)練誤差就會(huì)很低。如果訓(xùn)練集比參數(shù)的數(shù)量更多,那么這些算法就不太可能會(huì)過度擬合。綜合測(cè)試集的誤差也會(huì)很小。
關(guān)鍵的假設(shè)是:特征值有足夠的信息量,有一類很好的函數(shù),這是為什么能保證低誤差的關(guān)鍵所在,它有大量的訓(xùn)練數(shù)據(jù)集,這能保證得到更多的方差值。
如果你有大量的數(shù)據(jù),而且你訓(xùn)練了一種帶有很多參數(shù)的學(xué)習(xí)算法,那么這將會(huì)是一個(gè)很好的方式來提供一個(gè)高性能學(xué)習(xí)算法。
支持向量機(jī)
第一百零一課:優(yōu)化目標(biāo)
在監(jiān)督學(xué)習(xí)中,很多監(jiān)督學(xué)習(xí)算法的性能都非常相似,所以經(jīng)常要考慮的東西,不是選擇算法,而是更多的去考慮,你構(gòu)建這些算法時(shí)所使用的數(shù)據(jù)量,這就體現(xiàn)了你使用這些算法的技巧。
特征選擇
正則化參數(shù)的選擇
..
支持向量機(jī)(SVM),更清晰更強(qiáng)大的算法。
優(yōu)化目標(biāo):
從logistic回歸開始,看看如何作一些小小的改動(dòng)來得到一個(gè)支持向量機(jī)。

考慮單獨(dú)一項(xiàng)對(duì)logistic回歸總體代價(jià)函數(shù)的貢獻(xiàn):

畫一條直線,它和logistic代價(jià)函數(shù)的曲線非常相似,兩端直線組成。它的效果將和logistic回歸非常相似,但是支持向量機(jī)將擁有計(jì)算上的優(yōu)勢(shì),并且使得之后的優(yōu)化問題變得簡單,更容易解決。
有了定義以后,構(gòu)建支持向量機(jī):
和logistic回歸控制權(quán)衡的方式不同,在A前面加上系數(shù)C,這是一種不同的參數(shù)設(shè)置方法,來決定我們是更關(guān)心第一項(xiàng)的優(yōu)化還是第二項(xiàng)的優(yōu)化,

和logistic回歸不同的是,SVM并不會(huì)輸出概率,相對(duì)的我們得到的是通過優(yōu)化這個(gè)代價(jià)函數(shù),得到一個(gè)參數(shù)θ,支持向量機(jī)所做的是進(jìn)行了一個(gè)直接的預(yù)測(cè),預(yù)測(cè)y = 0/1。這就是支持向量機(jī)的假設(shè)函數(shù)形式:

接下來更直觀的角度看一下支持向量機(jī)的優(yōu)化目標(biāo)是什么,以及SVM學(xué)到的假設(shè)函數(shù)會(huì)是什么樣的?如何進(jìn)行一些修改以便學(xué)習(xí)更加復(fù)雜的非線性函數(shù)?
第一百零二課:直觀上對(duì)大間隔的理解
支持向量機(jī):大間距分類器,如何通過直觀的圖像理解SVM假設(shè)?
性質(zhì):如果你有一個(gè)正樣本,比如y = 1,我們只需要使θ的轉(zhuǎn)置乘以x大于等于0就能正確的進(jìn)行分類。如果你有一個(gè)負(fù)樣本,比如y = 0,我們只需要使θ的轉(zhuǎn)置乘以x小于0就能正確的進(jìn)行分類。但是支持向量機(jī)不是恰好能正確分類就行了,我們需要的是比0/1大很多。這就相當(dāng)于在SVM中構(gòu)建了一個(gè)安全因子,一個(gè)安全間距。在支持向量機(jī)中,這個(gè)因子會(huì)產(chǎn)生什么影響?

當(dāng)C是一個(gè)非常大的數(shù)時(shí):


因此你會(huì)得到一個(gè)很有趣的決策邊界:

黑線看起來是更穩(wěn)健的決策邊界,能更好的分開正樣本和負(fù)樣本。從數(shù)學(xué)上說,黑色直線擁有更大的距離,這個(gè)距離叫做間距,它和訓(xùn)練樣本的最小距離要更大一些。
支持向量機(jī)的間距,這使得支持向量機(jī)具有魯棒性。因?yàn)樗诜蛛x數(shù)據(jù)時(shí),會(huì)盡量用大的間距去分離,因此有時(shí)被稱為大間距分類器。
為什么這個(gè)優(yōu)化問題能得到這個(gè)大間距分類器?

此外,當(dāng)你使用大間距分類器的時(shí)候,這時(shí)你的學(xué)習(xí)算法對(duì)異常點(diǎn)會(huì)很敏感。黑線變成粉紅線,這是C非常大的情況。如果c不是非常大,那么會(huì)變回黑線(忽略異常點(diǎn))。
正則化參數(shù)的權(quán)衡?
第一百零三課:大間隔分類器的數(shù)學(xué)原理
支持向量機(jī)的優(yōu)化問題和大間距分類器之間的聯(lián)系?

用向量內(nèi)積的形式嘗試?yán)斫庵С窒蛄繖C(jī)的優(yōu)化目標(biāo)函數(shù)。
對(duì)優(yōu)化目標(biāo)函數(shù)來說,支持向量機(jī)做的就是最小化參數(shù)向量θ的范數(shù)的平法,或者說是長度的平方。

參數(shù)向量θ事實(shí)上是與決策邊界90度正交的,令θ = 0,那么決策邊界必須過原點(diǎn)。

支持向量機(jī)優(yōu)化目標(biāo)函數(shù)最終會(huì)找到大間距分類器:試圖最大化這些p^(i)的范數(shù),也就是訓(xùn)練樣本到?jīng)Q策邊界的距離。
第一百零四課:核函數(shù)
改造向量機(jī)算法來構(gòu)建復(fù)雜的非線性分類器,主要的技巧就是被稱為“核”的東西。核函數(shù)是什么以及如何使用它?

對(duì)于計(jì)算機(jī)視覺,輸入是一個(gè)由大量像素組成的圖像,我們也見到了高階的多項(xiàng)式,運(yùn)算量將是非常大的,因?yàn)橛泻芏喔唠A多項(xiàng)式,我們是否有不同的或者是更好的特征的選擇,我們可以用來嵌入到假設(shè)函數(shù)中,有一個(gè)可以構(gòu)造新特征f1、f2、f3的方法:

引入相似度度量similarity,相似度函數(shù)similarity就是一個(gè)核函數(shù)(高斯核函數(shù))。
k(x, l(i))

核函數(shù)到底做了什么?
給定一個(gè)訓(xùn)練樣本x,我們可以計(jì)算三個(gè)新的特征f1、f2、f3(基于之前給的三個(gè)標(biāo)記)。

衡量的是特征變量的值減小的速度。

上圖就是我們?nèi)绾味x標(biāo)記點(diǎn)和核函數(shù)來訓(xùn)練出非常復(fù)雜的非線性決策邊界的方法。我們是如何使用核函數(shù)的呢?我們通過標(biāo)記點(diǎn)和相似性函數(shù)來定義新的特征變量,從而訓(xùn)練復(fù)雜的非線性邊界。
理解核函數(shù)的概念以及我們?nèi)绾问褂盟谥С窒蛄繖C(jī)中定義新的特征變量。但還有一些問題?其中一個(gè)是我們?nèi)绾蔚玫竭@些標(biāo)記點(diǎn)?我們?nèi)绾芜x擇標(biāo)記點(diǎn)?相似度方程可以替代高斯函數(shù)么?
支持向量機(jī)如何通過核函數(shù)來有效的學(xué)習(xí)復(fù)雜非線性函數(shù)?
第一百零五課:核函數(shù)2
如何在實(shí)際中應(yīng)用這些思想?例如,如何處理支持向量機(jī)中的偏差方差折中?
如何選擇標(biāo)記點(diǎn)?在一些復(fù)雜的數(shù)學(xué)問題中,也許我們需要更多的標(biāo)記點(diǎn)?

我們擁有的每一個(gè)樣本點(diǎn),只需要直接使用它們,直接將訓(xùn)練樣本作為標(biāo)記點(diǎn)。即每一個(gè)標(biāo)記點(diǎn)的位置都與每一個(gè)樣本點(diǎn)的位置相對(duì)應(yīng)。這說明特征函數(shù)基本上實(shí)在描述每一個(gè)樣本距離與樣本集中其他樣本的距離。

給定核函數(shù)和相似度函數(shù)后,我們?nèi)绾问褂酶唵蔚闹С窒蛄繖C(jī)?

通過解決最小化問題,就得到了支持向量機(jī)的參數(shù)。這就是支持向量機(jī)的學(xué)習(xí)算法。
大多數(shù)支持向量機(jī)在實(shí)現(xiàn)的時(shí)候,其實(shí)是替換掉θTθ,用θT乘以某個(gè)矩陣M,這依賴于你采用的核函數(shù),再乘以θ^T。這其實(shí)是另一種略有區(qū)別的距離度量方法,我們用一種略有變化的度量來取代θ的模的平方,這意味著我們最小化了一種類似的度量。這是參數(shù)向量θ的縮放版本并取決于核函數(shù)。這個(gè)數(shù)學(xué)細(xì)節(jié),使得支持向量機(jī)能夠更有效率的運(yùn)行。為什么支持向量機(jī)做這種修改,這可以使它應(yīng)用更大的數(shù)量集。這個(gè)具體的實(shí)現(xiàn)細(xì)節(jié),盡管略微改變了優(yōu)化目標(biāo),但它主要是為了計(jì)算效率。
核函數(shù)不太好應(yīng)用到線性回歸和邏輯回歸上,但是可以和支持向量機(jī)相得益彰。
你不需要知道怎么去寫一個(gè)軟件來最小化代價(jià)函數(shù),因?yàn)槟憧梢哉业胶芎玫能浖鲞@些,而應(yīng)該使用人們開發(fā)的成熟的軟件包。這些軟件包已經(jīng)包含了那些數(shù)值優(yōu)化技巧。
另外一個(gè)問題,當(dāng)你選擇使用支持向量機(jī)時(shí),怎么選擇支持向量機(jī)中的參數(shù)?

偏差方差折中
大C:過擬合
小C:欠擬合
大σ:更平滑,高偏差低方差
大σ:不平滑,低偏差高方差
第一百零六課:使用SVM
為了運(yùn)行或者運(yùn)用SVM,你實(shí)際上所需要的一些東西?
特別優(yōu)化問題,不要自己寫代碼求解參數(shù)θ...只需要調(diào)用相關(guān)庫函數(shù)實(shí)現(xiàn)相應(yīng)功能。
你需要:
1.參數(shù)C的選擇
2.選擇內(nèi)核函數(shù)或你想要使用的相似函數(shù)(沒有核函數(shù),即線性核函數(shù),標(biāo)準(zhǔn)的線性分類器)
為什么會(huì)選擇使用線性核函數(shù)?
如果你有大量的特征,n很大,且m即訓(xùn)練的樣本數(shù)很小,那么你有大量的特征,卻只有很少的訓(xùn)練數(shù)集,那么你只想擬合一個(gè)線性的判定邊界,而不去擬合一個(gè)非常復(fù)雜的非線性函數(shù),因?yàn)闆]有足夠的數(shù)據(jù), 你可能會(huì)過度擬合。例如,在一個(gè)非常高維的特征空間中嘗試擬合非常復(fù)雜的函數(shù),但是如果你的訓(xùn)練集樣本很小的話,這將變成一個(gè)合理的設(shè)置。
3.如果選擇高斯函數(shù),選擇參數(shù)σ^2
什么時(shí)候選擇高斯函數(shù)?
如果你忽略了特征值x輸入R^n,如果n值很小,理想情況下,如果m值很大,那么如果我們有,比如一個(gè)二維的訓(xùn)練集,那么n = 2,但是有很多的訓(xùn)練數(shù)據(jù),然后你想用核函數(shù)去擬合相當(dāng)復(fù)雜非線性決策邊界,高斯核函數(shù)是一個(gè)不錯(cuò)的選擇。

但是如果你決定使用高斯核函數(shù),接下來就是需要根據(jù)使用的支持向量機(jī)軟件包,需要你實(shí)現(xiàn)一個(gè)核函數(shù)或者實(shí)現(xiàn)相似函數(shù),因此如果你用Octave或者matlab來實(shí)現(xiàn)支持向量機(jī)的話,就需要你提供一個(gè)函數(shù)來計(jì)算核函數(shù)的特征值。因此對(duì)應(yīng)一個(gè)i,需要計(jì)算fi,你需要做的是寫一個(gè)核函數(shù),讓它把向量x作為輸入,把輸入作為一種標(biāo)識(shí),即將x1,x2作為輸入的軟件,并用它們來計(jì)算這個(gè)相似函數(shù),之后返回一個(gè)實(shí)數(shù)。

因此很多SVM包需要用戶提供一個(gè)核函數(shù),能夠?qū)崿F(xiàn)x1,x2,并返回一個(gè)實(shí)數(shù),從這里開始,它將自動(dòng)地生成所有特征變量。自動(dòng)利用特征向量x并且映射到f1,f2...一直到fm,并且生成所有特征變量,并從這開始訓(xùn)練支持向量機(jī)。但是有些時(shí)候你要自己提供這個(gè)函數(shù),如果你使用高斯核函數(shù),一些SVM的函數(shù)實(shí)現(xiàn)也會(huì)包括高斯核函數(shù)以及其他的核函數(shù)。到目前為止,高斯核函數(shù)和線性核函數(shù)是最為常用的核函數(shù)。一個(gè)實(shí)現(xiàn)函數(shù)的注意事項(xiàng),如果你有大小很不一樣的特征變量,很重要的一件事就是在使用高斯函數(shù)之前,將這些特征變量的大小按比例歸一化,就需要進(jìn)一步的縮放比例,這將會(huì)保證SVM能考慮到所有不同的特征向量,而不只是像例子中這樣,房子的大小影響特別大。
警告:不是所有你可能提出來的相似函數(shù)都是有效的核函數(shù),高斯核函數(shù)、線性核函數(shù)以及你有時(shí)可能會(huì)用到的核函數(shù),這些函數(shù)都需要滿足一個(gè)技術(shù)條件,它叫做默塞爾定理。需要滿足這個(gè)條件的原因是因?yàn)橹С窒蛄繖C(jī)算法或者SVM的實(shí)現(xiàn)函數(shù)有許多熟練地?cái)?shù)值優(yōu)化技巧。為了有效的求解參數(shù)θ,在最初的設(shè)想里,這些決策都將我們的注意力僅僅限制在可以滿足默塞爾定理的核函數(shù)上。這個(gè)定理所做的是確保所有的SVM包,所有的SVM軟件包能夠用大類的優(yōu)化方法,從而迅速得到參數(shù)θ。大多數(shù)人最后要做的是用線性核函數(shù)或者高斯函數(shù),但是也有滿足默塞爾定理的其他核函數(shù),我個(gè)人很少使用。
多項(xiàng)式核函數(shù)(常數(shù)和指數(shù))
有字符串核函數(shù)
卡方核函數(shù)
直方相交核函數(shù)
...

最后兩個(gè)細(xì)節(jié):
1.在多類分類中,很多SVM包中已經(jīng)內(nèi)置了多分類的函數(shù),因此,如果你使用一個(gè)類似于這樣的一個(gè)模式,你只是用了這樣的函數(shù),且應(yīng)該會(huì)做的比較好。

除此之外,一個(gè)多分類的問題,可以使用one-vs-all方法,我們之前在講邏輯回歸的時(shí)候討論過,所以你要做的是訓(xùn)練KSVM,如果你有k個(gè)類別,用以將每個(gè)類別從其他類別中區(qū)分開來。它會(huì)給你k參數(shù)的向量,θ1,它會(huì)嘗試從所有類別中,識(shí)別出y = 1的類別,之后θ2,識(shí)別出y = 2作為正類別,參數(shù)向量θ(k)是用于識(shí)別最后一個(gè)類別參數(shù)向量。與邏輯回歸中一對(duì)多的方法類似,在邏輯回歸中,我們是用最大的θTx來預(yù)測(cè)類別i。
多分類的范式:對(duì)大多數(shù)情況來說,無論使用,在軟件包內(nèi)部已經(jīng)有實(shí)現(xiàn)好的內(nèi)置多分類函數(shù),不用擔(dān)心。
2.我們從邏輯回歸開始創(chuàng)造了SVM,然后更改了一下代價(jià)函數(shù),當(dāng)你要使用兩者之一的算法時(shí),比如n代表特征的數(shù)量,m是訓(xùn)練樣本的數(shù)量。如何選擇兩者中的一個(gè)呢?
當(dāng)n的值比訓(xùn)練樣本個(gè)數(shù)多,有大量的特征遠(yuǎn)大于m。那么就選擇邏輯回歸或者不帶核函數(shù)的SVM,因?yàn)槿绻阌斜容^多的特征變量,而只有相對(duì)較小的訓(xùn)練集,線性函數(shù)可能會(huì)工作的很好,而且你也沒有足夠的數(shù)據(jù)來擬合非常復(fù)雜的非線性函數(shù)。
如果n很少,而m大小適中,這里的n可能是1-1000之間的任何數(shù),那么線性核函數(shù)的SVM會(huì)工作得很好。
n很小,m很大,現(xiàn)在的帶有高斯函數(shù)SVM包,高斯函數(shù)的SVM運(yùn)算速度會(huì)很慢,我通常會(huì)做的是手動(dòng)地創(chuàng)建,擁有更多的特征變量,然后用邏輯回歸或者不帶核函數(shù)的支持向量機(jī)。
邏輯回歸為什么和支持向量機(jī)放到一起?
因?yàn)檫壿嫽貧w和不帶核函數(shù)的支持向量機(jī),它們是非常相似的算法,都會(huì)做相似的事情,并給出相似的結(jié)果。但是根據(jù)實(shí)際情況,其中一個(gè)可能會(huì)比另一個(gè)更加有效。但是隨著SVM復(fù)雜度的增加,當(dāng)你使用不同的內(nèi)核函數(shù)來學(xué)習(xí)復(fù)雜的非線性函數(shù)時(shí),你特征變量的數(shù)量是相當(dāng)大的,那是一個(gè)非常常見的體系,也許在這個(gè)體系里,帶有核函數(shù)的支持向量機(jī)就會(huì)表現(xiàn)的相當(dāng)突出。
什么時(shí)候使用神經(jīng)網(wǎng)絡(luò)?
對(duì)所有的這些問題,對(duì)于不同的設(shè)計(jì),設(shè)計(jì)良好的神經(jīng)網(wǎng)絡(luò),可能會(huì)非常有效,有一個(gè)缺點(diǎn)或者說有時(shí)可能不會(huì)使用神經(jīng)網(wǎng)絡(luò)的原因,對(duì)于許多這樣的問題,神經(jīng)網(wǎng)絡(luò)訓(xùn)練起來可能會(huì)特別慢,但是如果你有一個(gè)非常好的SVM實(shí)現(xiàn)包,可能會(huì)運(yùn)行的很快,比神經(jīng)網(wǎng)絡(luò)快很多。SVM具有的問題是一種凸優(yōu)化問題,好的SVM軟件包總是會(huì)找到全局最小值或者接近它的值。對(duì)于SVM,你不需要擔(dān)心局部最優(yōu),而在神經(jīng)網(wǎng)絡(luò)中,局部最優(yōu)是一個(gè)不大不小的問題。所以這是你在使用SVM的時(shí)候不需要太去擔(dān)心的一個(gè)問題。根據(jù)你的問題,神經(jīng)網(wǎng)絡(luò)可能會(huì)比SVM慢。

迷茫!該用什么算法???這個(gè)沒有太大關(guān)系,當(dāng)我遇到機(jī)器學(xué)習(xí)問題的時(shí)候,有時(shí)它確實(shí)不清楚這是否是最好的算法,但是就如在之前視頻中看到的算法確實(shí)很重要,但是更加重要的是你有多少數(shù)據(jù), 你有多熟練,是否擅長做誤差分析和排除學(xué)習(xí)算法,指出如何設(shè)定新的特征變量,弄明白你的學(xué)習(xí)算法輸入哪些特征,通常這些方面會(huì)比你使用邏輯回歸還是SVM這方面更加重要。
SVM仍然被廣泛認(rèn)為是最強(qiáng)大的學(xué)習(xí)算法之一。這是一個(gè)體系,包含了一個(gè)有效的方法去學(xué)習(xí)復(fù)雜的非線性函數(shù)。實(shí)際上,邏輯回歸、神經(jīng)網(wǎng)絡(luò)與SVM一起使用來提高學(xué)習(xí)算法,創(chuàng)造最新的機(jī)器學(xué)習(xí)系統(tǒng)作為一個(gè)非常強(qiáng)大的算法工具,可以應(yīng)用到很多地方。
高性能的機(jī)器學(xué)習(xí)系統(tǒng)!