機器學習算法整理 無公式

這個題目取得比較奇怪,原因是:雖然號稱數(shù)學是世界上最簡潔的語言,但是太多的公式難免看的人心慌;其次公式在hexo+mathjax打起來比較的費勁,還有兼容性問題。其實,本意就是想把常用算法羅列一下,用個一兩段文字描述一下基本意思和原理,還有用途和局限性,如果看看記不起來了,再去尋求一大堆資料溫習一下。其實機器學習常用的算法都比較老了,各種語言的學習庫也久經(jīng)考驗,正如越來越多的碼農(nóng)淪為系統(tǒng)集成工程師一樣,數(shù)據(jù)挖掘雖然不用從頭實現(xiàn)算法的各個部分,但是如果能對流程和數(shù)據(jù)特性了如指掌,對各種算法適用范圍、優(yōu)缺點、參數(shù)含義爛熟于心,對各種業(yè)務指標期望有的放矢,豈不樂哉~

在此還想啰嗦的一句是,這么多算法無論復雜與簡單,大多(統(tǒng)計類的可能有些例外)遵循了給出一個模型—計算誤差—修正系統(tǒng),直到得到最優(yōu)解或者可以接受的誤差為止,由此不得不感嘆道維納“控制論”之偉大!

一、分類

1.1 貝葉斯

遵循貝葉斯公式框架的理論,后驗概率正比于先驗概率與似然度之積。

1.1.1 樸素貝葉斯

樸素貝葉斯之所以樸素,是基于“屬性條件的獨立性假設(shè)”而使得模型的計算被簡化了。具體來說,就是輸入樣本有N維的屬性,所有屬性之間相互獨立,每個屬性單獨獨立的對分類結(jié)果產(chǎn)生影響。

對于離散值,就考慮每個屬性出現(xiàn)的頻率關(guān)系得到概率關(guān)系,而對于連續(xù)的屬性,可以考慮其分布類型的概率密度函數(shù)。離散屬性中,貝葉斯分布一般可以分為Bernoulli /Multinomial,前者是二項式分布,后者是多項式分布。對于統(tǒng)計的元素前者出現(xiàn)與否只有0、1兩個狀態(tài),后者多項式分布,會記錄出每個元素的具體出現(xiàn)頻率。一般短文本分類的情況,適用于二項式分布,長文本分析的類似情況,使用多項式分布效果較好。

在文本分類(情感分析)中,使用過貝葉斯分類,很明顯:先驗概率就是訓練文檔各個分類的文檔比重,此時你沒有觀測數(shù)據(jù),那么按照這么個比例把握比較大,相似度就統(tǒng)計各個分類中詞的出現(xiàn)與否/頻率,然后對待測的數(shù)據(jù),衡量待測數(shù)據(jù)中出現(xiàn)的詞在各個分類中的比率來計算和各個分類的相似程度,最終修正先驗概率得到后驗概率。關(guān)于伯努利分布和多項式分布,在具體文本測試中兩者估計就一個多點的差異,尚不是很明顯。

這兩個實現(xiàn)和求解的過程都比較簡單,性能還不錯,注意建模時候需要平滑處理,防止最終計算概率時候未出現(xiàn)詞導致概率為0,其中常用的拉普拉斯修正~“+1”平滑實現(xiàn)簡單而且有效。

1.1.2 半樸素貝葉斯

樸素貝葉斯有屬性獨立性假設(shè),這種假設(shè)在現(xiàn)實中并不是總是成立的,所以對屬性獨立性假設(shè)進行放松就形成了版樸素貝葉斯,比如常見的“獨依賴估計”(ODE),其就是假設(shè)每個屬性在類別之外最多依賴一個其他的屬性(如果增加依賴的屬性可能計算結(jié)果會變好,但是高階聯(lián)合概率計算十分復雜),而這個被依賴的屬性選擇方法就成了這類算法的研究點:比如所有屬性都依賴同一個屬性,而這個父屬性可以通過交叉驗證來選擇最好的。

1.1.3 貝葉斯網(wǎng)絡(luò)

又稱為信念網(wǎng)絡(luò)(Belief Network),借助于有向無環(huán)圖(DAG)來刻畫屬性之間的依賴關(guān)系。

1.2 最大熵估計

在單一機器算法中算是性能上乘的。它基于一個事實:對于我們確信的東西,我們用規(guī)則去約束它,對于我們不確定的東西,我們不做任何的假設(shè)。新手很容易繞進去,說最大熵不就是最不確定么,我們的目的就是要消除不確定度,讓熵降低,那你這個算法讓不確定度最大,搞毛線啊。

其實舉個例子,比如投骰子,如果什么不規(guī)定,你肯定知道投下去1向上的概率是1/6;然后我告訴你投下去1,2,3向上的概率是2/3,那你就知道1向上的概率就是2/9;然后我再約定3向上的概率為1/3,那么你幾就推斷出1向上的概率就是1/6了。為什么我要做出這么個判斷,緣由我們不知道信息的時候,就讓他平均分布,不加入人為的任何假設(shè),這時候相對來說風險最小,但同時也是在滿足約束條件下熵最大的時候。

在文本分類中,最大熵估計準確度確實比貝葉斯估計多4~5個百分點,但是最大熵估計需要不斷的迭代約束條件來讓他收斂,性能問算是這個算法最大的問題,常用的解法包括GIS(Generalized Iterative Scaling)、IIS(Improved Iterative Scaling)、L-BFGS,前者的計算效率最低,但是原理清晰,適于學習,而后者算法效率較高,適于工程實踐。

1.3 決策樹

決策樹直觀上感覺是跟數(shù)學關(guān)聯(lián)最小的一種,其實就是建立一個個的判別規(guī)則,形似流程圖一樣,讓樣本走到最終的葉節(jié)點完成分類。但是,決策樹在數(shù)據(jù)挖掘和商業(yè)決策中用的情況非常的廣泛,同時一個專業(yè)的決策樹還是有一些技巧的。由于決策樹就是從屬性集中選擇屬性來進行樣本劃分,所以希望決策樹的分支節(jié)點的樣本盡可能是同類別的,稱之為純度。

決策樹的屬性有連續(xù)和離散之分,對于離散屬性,其只會在整個決策樹中出現(xiàn)一次,而每個步驟的決策屬性不是隨便選的,而是基于一定的數(shù)學規(guī)則來進行,比如ID3使用的信息增益、C4.5使用到的增益率。

信息增益是先計算這個節(jié)點的信息熵,然后對于每一個可選屬性,假設(shè)該種算法計算其分類后各個節(jié)點的信息熵,再根據(jù)各個節(jié)點數(shù)目加權(quán)進行整合,計算分類之前的信息熵和這個整合值之間的差異,定義為信息增益,大者說明該屬性的劃分信息增益大,取之。但是信息增益有個問題,就是比較偏向于可選類型值較多的屬性,因此還有個增益率選擇法,用之前的信息熵整合值處以“屬性固有值”IV,而這個IV對于可選值較多的類型結(jié)果會比較大,所以偏向與屬性類型值取值較小的屬性。通常而言,是使用信息增益率先篩選掉一部分屬性,在選擇剩余的信息增益大的屬性來劃分。而CART使用的是Gini值,其表示了樣本的分散度。

決策樹還有的處理是剪枝處理,這對于處理過擬合十分的重要。一些情況下決策樹學習的過于細致,一些樣本的個性也被計算進去了,導致了模型的泛化很弱。剪枝分預剪枝(在生成樹的過程中決定是否繼續(xù)劃分)和后剪枝(生成成功之后,從底向上查看非葉節(jié)點能否將其子樹整合為葉節(jié)點)。一般來說,預剪枝有欠擬合的風險,而后剪枝欠擬合風險小,但是計算相對復雜一些。

對于連續(xù)值的預測,可以按照樣本的值從小到大進行排序,然后兩兩去中位數(shù),得到n-1個分類點。然后依次分類點分別計算分類的信息增益,取信息增益大的分類點來決策。還需要注意的是,連續(xù)值分類,其屬性可以在分類樹中使用多次的。

決策樹中常會用到的算法有:ID3、CART、C4.5。

二、回歸(Regression)和正則化(Regularization )

回歸問題屬于有監(jiān)督學習范疇,其相對與分類,回歸的最大區(qū)別是輸出變量是連續(xù)值,然而這兩者沒有必然的區(qū)分,因為對于回歸的結(jié)果,也可以設(shè)定一個閾值區(qū)域用來實現(xiàn)分類效果。

2.1 線性回歸(Linear Regression)

線性回歸問題,目的在于得到一個線性模型,使得盡可能的能夠讓給定的輸入能夠準確的預測出對應的輸出??梢员硎緸?,對于訓練數(shù)據(jù)集D,其每個樣本x(i)由多個屬性所描述,然后我們試圖得到函數(shù)模型y=h(x),讓y(i)≈h(x(i)),然后可以對任意的新樣本輸入都能給出連續(xù)的輸入出值,稱之為多元線性回歸。記為

h(x)=∑iθixi=θTx

上式中每個x是一個樣本,為了方便添加x0=1和截距θ0截距。然后實際的輸出和模型的輸出肯定是有差距的,因此定義代價函數(shù)

J(θ)=12∑i(h(x(i))?y(i))2=12∑i(θ?x(i)?y(i))2

然后我們就是要通過訓練樣本來調(diào)整θ,使得J(θ)最小化(1/2為了求導方便)。最常用的方法有:梯度下降法、最小二乘法。

梯度下降法

對于梯度下降法,有批量梯度下降法和隨機梯度下降法。區(qū)別在于批量梯度下降法每次都考慮全部樣本,運算量較大;隨機梯度下降法在考慮單個樣本之后就會更新θ值,所以可以快速收斂。

批量梯度下降法θ更新公式:θj:=θj+α∑mi=1(y(i)?hθ(x(i)))x(i)j

隨機梯度下降法θ更新公式:θj:=θj?α?J(θ)?θj=θj+α(y(i)?hθ(x(i)))x(i)j

最小二乘法

相比較梯度下降法需要迭代求取參數(shù)θ。

2.2 邏輯回歸(Logistic Regression)

邏輯回歸其本質(zhì)還是在于線性回歸,只是對之前無約束的線性輸出做了一個映射g(z),對于sigmoid函數(shù)輸出范圍為[0,1],對tanh函數(shù)為[-1,1],下面假設(shè)以sigmoid函數(shù)為例,可得

hθ(x)=g(θTx)=11+e?θTx

這個得到的結(jié)果hθ(x)就是x分類為1的概率,而1?hθ(x)就是分類為0的概率,訓練的目的就是對于標記為1的樣本輸出最可能的大,二標記為0的樣本輸出的值盡可能的小。其誤差函數(shù)定義為:

J(θ)=∑iy(i)log(hθ(x(i)))+(1?y(i))log(1?hθ(x(i)))

其用梯度下降法計算同上面的線性回歸是一樣的。

2.3 Softmax回歸

邏輯回歸只能用于二分類的情況,而Softmax更像其在多分類情況下的推廣,在使用中,如果目標的分類是多分類互斥的,那么用Softmax,否則可以為每個分類建立一個邏輯回歸分類器。

2.4 正則化

為了防止模型過擬合的現(xiàn)象,在損失函數(shù)中增加一個對每個特征的懲罰因子的過程。過擬合出現(xiàn)的原因往往是特征維度太多,通過去處不重要的特征可以防止過擬合現(xiàn)象,但是去除特征會損失信息,這種情況下采用正則化就比較的方便(個人的直觀感受就是增加了一個阻尼項,使得各個特征的表現(xiàn)不像之前那么明顯激進)。工程約定中通常不對θ0進行正則化,同時正則化系數(shù)不能選擇太大,否則會有欠擬合的風險。

常見的正則化有L-2范數(shù)正則化(嶺回歸 Ridge Regression)、L-1范數(shù)正則化(LASSO)

minw∑i=1n(yi?w??Tx??i)2+λ||w??||1

minw∑i=1n(yi?w??Tx??i)2+λ||w??||22

L-1范數(shù)和L-2范數(shù)都有助于降低過擬合的風險,而且相比L-2正則化,L-1正則化更容易得到稀疏解,等于起到了特征選擇的作用。

2.5 支持向量機 SVM

2.5.1 支持向量機

2.5.2 支持向量回歸(SVR)

其實一看模型f(x??)=w??Tx??+b就類似于回歸模型。SVR同一般的回歸模型不同的是,一般的回歸模型除非輸出和標記完全一樣,否則肯定會產(chǎn)生和記錄誤差,但是對于SVR,相當于在回歸線的附近產(chǎn)生了一個緩沖帶,在這個緩沖帶的誤差不計算,超過這個緩沖帶的誤差才會就算中。

2.5.3 核方法

通常的SVM是假設(shè)訓練樣本是線性可分的,就是可以通過超平面將數(shù)據(jù)正確分類。對于有些不能達到這個要求的樣本,就只有想辦法將原始特征映射到一個更高維度的特征空間。

三、聚類

聚類算法中比較核心的是距離的度量,距離近的才會被視為一類。常用的距離是Minkowski距離:

(∑i=1n|xi?yi|p)1p

當上式的p=2,就退化成了歐拉距離;當p=1,就退化成了麥哈頓距離。當然屬性有離散型和連續(xù)型之分,連續(xù)型的屬性計算距離沒有什么問題,對于離散型的屬性,如果是數(shù)值型的,也可以用Minkowski距離計算,而對于{顏色深,顏色淺}等無序?qū)傩裕梢圆捎肰DM(Value Difference Metric)計算其距離:

VDMp(a,b)=∑i=1k|mu,a,imu,a?mu,b,imu,b|

上面的公式表示,對于k個樣本簇,a、b為屬性u的兩個取值,兩個比值表示每個簇中樣本a、b占總數(shù)的比例。

3.1 K均值算法(K-means)

其迭代過程表示為:通過對聚得到的每個簇i計算其均值向量μi→,然后再將樣本集中的每個元素,計算其與各個簇均值向量的距離,找到距離最近的聚類j,再將這個元素添加到j(luò)簇中。這樣進行過一輪迭代之后,計算每個簇的新均值向量,如果簇均值向量不再更新,那么迭代停止。

當然K-means也有其缺點:(1)具體K聚類個數(shù)不太好把握;(2)初始聚類的種子選擇是隨機的。

3.2 學習向量化(Learning Vector Quantization)

要求訓練的樣本帶有標記,算是監(jiān)督類學習的一種,其目標是對每一個聚類簇學習得到一個屬性向量。在訓練樣本中隨機選擇帶標記的樣本,然后計算與各個簇向量的距離,選擇距離最近的那個簇,然后比較兩者的標記是否一致,如果一致就讓簇向量向樣本屬性向量靠攏;否則就反向遠離之。

當達到最大迭代數(shù)目,或者各個簇向量更新很小的時候,就停止迭代。此時可以對任意樣本與各個簇向量計算得到所劃分的簇。

3.3 層次聚類(Hierarchical Clustering)

試圖在不同層次對數(shù)據(jù)進行劃分,形成樹形的聚類結(jié)構(gòu),有自頂向下和自底向上之分。常見的AGNES是一種自底向上的算法。該算法首先將每個樣本看作一個初始聚類,然后在運算的每一步中選擇距離最近的兩個簇進行合并,重復之直到達到要求的聚類數(shù)目。這個算法的核心是計算各個簇之間的距離,當然簇也是由元素組成的,其實就映射到兩個簇中選擇元素進行計算,然后會有最小距離、最大距離、平均距離等方式來決定結(jié)果。

3.4 Latent Dirichlet Allocation (LDA)

這個算法最初發(fā)表,作者就是研究的文字類的分類,所以注定其在自然語言處理方便應用非常之很多,比如社交媒體熱點監(jiān)控、政府輿論監(jiān)控等,而其中騰訊的廣告系統(tǒng)就是基于這個算法的一個并行化實現(xiàn)。

本算法是個無指導的分類,只需參數(shù)提供聚類的數(shù)目即可(該算法還有一個變種,Labelled-LDA,可以實現(xiàn)指導分類)。同時,這個算法還比較有個性的是,其涉及到的數(shù)學概念和知識是相當之多。

3.5 Probabilistic Latent Semantic Analysis(PLSA)

其實按照出現(xiàn)的順序來說或,算是PLSA先出來(據(jù)說作者搞完這個就去開公司了,也算瀟灑),看看PLSA和LDA就感覺是頻率派和貝葉斯派的區(qū)別:比如在PLSA中在可觀測的doc和term之間,隱藏了一個堅信存在的主題變量z,然后用EM方法估計這個z;相比前者LDA添加了個Dirichlet先驗分布和一個Gibbs采樣。

理論上人家說LDA由于有先驗分布,所以對于超短文本應當可靠性較好,但是在現(xiàn)實的工程實現(xiàn)中,PLSA比較的簡單,計算高效而且可以并行化實現(xiàn),所以PLSA應當更具實用性。

四、數(shù)據(jù)降維

在高緯數(shù)據(jù)處理中,數(shù)據(jù)降維和特征選擇是兩大主流技術(shù)。

4.1 主成分分析(Principal Component Analysis, PCA)

PCA是最常見的降維方法,常常作為一般算法對于數(shù)據(jù)的預處理操作。其原理就是將高維屬性空間變換為一個低維屬性空間,讓這個空間中的樣本密度大幅提高,因為與學習任務密切相關(guān)的信息只是高維屬性空間中的某些低維屬性,而且通常是各個樣本變化比較大的那些屬性而應當被保留,而差異比較小的,通常是干擾噪聲應當被去除。

然后PCA跟SVD(Singular Value Decomposition),很多資料分開討論,其實算是一個東西:SVD是底層的數(shù)學基礎(chǔ),不僅可以降維屬性而且可以降維樣本數(shù)甚至不降維用另外的方式表示數(shù)據(jù),PCA算是在統(tǒng)計和機器學習中的一個降低屬性維度的約定吧。

算法的過程:(1)對所有輸入樣本去直流化,并將數(shù)據(jù)映射到[0-1]區(qū)間;(2)計算樣本的協(xié)方差矩陣X??X??T;(3)對協(xié)方差矩陣X??X??T做特征值分解;(4)取最大的d個特征值對應的特征向量w??1,w??2,…w??d;(5)生成投影矩陣W??=w??1,w??2,…w??d;

這樣生成的投影矩陣W??是正交基向量,Y??=W??TX??就實現(xiàn)了數(shù)據(jù)的降維。PCA認為一個隨機信號最有用的信息體包含在方差里,在投影的時候就希望找到的超平面上各個樣本能夠經(jīng)可能的分開,所以上面得到的Y??各個向量不僅是獨立的,而且是按照方差從大到小的順序排列的。同時既然進行了降維,那么必定有些數(shù)據(jù)信息被舍棄了,舍棄這些信息后能讓原本的采樣密度更大,同時這些被舍棄的特征向量往往跟噪聲有關(guān),PCA此時也起到了降噪的作用。

同時,PCA還可以有的作用比如:

數(shù)據(jù)壓縮,比如對于圖片這種數(shù)據(jù),如果λ的選取的比較少,原來的(m,n)二維矩陣就可以用U,S,V三個小矩陣來近似等價存儲了;

高維數(shù)據(jù)的可視化,將數(shù)據(jù)降維到2~3維就可以可視化了。

4.2 特征選擇

特征選擇就是對于高維的屬性,挑選那些對當前學習有用的“相關(guān)特征”作為屬性子集,去除那些沒什么用的“無關(guān)特征”或者“冗余特征”,這樣不但降低了計算的復雜度,同時也免除了那些無關(guān)特征對計算結(jié)果的干擾。

產(chǎn)生特征集,不能窮舉所有的組合類型,因為特征選擇本來就是應對高維屬性的,窮舉的組合類型就會非常的多,因此必須采用合適的子集生成和評價方法。前向搜索方法是:將所有屬性分割成單個屬性的子集,然后選擇單個子集中評價最好的,再依次添加剩余的屬性,形成兩個元素的屬性子集,選擇評價最好的,依次類推,直到添加特征后評價還不如不添加,那么添加結(jié)束,返回該結(jié)果;類似的還有“后向”搜索、“雙向”搜索。關(guān)于子集的評價,可以使用決策樁形式的信息增益來評價,或者分類準確度等各種評價指標。

常見的特征選擇算法:

過濾式選擇

主要特點是先進行特征選擇,然后進行訓練學習,兩者是無關(guān)的。代表方法是Relief(Relevant Features),其設(shè)計了一個相關(guān)統(tǒng)計量來度量特征的重要性,該變量是個向量,每個分量代表了其特征的重要性,選擇的時候:對每個樣本,在其周圍選擇最近的同類樣本和不同類樣本,然后依照如下方法進行更新:

δj=∑i?diff(xji,xji,nh)2+diff(xji,xji,nm)2

前者為同類樣本的距離,后者為不同類樣本的距離(離散類型根據(jù)是否相同為0/1,連續(xù)類型歸一化到0~1)。

包裹式選擇

把學習器的最終性能作為屬性子集的選擇評判標準,所以等于是一種所見即所得的特征選擇方法,但是其需要多次訓練學習器,因此計算開銷比較大。

最常見的包裹式特征選擇法是LVM(Las Vegas Wrapper)算法,其算法的主要概念為:采用隨機策略產(chǎn)生特征子集A’,采用交叉驗證的方法得到學習誤差?′,如果它比當前特征子集A誤差更小,或者特征子集包含的特征數(shù)量更小,則保留A’。這種算法算是比較簡單粗暴的,且其停止條件是迭代次數(shù)……

嵌入式選擇

這其實是L-1范數(shù)正則化(LASSO)的副產(chǎn)品,因為對于

minw∑i=1n(yi?w??Tx??i)2+λ||w??||1

LASSO正則化后w??是稀疏的,而w??中非零的分量特征才會出現(xiàn)在最終的模型中,所以等于在使用了L-1正則化的時候,本身就潛入了特征選擇的過程。

4.3 隱形語義分析類(Latent Semantic Indexing, LSI)和潛在語義索引(Latent Semantic Analysis, LSA)

這里的方法是基于上面的SVD的,通常應用于文本處理和信息檢索之中(LSI將自己定位為Information Retrival)。

這些方法通過TruncatedSVD(其實就是降維啦),一方面可以去除那些不重要的噪音,還可以帶來的好處有:對原始的數(shù)據(jù)進行了新的表示方式,可以處理Synonymy(同一個語義可以有不同種的表達方式)、Polysemy(對于多義詞,他們可能工作的不是很好,因為最終得到的向量是加權(quán)平均的,所以會展示為接近平均值的語義項)、Term Dependence(原始的空間是基于獨立性假設(shè)的,但是這往往是不成立的,但是進過SVD變換后,我們可以輕易的使用這個假設(shè))。

經(jīng)過TruncatedSVD之后,新的Doc-Term表示就可以做很多的事情了:如果要作為文本或者話題分類,就可以按照各個Doc的向量來進行聚類;如果要用作信息檢索的話,就將要檢索的文本計算其投影后向量,然后在這些文檔的向量中尋找最接近的即可;不僅僅對文檔,詞匯也是按照向量表示的,因此還可以對詞匯進行研究,比如尋找某個詞關(guān)系最密切的詞匯等。

對于使用A??=word×docs的矩陣(與常理的習慣有些差異),進行SVD之后,word以U??的行向量表示,docs以V??的行向量表示(而不是其轉(zhuǎn)置),他們降維之后的版本就是U??S??和V??S??。

五、相關(guān)學習算法

5.1 Apriori algorithm

該算法屬于關(guān)聯(lián)分析中的經(jīng)典算法,用于找到各種集合中頻繁出現(xiàn)的項,在商家產(chǎn)品推薦中應用廣泛,常常也被稱為購物籃分析,用于挖掘常見的商品購買組合。如果產(chǎn)品的數(shù)據(jù)有限,道可以窮舉所有的組合來統(tǒng)計,但是一般商家的產(chǎn)品數(shù)目眾多,這種笨辦法顯然是不合適的。

支持度(support):表示某個子集合在數(shù)據(jù)集所有集合中所占的比例;

置信度/可信度(confidence):針對A->B這條規(guī)則,可信度表示為 支持度(A,B)/支持度(A);

從原理上說,Apriori實際是一個自底到頂?shù)纳伤惴ǎ珹priori的原理是:如果某個集合是頻繁項,那么他的所有子集也是頻繁項;反之,如果某個集合是非頻繁項,那么他的所有超級肯定也不是頻繁項。通過后面的原理,加上支持度的約束,可以省略很多集合項的統(tǒng)計操作。

其生成步驟描述為:

(1)首先創(chuàng)建長度為1的子集合,然后掃描數(shù)據(jù)集計算支持度,去掉支持度不滿足的元素;

(2)將元素組合,生成長度為2的子集合,進行支持度的計算和排除;

(3)后面對于要生成長度為k的子集合,具有一定的技巧操作——對上一輪的(k-1)長度的子集合,進行兩兩比較,如果排序后其前(k-2)個元素相同,就取(k-2)|(k-1)~1|(k-1)~2這樣組合成長度為k的子集合;(注意,這里有點像Eclat算法)

(4)依次進行(3),直到不能產(chǎn)生子集合為止。

Apriori算法的缺點是:需要產(chǎn)生大量的候選子集合,而且需要不斷掃描原始數(shù)據(jù)集,算法效率比較低。

5.2 FP-growth

針對Apriori的缺點,F(xiàn)P不生成候選子集合,同時只需要掃描兩遍數(shù)據(jù)集,將原始數(shù)據(jù)集壓縮成一個頻繁模樹,然后依據(jù)這個頻繁模式樹生成關(guān)聯(lián)規(guī)則,比Apriori算法快一個數(shù)量級。

5.3 Eclat algorithm

Eclat算法的思想采用了倒排的概念,一般的數(shù)據(jù)集都是(TID, items)的形式,而Eclat將數(shù)據(jù)轉(zhuǎn)換成(item,TIDs)的組織方式。

子集的元素按照順序排列,假設(shè)其前(k-1)項相同,那么就可以進行或操作得到k項子集了,而同時兩個集合的TIDs進行并操作,就得到了新子集的TIDs,所以不需要掃描原始數(shù)據(jù)集,算法的效率比較的高。

這個算法的缺點是要保留所有子集合的TID交易集,所以如果數(shù)據(jù)規(guī)模大的話,需要耗費大量的內(nèi)存。

六、半監(jiān)督學習

針對標記的樣本數(shù)量比較的少,未標記樣本數(shù)目比較大的情況,而假設(shè)標記樣本和未標記樣本都是從數(shù)據(jù)源中獨立同分布采樣而得到的,那么就可以考慮使用標記和未標記樣本的半監(jiān)督的學習方法來建立模型。

七、集成學習

通過構(gòu)建多個學習器來完成學習任務,將個體學習器的結(jié)果運用某些策略集合產(chǎn)生最終的結(jié)果。對于個體學習器,如果是相同的稱為同質(zhì)學習器,如果不同的則稱為異質(zhì)學習器。

其實在整個集成學習的理論中,追求的就是各個基學習器“好而不同”,其實對每個基學習器的要求不會像平常單個學習方法那么高(當然高更好,可以減少基學習器的數(shù)目),關(guān)鍵是各個基學習器之間要有差異,有自己的個性,如果大家對相同的樣本做出的判斷都一樣,其實對最終的準確性和泛化能力沒有任何的幫助

基學習器多樣性的方法有:

數(shù)據(jù)樣本擾動:基本基于樣本采樣實現(xiàn),主要對決策樹、神經(jīng)網(wǎng)絡(luò)等不穩(wěn)定基學習器有效,而對線性學習器、支持向量機、樸素貝葉斯等穩(wěn)定學習器效果很小。

輸入屬性擾動:當屬性比較多的時候推薦,比如隨機森林的機制。

輸出表示擾動:

算法參數(shù)擾動:

集成學習的集合策略有:

平均法和加權(quán)平均法:前者可為后者權(quán)重相同時候的一個特例,一般來說,除非各個基學習器之前性能差異十分明顯,否則建議蠶蛹平均法集成學習結(jié)果。

投票法:可分為絕對多數(shù)投票法(只有當投票超過半數(shù)才接受,否則不輸出結(jié)果,用于對可靠性要求高,可以不輸出結(jié)果的情形)、相對多數(shù)投票法、加權(quán)投票法。

根據(jù)個體學習器的生成方式,集成學習分為兩類:個體學習器之間有強依賴關(guān)系,必須串行化生成,代表的有Boosting;個體學習器之間沒有強依賴關(guān)系,代表有Bagging和隨機森林(Random Forest)。

7.1 Boosting及著名代表AdaBoost

如上文的描述,整個模型是串行生成的。算法首先給訓練樣本權(quán)值均勻化,使用一個基分類器訓練之,然后根據(jù)樣本的輸出與標記進行對比:如果一致,那么樣本的權(quán)重會相應降低,如果不一致,那么樣本的權(quán)重會相應的增加,然后用這些新權(quán)重的樣本去訓練下一個分類器,直到達到指定數(shù)目的分類器。這里每一步訓練的時候,會對結(jié)果的誤差θ進行評判,如果小于0.5(還不如隨機分布),整個訓練以失敗結(jié)束。

實踐中,有的屬性是可以賦值權(quán)重的,對于不能賦值權(quán)重的,可以通過重采樣來實現(xiàn)(估計就是將錯誤的樣本大概率多采集點)。同時,AdaBoost只支持二分類的計算。

7.2 Bootstrapped Aggregation (Bagging)

主要是基于自助采樣法(bootstrap sampling),進行有放回的采樣得到采樣集(初始樣本約有63.2%的幾率會出現(xiàn)在采樣集中),然后用每個采樣集訓練每個基學習器,再將這些基學習器的結(jié)果進行集合(常用簡單投票法)就可以了。同時由于對于每個基學習器都有36.8%的樣本沒有用于訓練,所以這些“包外樣本”可以用于驗證基學習器的泛化性能等。

7.3 隨機森林 Random Forest

實際是Bagging的一個擴展變體。RF以決策樹作為基學習器來構(gòu)建Bagging集成學習,同時在決策樹訓練的時候,引入隨機屬性選擇的機制,因為傳統(tǒng)的決策樹都會按照信息增益、增益率等方式選擇出一個最好的屬性來用于每一步劃分,而隨機森林會在這之前每次隨機選擇一個屬性集的子集合,然后在子集和中選擇最優(yōu)屬性進行劃分,k為隨機度——k=1就是完全隨機,k=d就是傳統(tǒng)的決策樹,推薦k=log2d。

八、暴力類

之所以這么稱,源于這類算法對計算量要求實在是高,網(wǎng)絡(luò)層數(shù)少了模型能力有限(單層神經(jīng)網(wǎng)絡(luò)甚至不能執(zhí)行異或操作),層數(shù)深了吧計算量和對訓練數(shù)據(jù)的要求也斗升,所以不搞個Nvdia支持Cuda的GPU,很多樣例復現(xiàn)都費勁。深度學習自然是當前機器學習的研究熱點,相關(guān)論文發(fā)布很多,成果也很誘人,同時漫山遍野的深度庫使得是個碼農(nóng)都能玩兩下——但請謹慎入坑,其毛病也多多:

訓練出來的模型是黑核的,不具備解釋性,改進、微調(diào)等都比較麻煩,部署風險很高;網(wǎng)絡(luò)結(jié)構(gòu),參數(shù)設(shè)置,訓練樣本涉及到的因素太多,對開發(fā)者經(jīng)驗要求好,而且最終一個工作的模型可能是不斷試錯最終得出來的;欠擬合、過擬合問題比大多數(shù)算法都為的嚴重(包外數(shù)據(jù)驗證);最不低碳環(huán)保的算法。

8.1 神經(jīng)網(wǎng)絡(luò) BP神經(jīng)網(wǎng)絡(luò)

早期的神經(jīng)網(wǎng)絡(luò)主要以BP網(wǎng)絡(luò)最為常見和重要。由控制論得知,如果沒有BP機制反向傳遞系統(tǒng)誤差用于修正,就很難實現(xiàn)復雜穩(wěn)定的模型。

8.2 深度學習

8.2.1 Convolutional Neural Network (CNN)

卷積神經(jīng)網(wǎng)絡(luò),主要適用于固定維度的輸入信號,以圖像處理最為代表。

8.2.2 Recurrent Neural Network (RNN)

表現(xiàn)為這一層網(wǎng)絡(luò)的那個神經(jīng)元,除了接受上一層神經(jīng)元的輸出作為輸入之外,還接受同層相鄰神經(jīng)元的輸出作為輸入,這些輸入會有個類似開關(guān)的東西控制各個輸入源的權(quán)重。常見的RNN網(wǎng)絡(luò)有LSTM、GRU。

最后,我不得不說——不用公式記錄算法根本做不到~~~

同時,如果有些科學計算不方便,但是有沒有裝Matlab的,推薦這個GNU OCTAVE ONLINE,很好用!

#參考目錄

機器學習 - 周志華

A Tour of Machine Learning Algorithms

Machine Learning Library (MLlib) Guide

中文語言處理工具

LDA漫游指南

[LDA工程實踐之算法篇-1]算法實現(xiàn)正確性驗證

scikit-learn docs

Apriori算法

查看原文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,923評論 6 535
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,740評論 3 420
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,856評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,175評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,931評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,321評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,383評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,533評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,082評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,891評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,618評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,319評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,732評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,987評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,794評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,076評論 2 375

推薦閱讀更多精彩內(nèi)容

  • 注:題中所指的『機器學習』不包括『深度學習』。本篇文章以理論推導為主,不涉及代碼實現(xiàn)。 前些日子定下了未來三年左右...
    我偏笑_NSNirvana閱讀 40,074評論 12 145
  • 機器學習是做NLP和計算機視覺這類應用算法的基礎(chǔ),雖然現(xiàn)在深度學習模型大行其道,但是懂一些傳統(tǒng)算法的原理和它們之間...
    在河之簡閱讀 20,534評論 4 65
  • 考試說明 注重基礎(chǔ)知識和概念的理解,因此解題中的計算過程不會很復雜,但是會有推公式的過程。本課程的重點知識包括:貝...
    藝術(shù)叔閱讀 2,881評論 0 3
  • 小時代一部一部的出,剛開始總不會看,覺得它表現(xiàn)的太過華麗光鮮,沒有了現(xiàn)實生活的真實與殘酷。但當看過才知道,所謂的友...
    帥帥噠小帥哥閱讀 209評論 0 0
  • 天上飄著棉花一樣的白云,地上長著白云一樣的棉花一這是先生高中語文老師全國獲獎作文中的名句。也是先生高中生活的...
    李風嬙閱讀 345評論 0 1