● 什么是DBSCAN
參考回答:
● k-means算法流程
參考回答:
● LDA的原理
參考回答:
● 介紹幾種機器學習的算法,我就結合我的項目經理介紹了些RF, Kmeans等算法。
參考回答:
1). 回歸算法:回歸算法是試圖采用對誤差的衡量來探索變量之間的關系的一類算法。回歸算法是統計機器學習的利器。 常見的回歸算法包括:最小二乘法(Ordinary Least Square),邏輯回歸(Logistic Regression),逐步式回歸(Stepwise Regression),多元自適應回歸樣條(Multivariate Adaptive Regression Splines)以及本地散點平滑估計(Locally Estimated Scatterplot Smoothing)。
2). 基於實例的算法:基於實例的算法常常用來對決策問題建立模型,這樣的模型常常先選取一批樣本數據,然后根據某些近似性把新數據與樣本數據進行比較。通過這種方式來尋找最佳的匹配。因此,基於實例的算法常常也被稱為“贏家通吃”學習或者“基於記憶的學習”。常見的算法包括 k-Nearest Neighbor(KNN), 學習矢量量化(Learning Vector Quantization, LVQ),以及自組織映射算法(Self-Organizing Map,SOM)。深度學習的概念源於人工神經網絡的研究。含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特征形成更加抽象的高層表示屬性類別或特征,以發現數據的分布式特征表示。
3). 決策樹學習:決策樹算法根據數據的屬性采用樹狀結構建立決策模型, 決策樹模型常常用來解決分類和回歸問題。常見的算法包括:分類及回歸樹(Classification And Regression Tree,CART),ID3 (Iterative Dichotomiser 3),C4.5,Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 隨機森林(Random Forest),多元自適應回歸樣條(MARS)以及梯度推進機(Gradient Boosting Machine,GBM)。
4). 貝葉斯方法:貝葉斯方法算法是基於貝葉斯定理的一類算法,主要用來解決分類和回歸問題。常見算法包括:朴素貝葉斯算法,平均單依賴估計(Averaged One-Dependence Estimators,AODE),以及Bayesian Belief Network(BBN)。
5). 基於核的算法:基於核的算法中最著名的莫過於支持向量機(SVM)了。基於核的算法把輸入數據映射到一個高階的向量空間,在這些高階向量空間里,有些分類或者回歸問題能夠更容易的解決。常見的基於核的算法包括:支持向量機(Support Vector Machine,SVM), 徑向基函數(Radial Basis Function,RBF),以及線性判別分析(Linear Discriminate Analysis,LDA)等。
6). 聚類算法:聚類,就像回歸一樣,有時候人們描述的是一類問題,有時候描述的是一類算法。聚類算法通常按照中心點或者分層的方式對輸入數據進行歸並。所以的聚類算法都試圖找到數據的內在結構,以便按照最大的共同點將數據進行歸類。常見的聚類算法包括 k-Means算法以及期望最大化算法(Expectation Maximization,EM)。
7). 降低維度算法:像聚類算法一樣,降低維度算法試圖分析數據的內在結構,不過降低維度算法是以非監督學習的方式試圖利用較少的信息來歸納或者解釋數據。這類算法可以用於高維數據的可視化或者用來簡化數據以便監督式學習使用。常見的算法包括:主成份分析(Principle Component Analysis,PCA),偏最小二乘回歸(Partial Least Square Regression,PLS),Sammon映射,多維尺度(Multi-Dimensional Scaling, MDS), 投影追蹤(Projection Pursuit)等。
8). 關聯規則學習:關聯規則學習通過尋找最能夠解釋數據變量之間關系的規則,來找出大量多元數據集中有用的關聯規則。常見算法包括 Apriori算法和Eclat算法等。
9). 集成算法:集成算法用一些相對較弱的學習模型獨立地就同樣的樣本進行訓練,然后把結果整合起來進行整體預測。集成算法的主要難點在於究竟集成哪些獨立的較弱的學習模型以及如何把學習結果整合起來。這是一類非常強大的算法,同時也非常流行。常見的算法包括:Boosting,Bootstrapped Aggregation(Bagging),AdaBoost,堆疊泛化(Stacked Generalization,Blending),梯度推進機(Gradient Boosting Machine, GBM),隨機森林(Random Forest)。
10). 人工神經網絡:人工神經網絡算法模擬生物神經網絡,是一類模式匹配算法。通常用於解決分類和回歸問題。人工神經網絡是機器學習的一個龐大的分支,有幾百種不同的算法。(其中深度學習就是其中的一類算法,我們會單獨討論),重要的人工神經網絡算法包括:感知器神經網絡(Perceptron Neural Network), 反向傳遞(Back Propagation),Hopfield網絡,自組織映射(Self-Organizing Map, SOM)。學習矢量量化(Learning Vector Quantization, LVQ)。
RF:通過對訓練數據樣本以及屬性進行有放回的抽樣(針對某一個屬性隨機選擇樣本)這里有兩種,一種是每次都是有放回的采樣,有些樣本是重復的,組成和原始數據集樣本個數一樣的數據集;另外一種是不放回的抽樣,抽取出大約60%的訓練信息。由此生成一顆CART樹,剩下的樣本信息作為袋外數據,用來當作驗證集計算袋外誤差測試模型;把抽取出的樣本信息再放回到原數據集中,再重新抽取一組訓練信息,再以此訓練數據集生成一顆CART樹。這樣依次生成多顆CART樹,多顆樹組成森林,並且他們的生成都是通過隨機采樣的訓練數據生成,因此叫隨機森林。RF可以用於數據的回歸,也可以用於數據的分類。回歸時是由多顆樹的預測結果求均值;分類是由多棵樹的預測結果進行投票。正式由於它的隨機性,RF有極強的防止過擬合的特性。由於他是由CART組成,因此它的訓練數據不需要進行歸一化,因為每課的建立過程都是通過選擇一個能最好的對數據樣本進行選擇的屬性來建立分叉,因此有以上好處的同時也帶來了一個缺點,那就是忽略了屬性與屬性之間的關系。
K-meas:基本K-Means算法的思想很簡單,事先確定常數K,常數K意味着最終的聚類類別數,首先隨機選定初始點為質心,並通過計算每一個樣本與質心之間的相似度(這里為歐式距離),將樣本點歸到最相似的類中,接着,重新計算每個類的質心(即為類中心),重復這樣的過程,知道質心不再改變,最終就確定了每個樣本所屬的類別以及每個類的質心。由於每次都要計算所有的樣本與每一個質心之間的相似度,故在大規模的數據集上,K-Means算法的收斂速度比較慢。
初始化常數K,隨機選取初始點為質心
重復計算一下過程,直到質心不再改變
計算樣本與每個質心之間的相似度,將樣本歸類到最相似的類中
重新計算質心
輸出最終的質心以及每個類
● KMeans講講,KMeans有什么缺點,K怎么確定
參考回答:
選取k個初始質心(作為初始cluster);
repeat: 對每個樣本點,計算得到距其最近的質心,將其類別標為該質心所對應的cluster; 重新計算k個cluser對應的質心;
until 質心不再發生變化
k-means存在缺點:
1)k-means是局部最優的,容易受到初始質心的影響;比如在下圖中,因選擇初始質心不恰當而造成次優的聚類結果。
2)同時,k值的選取也會直接影響聚類結果,最優聚類的k值應與樣本數據本身的結構信息相吻合,而這種結構信息是很難去掌握,因此選取最優k值是非常困難的。
K值得確定:
法1:(輪廓系數)在實際應用中,由於Kmean一般作為數據預處理,或者用於輔助分聚類貼標簽。所以k一般不會設置很大。可以通過枚舉,令k從2到一個固定值如10,在每個k值上重復運行數次kmeans(避免局部最優解),並計算當前k的平均輪廓系數,最后選取輪廓系數最大的值對應的k作為最終的集群數目。
法2:(Calinski-Harabasz准則)
其中SSB是類間方差,
,m為所有點的中心點,mi為某類的中心點;
SSW是類內方差,
;
(N-k)/(k-1)是復雜度;
比率越大,數據分離度越大。
● Kmeans
參考回答:
初始化常數K,隨機選取初始點為質心
重復計算一下過程,直到質心不再改變
計算樣本與每個質心之間的相似度,將樣本歸類到最相似的類中
重新計算質心
輸出最終的質心以及每個類
● DBSCAN原理和算法偽代碼,與kmeans,OPTICS區別
參考回答:
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚類算法,它是一種基於高密度連通區域的、基於密度的聚類算法,能夠將具有足夠高密度的區域划分為簇,並在具有噪聲的數據中發現任意形狀的簇。我們總結一下DBSCAN聚類算法原理的基本要點:
DBSCAN算法需要選擇一種距離度量,對於待聚類的數據集中,任意兩個點之間的距離,反映了點之間的密度,說明了點與點是否能夠聚到同一類中。由於DBSCAN算法對高維數據定義密度很困難,所以對於二維空間中的點,可以使用歐幾里德距離來進行度量。
DBSCAN算法需要用戶輸入2個參數:一個參數是半徑(Eps),表示以給定點P為中心的圓形鄰域的范圍;另一個參數是以點P為中心的鄰域內最少點的數量(MinPts)。如果滿足:以點P為中心、半徑為Eps的鄰域內的點的個數不少於MinPts,則稱點P為核心點。
DBSCAN聚類使用到一個k-距離的概念,k-距離是指:給定數據集P={p(i); i=0,1,…n},對於任意點P(i),計算點P(i)到集合D的子集S={p(1), p(2), …, p(i-1), p(i+1), …, p(n)}中所有點之間的距離,距離按照從小到大的順序排序,假設排序后的距離集合為D={d(1), d(2), …, d(k-1), d(k), d(k+1), …,d(n)},則d(k)就被稱為k-距離。也就是說,k-距離是點p(i)到所有點(除了p(i)點)之間距離第k近的距離。對待聚類集合中每個點p(i)都計算k-距離,最后得到所有點的k-距離集合E={e(1), e(2), …, e(n)}。
根據經驗計算半徑Eps:根據得到的所有點的k-距離集合E,對集合E進行升序排序后得到k-距離集合E’,需要擬合一條排序后的E’集合中k-距離的變化曲線圖,然后繪出曲線,通過觀察,將急劇發生變化的位置所對應的k-距離的值,確定為半徑Eps的值。
根據經驗計算最少點的數量MinPts:確定MinPts的大小,實際上也是確定k-距離中k的值,DBSCAN算法取k=4,則MinPts=4。
另外,如果覺得經驗值聚類的結果不滿意,可以適當調整Eps和MinPts的值,經過多次迭代計算對比,選擇最合適的參數值。可以看出,如果MinPts不變,Eps取得值過大,會導致大多數點都聚到同一個簇中,Eps過小,會導致已一個簇的分裂;如果Eps不變,MinPts的值取得過大,會導致同一個簇中點被標記為噪聲點,MinPts過小,會導致發現大量的核心點。
我們需要知道的是,DBSCAN算法,需要輸入2個參數,這兩個參數的計算都來自經驗知識。半徑Eps的計算依賴於計算k-距離,DBSCAN取k=4,也就是設置MinPts=4,然后需要根據k-距離曲線,根據經驗觀察找到合適的半徑Eps的值,下面的算法實現過程中,我們會詳細說明。對於算法的實現,首先我們概要地描述一下實現的過程:
1)解析樣本數據文件。2)計算每個點與其他所有點之間的歐幾里德距離。3)計算每個點的k-距離值,並對所有點的k-距離集合進行升序排序,輸出的排序后的k-距離值。4)將所有點的k-距離值,在Excel中用散點圖顯示k-距離變化趨勢。5)根據散點圖確定半徑Eps的值。)根據給定MinPts=4,以及半徑Eps的值,計算所有核心點,並建立核心點與到核心點距離小於半徑Eps的點的映射。7)根據得到的核心點集合,以及半徑Eps的值,計算能夠連通的核心點,得到噪聲點。8)將能夠連通的每一組核心點,以及到核心點距離小於半徑Eps的點,都放到一起,形成一個簇。9)選擇不同的半徑Eps,使用DBSCAN算法聚類得到的一組簇及其噪聲點,使用散點圖對比聚類效果。
算法偽代碼:
算法描述:
算法:DBSCAN
輸入:E——半徑
MinPts——給定點在E鄰域內成為核心對象的最小鄰域點數。
D——集合。
輸出:目標類簇集合
方法:Repeat
1)判斷輸入點是否為核心對象
2)找出核心對象的E鄰域中的所有直接密度可達點。
Until 所有輸入點都判斷完畢
Repeat
針對所有核心對象的E鄰域內所有直接密度可達點找到最大密度相連對象集合,中間涉及到一些密度可達對象的合並。Until 所有核心對象的E領域都遍歷完畢
DBSCAN和Kmeans的區別:
1)K均值和DBSCAN都是將每個對象指派到單個簇的划分聚類算法,但是K均值一般聚類所有對象,而DBSCAN丟棄被它識別為噪聲的對象。
2)K均值使用簇的基於原型的概念,而DBSCAN使用基於密度的概念。
3)K均值很難處理非球形的簇和不同大小的簇。DBSCAN可以處理不同大小或形狀的簇,並且不太受噪聲和離群點的影響。當簇具有很不相同的密度時,兩種算法的性能都很差。
4)K均值只能用於具有明確定義的質心(比如均值或中位數)的數據。DBSCAN要求密度定義(基於傳統的歐幾里得密度概念)對於數據是有意義的。
5)K均值可以用於稀疏的高維數據,如文檔數據。DBSCAN通常在這類數據上的性能很差,因為對於高維數據,傳統的歐幾里得密度定義不能很好處理它們。
6)K均值和DBSCAN的最初版本都是針對歐幾里得數據設計的,但是它們都被擴展,以便處理其他類型的數據。
7)基本K均值算法等價於一種統計聚類方法(混合模型),假定所有的簇都來自球形高斯分布,具有不同的均值,但具有相同的協方差矩陣。DBSCAN不對數據的分布做任何假定。
8)K均值DBSCAN和都尋找使用所有屬性的簇,即它們都不尋找可能只涉及某個屬性子集的簇。
9)K均值可以發現不是明顯分離的簇,即便簇有重疊也可以發現,但是DBSCAN會合並有重疊的簇。
10)K均值算法的時間復雜度是O(m),而DBSCAN的時間復雜度是O(m^2),除非用於諸如低維歐幾里得數據這樣的特殊情況。
11)DBSCAN多次運行產生相同的結果,而K均值通常使用隨機初始化質心,不會產生相同的結果。
12)DBSCAN自動地確定簇個數,對於K均值,簇個數需要作為參數指定。然而,DBSCAN必須指定另外兩個參數:Eps(鄰域半徑)和MinPts(最少點數)。
13)K均值聚類可以看作優化問題,即最小化每個點到最近質心的誤差平方和,並且可以看作一種統計聚類(混合模型)的特例。DBSCAN不基於任何形式化模型。
DBSCAN與OPTICS的區別:
DBSCAN算法,有兩個初始參數E(鄰域半徑)和minPts(E鄰域最小點數)需要用戶手動設置輸入,並且聚類的類簇結果對這兩個參數的取值非常敏感,不同的取值將產生不同的聚類結果,其實這也是大多數其他需要初始化參數聚類算法的弊端。
為了克服DBSCAN算法這一缺點,提出了OPTICS算法(Ordering Points to identify the clustering structure)。OPTICS並 不顯示的產生結果類簇,而是為聚類分析生成一個增廣的簇排序(比如,以可達距離為縱軸,樣本點輸出次序為橫軸的坐標圖),這個排序代表了各樣本點基於密度 的聚類結構。它包含的信息等價於從一個廣泛的參數設置所獲得的基於密度的聚類,換句話說,從這個排序中可以得到基於任何參數E和minPts的DBSCAN算法的聚類結果。
OPTICS兩個概念:
核心距離:對象p的核心距離是指是p成為核心對象的最小E’。如果p不是核心對象,那么p的核心距離沒有任何意義。
可達距離:對象q到對象p的可達距離是指p的核心距離和p與q之間歐幾里得距離之間的較大值。如果p不是核心對象,p和q之間的可達距離沒有意義。
算法描述:OPTICS算法額外存儲了每個對象的核心距離和可達距離。基於OPTICS產生的排序信息來提取類簇。
