1. 程式人生 > >聚類與分類演算法

聚類與分類演算法

聚類是未知結果會有多少類的,即可能聚成10個類也可能聚成100個類,只是根據某些相似性條件把資料聚合在一起,當然也有讓使用者自定義類數目的聚類演算法,但這個數目也不好定的。分類是已知一共有多少類,並明確知道該類的特點,然後把未知的按一定規則分到某一個類中。聚類的資料集要比較多,這樣才有東西聚成一堆一堆的。分類可以多可以少,當然資料量大才能很好地說明分類演算法的優異。但實際上分類演算法在確定某些規則後,你可以只有一個未知的資料也可以把它分到某一個類別當中,但聚類如果只有一個未知的資料怎麼聚啊。
 分類演算法
 
(1)決策樹 
決策樹是用於分類和預測的主要技術之一,決策樹學習是以例項為基礎的歸納學習演算法,它著眼於從一組無次序、無規則的例項中推理出以決策樹表示的分類規則。構造決策樹的目的是找出屬性和類別間的關係,用它來預測將來未知類別的記錄的類別。它採用自頂向下的遞迴方式,在決策樹的內部節點進行屬性的比較,並根據不同屬性值判斷從該節點向下的分支,在決策樹的葉節點得到結論。 

主要的決策樹演算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT演算法等。它們在選擇測試屬性採用的技術、生成的決策樹的結構、剪枝的方法以及時刻,能否處理大資料集等方面都有各自的不同之處。 
(2)貝葉斯 
貝葉斯(Bayes)分類演算法是一類利用概率統計知識進行分類的演算法,如樸素貝葉斯(Naive Bayes)演算法。這些演算法主要利用Bayes定理來預測一個未知類別的樣本屬於各個類別的可能性,選擇其中可能性最大的一個類別作為該樣本的最終類別。由於貝葉斯定理的成立本身需要一個很強的條件獨立性假設前提,而此假設在實際情況中經常是不成立的,因而其分類準確性就會下降。為此就出現了許多降低獨立性假設的貝葉斯分類演算法,如TAN(Tree Augmented Na?ve Bayes)演算法,它是在貝葉斯網路結構的基礎上增加屬性對之間的關聯來實現的。 

(3)人工神經網路 
人工神經網路(Artificial Neural Networks,ANN)是一種應用類似於大腦神經突觸聯接的結構進行資訊處理的數學模型。在這種模型中,大量的節點(或稱”神經元”,或”單元”)之間相互聯接構成網路,即”神經網路”,以達到處理資訊的目的。神經網路通常需要進行訓練,訓練的過程就是網路進行學習的過程。訓練改變了網路節點的連線權的值使其具有分類的功能,經過訓練的網路就可用於物件的識別。 
目前,神經網路已有上百種不同的模型,常見的有BP網路、徑向基RBF網路、Hopfield網路、隨機神經網路(Boltzmann機)、競爭神經網路(Hamming網路,自組織對映網路)等。但是當前的神經網路仍普遍存在收斂速度慢、計算量大、訓練時間長和不可解釋等缺點。 

(4)k-近鄰 
k-近鄰(kNN,k-Nearest Neighbors)演算法是一種基於例項的分類方法。該方法就是找出與未知樣本x距離最近的k個訓練樣本,看這k個樣本中多數屬於哪一類,就把x歸為那一類。k-近鄰方法是一種懶惰學習方法,它存放樣本,直到需要分類時才進行分類,如果樣本集比較複雜,可能會導致很大的計算開銷,因此無法應用到實時性很強的場合。 
(5)支援向量機 
支援向量機(SVM,Support Vector Machine)是Vapnik根據統計學習理論提出的一種新的學習方法[43] ,它的最大特點是根據結構風險最小化準則,以最大化分類間隔構造最優分類超平面來提高學習機的泛化能力,較好地解決了非線性、高維數、區域性極小點等問題。對於分類問題,支援向量機演算法根據區域中的樣本計算該區域的決策曲面,由此確定該區域中未知樣本的類別。 
(6) 
 遺傳演算法
            聚類演算法