1、線性分類器怎么理解呢?
我們可以把此分類器理解為線性空間的劃分,最簡單的,在二維空間上,通過直線的劃分。
第二個(gè)理解可以理解為模板匹配,W的每一行可以看做是其中一個(gè)類別的模板。每類得分,實(shí)際上是像素點(diǎn)和模板匹配度。模板匹配的方式是內(nèi)積計(jì)算。
2、機(jī)器學(xué)習(xí)實(shí)戰(zhàn)之AdaBoost算法
boosting算法系列的基本思想,如下圖:

adaBoost分類器就是一種元算法分類器,adaBoost分類器利用同一種基分類器(弱分類器),基于分類器的錯(cuò)誤率分配不同的權(quán)重參數(shù),最后累加加權(quán)的預(yù)測結(jié)果作為輸出。它的自適應(yīng)在于:前一個(gè)弱分類器分錯(cuò)的樣本的權(quán)值(樣本對(duì)應(yīng)的權(quán)值)會(huì)得到加強(qiáng),權(quán)值更新后的樣本再次被用來訓(xùn)練下一個(gè)新的弱分類器。在每輪訓(xùn)練中,用總體(樣本總體)訓(xùn)練新的弱分類器,產(chǎn)生新的樣本權(quán)值、該弱分類器的話語權(quán),一直迭代直到達(dá)到預(yù)定的錯(cuò)誤率或達(dá)到指定的最大迭代次數(shù)
算法原理
(1)初始化訓(xùn)練數(shù)據(jù)(每個(gè)樣本)的權(quán)值分布:如果有N個(gè)樣本,則每一個(gè)訓(xùn)練的樣本點(diǎn)最開始時(shí)都被賦予相同的權(quán)重:1/N。
(2)訓(xùn)練弱分類器。具體訓(xùn)練過程中,如果某個(gè)樣本已經(jīng)被準(zhǔn)確地分類,那么在構(gòu)造下一個(gè)訓(xùn)練集中,它的權(quán)重就被降低;相反,如果某個(gè)樣本點(diǎn)沒有被準(zhǔn)確地分類,那么它的權(quán)重就得到提高。同時(shí),得到弱分類器對(duì)應(yīng)的話語權(quán)。然后,更新權(quán)值后的樣本集被用于訓(xùn)練下一個(gè)分類器,整個(gè)訓(xùn)練過程如此迭代地進(jìn)行下去。
(3)將各個(gè)訓(xùn)練得到的弱分類器組合成強(qiáng)分類器。各個(gè)弱分類器的訓(xùn)練過程結(jié)束后,分類誤差率小的弱分類器的話語權(quán)較大,其在最終的分類函數(shù)中起著較大的決定作用,而分類誤差率大的弱分類器的話語權(quán)較小,其在最終的分類函數(shù)中起著較小的決定作用。換言之,誤差率低的弱分類器在最終分類器中占的比例較大,反之較小。
優(yōu)點(diǎn)
(1)精度很高的分類器?
(2)提供的是框架,可以使用各種方法構(gòu)建弱分類器?
(3)簡單,不需要做特征篩選?
(4)不用擔(dān)心過度擬合
(1)用于二分類或多分類?
(2)特征選擇?
(3)分類人物的baseline
AdaBoost的一般流程如下所示:
(1)收集數(shù)據(jù)
(2)準(zhǔn)備數(shù)據(jù):依賴于所用的基分類器的類型,這里的是單層決策樹,即樹樁,該類型決策樹可以處理任何類型的數(shù)據(jù)。
(3)分析數(shù)據(jù)
(4)訓(xùn)練算法:利用提供的數(shù)據(jù)集訓(xùn)練分類器
(5)測試算法:利用提供的測試數(shù)據(jù)集計(jì)算分類的錯(cuò)誤率
(6)使用算法:算法的相關(guān)推廣,滿足實(shí)際的需要
#完整AdaBoost算法實(shí)現(xiàn)
#算法實(shí)現(xiàn)偽代碼
#對(duì)每次迭代:
? ? #利用buildStump()函數(shù)找到最佳的單層決策樹
? ? #將最佳單層決策樹加入到單層決策樹數(shù)組
? ? #計(jì)算alpha
? ? #計(jì)算新的權(quán)重向量D
? ? #更新累計(jì)類別估計(jì)值
? ? #如果錯(cuò)誤率為等于0.0,退出循環(huán)
GBDT概述
GBDT也是集成學(xué)習(xí)Boosting家族的成員,但是卻和傳統(tǒng)的Adaboost有很大的不同?;仡櫹翧daboost,我們是利用前一輪迭代弱學(xué)習(xí)器的誤差率來更新訓(xùn)練集的權(quán)重,這樣一輪輪的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱學(xué)習(xí)器限定了只能使用CART回歸樹模型,同時(shí)迭代思路和Adaboost也有所不同。
在GBDT的迭代中,假設(shè)我們前一輪迭代得到的強(qiáng)學(xué)習(xí)器是ft?1(x)ft?1(x), 損失函數(shù)是L(y,ft?1(x))L(y,ft?1(x)), 我們本輪迭代的目標(biāo)是找到一個(gè)CART回歸樹模型的弱學(xué)習(xí)器ht(x)ht(x),讓本輪的損失損失L(y,ft(x))=L(y,ft?1(x)+ht(x))最小。也就是說,本輪迭代找到?jīng)Q策樹,要讓樣本的損失盡量變得更小。
GBDT的思想可以用一個(gè)通俗的例子解釋,假如有個(gè)人30歲,我們首先用20歲去擬合,發(fā)現(xiàn)損失有10歲,這時(shí)我們用6歲去擬合剩下的損失,發(fā)現(xiàn)差距還有4歲,第三輪我們用3歲擬合剩下的差距,差距就只有一歲了。如果我們的迭代輪數(shù)還沒有完,可以繼續(xù)迭代下面,每一輪迭代,擬合的歲數(shù)誤差都會(huì)減小。
GBDT主要的優(yōu)點(diǎn)有:
1) 可以靈活處理各種類型的數(shù)據(jù),包括連續(xù)值和離散值。GBDT使用的是cart樹模型,可以處理連續(xù)值和離散值特征。對(duì)于連續(xù)值節(jié)點(diǎn)劃分時(shí),按照大于小于分割點(diǎn),對(duì)于離散值,按照等于不等于劃分分割點(diǎn)。
2) 在相對(duì)少的調(diào)參時(shí)間情況下,預(yù)測的準(zhǔn)備率也可以比較高。這個(gè)是相對(duì)SVM來說的。
3)使用一些健壯的損失函數(shù),對(duì)異常值的魯棒性非常強(qiáng)。比如 Huber損失函數(shù)和Quantile損失函數(shù)。
GBDT的主要缺點(diǎn)有:
1)由于弱學(xué)習(xí)器之間存在依賴關(guān)系,難以并行訓(xùn)練數(shù)據(jù)。不過可以通過自采樣的SGBT來達(dá)到部分并行。
2)對(duì)于稀疏矩陣,容易過擬合,比lr和fm效果要差,是因?yàn)槿魯?shù)據(jù)中存在假象數(shù)據(jù)(例如特征f1為1的樣本,輸出類別都是1),樹模型沒法進(jìn)行過擬合處理。而lr或fm可以通過正則化,壓縮w1的值。
xgboost
xgboost能自動(dòng)利用cpu的多線程,而且適當(dāng)改進(jìn)了gradient boosting,加了剪枝,控制了模型的復(fù)雜程度
傳統(tǒng)的GBDT算法以CART作為基分類器,xgboost還可以支持線性分類器,相當(dāng)于帶L1和L2的邏輯斯諦回歸或者線性回歸
傳統(tǒng)的GBDT在優(yōu)化的時(shí)候,使用的是一階導(dǎo)數(shù)信息,xgboost則對(duì)代價(jià)函數(shù)進(jìn)行了二階泰勒展開,同時(shí)用到了一階導(dǎo)數(shù)和二階導(dǎo)數(shù)。順便提一下,xgboost工具支持自定義代價(jià)函數(shù),只要函數(shù)可一階和二階求導(dǎo)。
xgboost在代價(jià)函數(shù)中加入了正則項(xiàng),用于控制模型的復(fù)雜度。正則項(xiàng)里面包括樹的葉子節(jié)點(diǎn)的個(gè)數(shù)、每個(gè)葉子節(jié)點(diǎn)上輸出的score的L2模的平方和。( 從Bias-variance tradeoff 的角度來說,正則化降低了模型的variance,使得到的模型更加簡單,防止過擬合,這是xgboost優(yōu)于傳統(tǒng)的GBDT的一個(gè)特征)
Shrinkage(縮減),相當(dāng)于學(xué)習(xí)速率(xgboost中的eta)。xgboost在進(jìn)行完一次迭代后,會(huì)將葉子節(jié)點(diǎn)的權(quán)重乘上該系數(shù),主要是為了削弱每棵樹的影響,讓后面有更大的學(xué)習(xí)空間。實(shí)際應(yīng)用中,一般把eta設(shè)置得小一點(diǎn),然后迭代次數(shù)設(shè)置得大一點(diǎn)。(sklearn中的GBDT的實(shí)現(xiàn)也有學(xué)習(xí)速率)
列抽樣(column sampling),借鑒了隨機(jī)森林的做法,支持列抽樣可以降低過擬合,同時(shí)減少了計(jì)算量,這也是xgboost異于傳統(tǒng)gbdt的一個(gè)特性
對(duì)缺失值的處理。對(duì)于樣本有特征確實(shí)的情況下,xgboost可以自動(dòng)學(xué)習(xí)它的分裂方向。
xgboost工具支持并行。xgboost的并行并不是tree粒度的并行,xgboost也是需要一次迭代完成之后,才能進(jìn)行下一次迭代的。(第t次迭代的代價(jià)函數(shù)包含了前面t-1次的預(yù)測值)。xgboost的并行是特征粒度上的。決策樹的學(xué)習(xí)最耗時(shí)的步驟是就是對(duì)特征進(jìn)行排序(因?yàn)橐_定最佳的分割點(diǎn)),xgboost在訓(xùn)練之前,預(yù)先對(duì)數(shù)據(jù)進(jìn)行排序,然后保存成block結(jié)構(gòu),后面的迭代中重復(fù)的使用這個(gè)結(jié)構(gòu),大大的減少了計(jì)算量。這個(gè)結(jié)構(gòu)也使并行成為可能。在進(jìn)行節(jié)點(diǎn)分裂時(shí),需要計(jì)算每個(gè)特征的信息增益,最終選擇增益最大的那個(gè)特征去分裂,那么各個(gè)特征的增益計(jì)算就可以開多線程計(jì)算。
可并行的近似直方圖算法。樹節(jié)點(diǎn)在進(jìn)行分裂時(shí),需要計(jì)算每個(gè)特征的的每個(gè)分裂點(diǎn)的信息增益,即用貪心法枚舉所有的可能的分割點(diǎn)。當(dāng)數(shù)據(jù)無法一次性載入內(nèi)存或者在分布式的情況下,貪心的算法效率就會(huì)變得很低,所以xgboost還提出了一種,可并行的近似直方圖算法,用于高效的生成候選的分割點(diǎn)。
總結(jié)下來就是兩者的區(qū)別:
xgboost里面的基學(xué)習(xí)器除了用tree(gbtree),也可用線性分類器(gblinear)。而GBDT則特指梯度提升決策樹算法。
xgboost相對(duì)于普通gbm的實(shí)現(xiàn),可能具有以下的一些優(yōu)勢:
顯式地將樹模型的復(fù)雜度作為正則項(xiàng)加在優(yōu)化目標(biāo)
公式推導(dǎo)里用到了二階導(dǎo)數(shù)信息,而普通的GBDT只用到一階
允許使用column(feature) sampling來防止過擬合,借鑒了Random Forest的思想。(sklearn里的gbm好像也有類似實(shí)現(xiàn))
實(shí)現(xiàn)了一種分裂節(jié)點(diǎn)尋找的近似算法,用于加速和減小內(nèi)存消耗。
節(jié)點(diǎn)分裂算法能自動(dòng)利用特征的稀疏性。
data事先排好序并以block的形式存儲(chǔ),利于并行計(jì)算
penalty function Omega主要是對(duì)樹的葉子數(shù)和葉子分?jǐn)?shù)做懲罰,這點(diǎn)確保了樹的簡單性
支持分布式計(jì)算可以運(yùn)行在MPI,YARN上,得益于底層支持容錯(cuò)的分布式通信框架rabit。

3、決策樹C4.5
C4.5是決策樹算法的一種。決策樹算法作為一種分類算法,目標(biāo)就是將具有p維特征的n個(gè)樣本分到c個(gè)類別中去。常見的決策樹算法有ID3,C4.5,CART。
算法流程為:
while (當(dāng)前節(jié)點(diǎn)”不純“)
(1)計(jì)算當(dāng)前節(jié)點(diǎn)的類別信息熵Info(D) (以類別取值計(jì)算)?
(2)計(jì)算當(dāng)前節(jié)點(diǎn)各個(gè)屬性的信息熵Info(Ai) (以屬性取值下的類別取值計(jì)算)?
(3)計(jì)算各個(gè)屬性的信息增益Gain(Ai)=Info(D)-Info(Ai)?
(4)計(jì)算各個(gè)屬性的分類信息度量H(Ai) (以屬性取值計(jì)算)?
(5)計(jì)算各個(gè)屬性的信息增益率IGR(Ai)=Gain(Ai)/H(Ai)?
end while?
當(dāng)前節(jié)點(diǎn)設(shè)置為葉子節(jié)點(diǎn)?
4、CART算法
ID3:特征劃分基于信息增益
C4.5:特征劃分基于信息增益比
CART:特征劃分基于基尼指數(shù)
CART算法由以下兩步組成:
決策樹生成:基于訓(xùn)練數(shù)據(jù)集生成決策樹,生成的決策樹要盡量大;
決策樹剪枝:用驗(yàn)證數(shù)據(jù)集對(duì)已生成的樹進(jìn)行剪枝并選擇最優(yōu)子樹,這時(shí)損失函數(shù)最小作為剪枝的標(biāo)準(zhǔn)。
5、K-鄰近算法/kNN
基本思想
kNN的思想很簡單:在訓(xùn)練集中選取離輸入的數(shù)據(jù)點(diǎn)最近的k個(gè)鄰居,根據(jù)這個(gè)k個(gè)鄰居中出現(xiàn)次數(shù)最多的類別(最大表決規(guī)則),作為該數(shù)據(jù)點(diǎn)的類別。kNN算法中,所選擇的鄰居都是已經(jīng)正確分類的對(duì)象。
算法復(fù)雜度
kNN是一種lazy-learning算法,分類器不需要使用訓(xùn)練集進(jìn)行訓(xùn)練,因此訓(xùn)練時(shí)間復(fù)雜度為0;kNN分類的計(jì)算復(fù)雜度和訓(xùn)練集中的文檔數(shù)目成正比,也就是說,如果訓(xùn)練集中文檔總數(shù)為n,那么kNN的分類時(shí)間復(fù)雜度為O(n);因此,最終的時(shí)間復(fù)雜度是O(n)。
優(yōu)點(diǎn)
理論成熟,思想簡單,既可以用來做分類也可以用來做回歸 ;
適合對(duì)稀有事件進(jìn)行分類(例如:客戶流失預(yù)測);
特別適合于多分類問題(multi-modal,對(duì)象具有多個(gè)類別標(biāo)簽,例如:根據(jù)基因特征來判斷其功能分類), kNN比SVM的表現(xiàn)要好。
缺點(diǎn)
當(dāng)樣本不平衡時(shí),如一個(gè)類的樣本容量很大,而其他類樣本容量很小時(shí),有可能導(dǎo)致當(dāng)輸入一個(gè)新樣本時(shí),該樣本的K個(gè)鄰居中大容量類的樣本占多數(shù);
計(jì)算量較大,因?yàn)閷?duì)每一個(gè)待分類的文本都要計(jì)算它到全體已知樣本的距離,才能求得它的K個(gè)最近鄰點(diǎn);
可理解性差,無法給出像決策樹那樣的規(guī)則。
6.Apriori算法
先驗(yàn)算法(Apriori Algorithm)是關(guān)聯(lián)規(guī)則學(xué)習(xí)的經(jīng)典算法之一。先驗(yàn)算法的設(shè)計(jì)目的是為了處理包含交易信息內(nèi)容的數(shù)據(jù)庫(例如,顧客購買的商品清單,或者網(wǎng)頁常訪清單。)而其他的算法則是設(shè)計(jì)用來尋找無交易信息(如Winepi算法和Minepi算法)或無時(shí)間標(biāo)記(如DNA測序)的數(shù)據(jù)之間的聯(lián)系規(guī)則。
在關(guān)聯(lián)式規(guī)則中,一般對(duì)于給定的項(xiàng)目集合(例如,零售交易集合,每個(gè)集合都列出的單個(gè)商品的購買信息),算法通常嘗試在項(xiàng)目集合中找出至少有C個(gè)相同的子集。先驗(yàn)算法采用自底向上的處理方法,即頻繁子集每次只擴(kuò)展一個(gè)對(duì)象(該步驟被稱為候選集產(chǎn)生),并且候選集由數(shù)據(jù)進(jìn)行檢驗(yàn)。當(dāng)不再產(chǎn)生匹配條件的擴(kuò)展對(duì)象時(shí),算法終止。
7、SVM算法
SVM(Support Vector Machine)中文名為支持向量機(jī),是常見的一種判別方法。在機(jī)器學(xué)習(xí)領(lǐng)域,是一個(gè)有監(jiān)督的學(xué)習(xí)模型,通常用來進(jìn)行模式識(shí)別、分類以及回歸分析。
svm算法通俗的理解在二維上,就是找一分割線把兩類分開,哪條線是最優(yōu)的呢,這就是我們要考慮的問題
8、樸素貝葉斯算法
樸素:特征條件獨(dú)立;貝葉斯:基于貝葉斯定理。屬于監(jiān)督學(xué)習(xí)的生成模型,實(shí)現(xiàn)簡單,沒有迭代,并有堅(jiān)實(shí)的數(shù)學(xué)理論(即貝葉斯定理)作為支撐。在大量樣本下會(huì)有較好的表現(xiàn),不適用于輸入向量的特征條件有關(guān)聯(lián)的場景。
假設(shè)某個(gè)體有n項(xiàng)特征(Feature),分別為F1、F2、…、Fn?,F(xiàn)有m個(gè)類別(Category),分別為C1、C2、…、Cm。貝葉斯分類器就是計(jì)算出概率最大的那個(gè)分類。
9、EM算法
?EM出現(xiàn)的原因就是抽取的樣本不知道是哪個(gè)分布抽取的。例如剛開始的最大似然所說的,但現(xiàn)在兩種高斯分布的人混在一塊了,我們又不知道哪些人屬于第一個(gè)高斯分布,哪些屬于第二個(gè),所以就沒法估計(jì)這兩個(gè)分布的參數(shù)。反過來,只有當(dāng)我們對(duì)這兩個(gè)分布的參數(shù)作出了準(zhǔn)確的估計(jì)的時(shí)候,才能知道到底哪些人屬于第一個(gè)分布,那些人屬于第二個(gè)分布。所以這里就是說EM估計(jì)就是因?yàn)槎嗔艘粋€(gè)隱含變量(抽取得到的每個(gè)樣本都不知道是從哪個(gè)分布抽取的)使得本來簡單的可以求解的問題變復(fù)雜了。
這里簡單的思路就是先初始化隱含變量,然后估計(jì)出每個(gè)類別對(duì)應(yīng)的分布參數(shù)。然后再根據(jù)這個(gè)分布參數(shù)去調(diào)整每個(gè)樣本的隱含參數(shù),依次迭代。。。至于為什么最后能夠迭代成功,就是因?yàn)樵诤竺娴乃迫缓瘮?shù)的證明中可以證明似然函數(shù)最后就是一個(gè)單調(diào)函數(shù)
10、K-Means算法
在k-means算法中,用cluster來表示簇;容易證明k-means算法收斂等同于所有質(zhì)心不再發(fā)生變化。
基本的k-means算法流程如下:
選取k個(gè)初始質(zhì)心(作為初始cluster,每個(gè)初始cluster只包含一個(gè)點(diǎn));?
repeat:?
? ? 對(duì)每個(gè)樣本點(diǎn),計(jì)算得到距其最近的質(zhì)心,將其類別標(biāo)為該質(zhì)心所對(duì)應(yīng)的cluster;?
? ? 重新計(jì)算k個(gè)cluster對(duì)應(yīng)的質(zhì)心(質(zhì)心是cluster中樣本點(diǎn)的均值);?
until 質(zhì)心不再發(fā)生變化?
11、隨機(jī)森林
機(jī)器學(xué)習(xí)算法之隨機(jī)森林算法工作原理
隨機(jī)森林是一種有監(jiān)督學(xué)習(xí)算法。 就像你所看到的它的名字一樣,它創(chuàng)建了一個(gè)森林,并使它擁有某種方式隨機(jī)性。 所構(gòu)建的“森林”是決策樹的集成,大部分時(shí)候都是用“bagging”方法訓(xùn)練的。 bagging方法,即bootstrap aggregating,采用的是隨機(jī)有放回的選擇訓(xùn)練數(shù)據(jù)然后構(gòu)造分類器,最后組合學(xué)習(xí)到的模型來增加整體的效果。
簡而言之:隨機(jī)森林建立了多個(gè)決策樹,并將它們合并在一起以獲得更準(zhǔn)確和穩(wěn)定的預(yù)測。隨機(jī)森林的一大優(yōu)勢在于它既可用于分類,也可用于回歸問題,這兩類問題恰好構(gòu)成了當(dāng)前的大多數(shù)機(jī)器學(xué)習(xí)系統(tǒng)所需要面對(duì)的。 接下來,將探討隨機(jī)森林如何用于分類問題,因?yàn)榉诸愑袝r(shí)被認(rèn)為是機(jī)器學(xué)習(xí)的基石。 下圖,你可以看到兩棵樹的隨機(jī)森林是什么樣子的:

除了少數(shù)例外,隨機(jī)森林分類器使用所有的決策樹分類器以及bagging 分類器的超參數(shù)來控制整體結(jié)構(gòu)。 與其先構(gòu)建bagging分類器,并將其傳遞給決策樹分類器,您可以直接使用隨機(jī)森林分類器類,這樣對(duì)于決策樹而言,更加方便和優(yōu)化。要注意的是,回歸問題同樣有一個(gè)隨機(jī)森林回歸器與之相對(duì)應(yīng)。

12、自編碼器
什么是自編碼器(Autoencoder)
自動(dòng)編碼器是一種數(shù)據(jù)的壓縮算法,其中數(shù)據(jù)的壓縮和解壓縮函數(shù)是數(shù)據(jù)相關(guān)的、有損的、從樣本中自動(dòng)學(xué)習(xí)的。在大部分提到自動(dòng)編碼器的場合,壓縮和解壓縮的函數(shù)是通過神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的。
自編碼是一種表示學(xué)習(xí)的技術(shù),是deep learning的核心問題
讓輸入等于輸出,取中間的一層作為embedding, 即編碼
對(duì)中間的隱層進(jìn)行約束,就可以得到不同類型的編碼
h<x,這就是普通的降維編碼
h>x, 并且約束其稀疏性,就得到稀疏編碼

自編碼網(wǎng)絡(luò),可以理解為,

完成訓(xùn)練后,Decoder部分就沒有用了
1)自動(dòng)編碼器是數(shù)據(jù)相關(guān)的(data-specific 或 data-dependent),這意味著自動(dòng)編碼器只能壓縮那些與訓(xùn)練數(shù)據(jù)類似的數(shù)據(jù)。比如,使用人臉訓(xùn)練出來的自動(dòng)編碼器在壓縮別的圖片,比如樹木時(shí)性能很差,因?yàn)樗鼘W(xué)習(xí)到的特征是與人臉相關(guān)的。
2)自動(dòng)編碼器是有損的,意思是解壓縮的輸出與原來的輸入相比是退化的,MP3,JPEG等壓縮算法也是如此。這與無損壓縮算法不同。
3)自動(dòng)編碼器是從數(shù)據(jù)樣本中自動(dòng)學(xué)習(xí)的,這意味著很容易對(duì)指定類的輸入訓(xùn)練出一種特定的編碼器,而不需要完成任何新工作。
搭建一個(gè)自動(dòng)編碼器需要完成下面三樣工作:搭建編碼器,搭建解碼器,設(shè)定一個(gè)損失函數(shù),用以衡量由于壓縮而損失掉的信息。編碼器和解碼器一般都是參數(shù)化的方程,并關(guān)于損失函數(shù)可導(dǎo),典型情況是使用神經(jīng)網(wǎng)絡(luò)。編碼器和解碼器的參數(shù)可以通過最小化損失函數(shù)而優(yōu)化,例如SGD。
自編碼器是一個(gè)自監(jiān)督的算法,并不是一個(gè)無監(jiān)督算法。
? ? ? ? 自監(jiān)督學(xué)習(xí)是監(jiān)督學(xué)習(xí)的一個(gè)實(shí)例,其標(biāo)簽產(chǎn)生自輸入數(shù)據(jù)。要獲得一個(gè)自監(jiān)督的模型,你需要一個(gè)靠譜的目標(biāo)跟一個(gè)損失函數(shù)?;旧?,要求模型在像素級(jí)上精確重構(gòu)輸入不是機(jī)器學(xué)習(xí)的興趣所在,學(xué)習(xí)到高級(jí)的抽象特征才是。
目前自編碼器的應(yīng)用主要有兩個(gè)方面,第一是數(shù)據(jù)去噪,第二是為進(jìn)行可視化而降維。配合適當(dāng)?shù)木S度和稀疏約束,自編碼器可以學(xué)習(xí)到比PCA等技術(shù)更有意思的數(shù)據(jù)投影。
? ? ? ? ?對(duì)于2D的數(shù)據(jù)可視化,t-SNE(讀作tee-snee)或許是目前最好的算法,但通常還是需要原數(shù)據(jù)的維度相對(duì)低一些。所以,可視化高維數(shù)據(jù)的一個(gè)好辦法是首先使用自編碼器將維度降低到較低的水平(如32維),然后再使用t-SNE將其投影在2D平面上。