資料探勘演算法

2021-07-25 15:58:09 字數 4881 閱讀 4124

apriori演算法學習資料的關聯規則(association rules),適用於包含大量事務(transcation)的資料庫。

關聯規則學習是學習資料庫中不同變數中的相互關係的一種資料探勘技術。

你可能會對 apriori 演算法如何工作有疑問,在進入演算法本質和細節之前,得先明確3件事情:

第一是你的項集的大小,你想看到的模式是2-itemset或3-itemset 還是其他的?

第二是你支援的項集,或者是從事務的總數劃分出的事務包含的項集。乙個滿足支援度的項集叫做頻繁項集。

第三是根據你已經統計的項集中某些資料項,計算其他某個資料項出現的信心水準或是條件概率

基本的 apriori 演算法有三步:

參與,掃瞄一遍整個資料庫,計算1-itemsets 出現的頻率。

剪枝,滿足支援度和可信度的這些1-itemsets移動到下一輪流程,再尋找出現的2-itemsets。

重複,對於每種水平的項集 一直重複計算,知道我們之前定義的項集大小為止。

這個演算法是監督的還是非監督的?apriori 一般被認為是一種非監督的學習方法,因為它經常用來挖掘和發現有趣的模式和關係。

但是,等下,還有呢…對apriori 演算法改造一下也能對已經標記好的資料進行分類。

為什麼使用apriori 演算法?它易於理解,應用簡單,還有很多的派生演算法。

但另一方面…

當生成項集的時候,演算法是很耗費記憶體、空間和時間。

大量的 apriori 演算法的語言實現可供使用。比較流行的是 artool, weka, and orange。

它是做什麼的呢?k-聚類演算法從乙個目標集中建立多個組,每個組的成員都是比較相似的。這是個想要探索乙個資料集時比較流行的聚類分析技術。

等下,什麼是聚類分析呢?聚類分析屬於設計構建組群的演算法,這裡的組成員相對於非組成員有更多的相似性。在聚類分析的世界裡,類和組是相同的意思。

舉個例子,假設我們定義乙個病人的資料集。在聚類分析裡,這些病人可以叫做觀察物件。我們知道每個病人的各類資訊,比如年齡、血壓、血型、最大含氧量和膽固醇含量等。這是乙個表達病人特性的向量。

請看:你可以基本認為乙個向量代表了我們所知道的病人情況的一列資料。這列資料也可以理解為多維空間的座標。脈搏是一維座標,血型是其他維度的座標等等。

你可能會有疑問:

給定這個向量集合,我們怎麼把具有相似年齡、脈搏和血壓等資料的病人聚類呢?

想知道最棒的部分是什麼嗎?

你告訴 k-means 演算法你想要多少種類。k-means 演算法會處理後面的部分。

那它是怎麼處理的呢?k-means 演算法有很多優化特定資料型別的變數。

kmeans演算法更深層次的這樣處理問題:

k-means 演算法在多維空間中挑選一些點代表每乙個 k 類。他們叫做中心點。

每個病人會在這 k 個中心點中找到離自己最近的乙個。我們希望病人最靠近的點不要是同乙個中心點,所以他們在靠近他們最近的中心點周圍形成乙個類。

我們現在有 k 個類,並且現在每個病人都是乙個類中的一員。

之後k-means 演算法根據它的類成員找到每個 k 聚類的中心(沒錯,用的就是病人資訊向量)

這個中心成為類新的中心點。

因為現在中心點在不同的位置上了,病人可能現在靠近了其他的中心點。換句話說,他們可能會修改自己的類成員身份。

重複2-6步直到中心點不再改變,這樣類成員也就穩定了。這也叫做收斂性。

這演算法是監督的還是非監督的呢?這要看情況了,但是大多數情況下 k-means 會被劃分為非監督學習的型別。並不是指定分類的個數,也沒有觀察物件該屬於那個類的任何資訊,k-means演算法自己「學習」如何聚類。k-means 可以是半監督的。

為什麼要使用 k-means 演算法呢?我認為大多數人都同意這一點:

k-means 關鍵賣點是它的簡單。它的簡易型意味著它通常要比其他的演算法更快更有效,尤其是要大量資料集的情況下更是如此。

他可以這樣改進:

k-means 可以對已經大量資料集進行預先聚類處理,然後在針對每個子類做成本更高點的聚類分析。k-means 也能用來快速的處理「k」和探索資料集中是否有被忽視的模式或關係。

但用k-means 演算法也不是一帆風順的:

k means演算法的兩個關鍵弱點分別是它對異常值的敏感性和它對初始中心點選擇的敏感性。最後乙個需要記住的是, k-means 演算法是設計來處理連續資料的。對於離散資料你需要使用一些小技巧後才能讓 k-means 演算法奏效。

它是做什麼的呢?支援向量機(svm)獲取乙個超平面將資料分成兩類。以高水準要求來看,除了不會使用決策樹以外,svm與 c4.5演算法是執行相似的任務的。

咦?乙個超..什麼? 超平面(hyperplane)是個函式,類似於解析一條線的方程。實際上,對於只有兩個屬性的簡單分類任務來說,超平面可以是一條線的。

其實事實證明:

svm 可以使用乙個小技巧,把你的資料提公升到更高的維度去處理。一旦提公升到更高的維度中,svm演算法會計算出把你的資料分離成兩類的最好的超平面。

有例子麼?當然,舉個最簡單的例子。我發現桌子上開始就有一堆紅球和藍球,如果這這些球沒有過分的混合在一起,不用移動這些球,你可以拿一根棍子把它們分離開。

你看,當在桌上加乙個新球時,通過已經知道的棍字的哪一邊是哪個顏色的球,你就可以**這個新球的顏色了。

最酷的部分是什麼呢?svm 演算法可以算出這個超平面的方程。

如果事情變得更複雜該怎麼辦?當然了,事情通常都很複雜。如果球是混合在一起的,一根直棍就不能解決問題了。

下面是解決方案:

快速提起桌子,把所有的球拋向空中,當所有的球以正確的方式拋在空中是,你使用一張很大的紙在空中分開這些球。

你可能會想這是不是犯規了。不,提起桌子就等同於把你的資料對映到了高維空間中。這個例子中,我們從桌子表面的二維空間過度到了球在空中的三維空間。

那麼 svm該怎麼做呢?通過使用核函式(kernel),我們在高維空間也有很棒的操作方法。這張大紙依然叫做超平面,但是現在它對應的方程是描述乙個平面而不是一條線了。根據 yuval 的說法,一旦我們在三維空間處理問題,超平面肯定是乙個面而不是線了。

關於 svm的解釋思路,reddit 的 eli5 和 ml 兩個子版塊上也有兩個很棒的討論帖。

那麼在桌上或者空中的球怎麼用現實的資料解釋呢?桌上的每個球都有自己的位置,我們可以用座標來表示。打個比方,乙個球可能是距離桌子左邊緣20cm 距離底部邊緣 50 cm,另一種描述這個球的方式是使用座標(x,y)或者(20,50)表達。x和 y 是代表球的兩個維度。

可以這樣理解:如果我們有個病人的資料集,每個病人可以用很多指標來描述,比如脈搏,膽固醇水平,血壓等。每個指標都代表乙個維度。

基本上,svm 把資料對映到乙個更高維的空間然後找到乙個能分類的超平面。

類間間隔(margin)經常會和 svm 聯絡起來,類間間隔是什麼呢?它是超平面和各自類中離超平面最近的資料點間的距離。在球和桌面的例子中,棍子和最近的紅球和藍球間的距離就是類間間隔(margin)。

svm 的關鍵在於,它試圖最大化這個類間間隔,使分類的超平面遠離紅球和藍球。這樣就能降低誤分類的可能性。

那麼支援向量機的名字是**來的?還是球和桌子的例子中,超平面到紅球和藍球的距離是相等的。這些球或者說資料點叫做支援向量,因為它們都是支援這個超平面的。

那這是監督演算法還是非監督的呢?svm 屬於監督學習。因為開始需要使用乙個資料集讓 svm學習這些資料中的型別。只有這樣之後 svm 才有能力對新資料進行分類。

為什麼我們要用 svm 呢? svm 和 c4.5大體上都是優先嘗試的二類分類器。根據「沒有免費午餐原理」,沒有哪一種分類器在所有情況下都是最好的。此外,核函式的選擇和可解釋性是演算法的弱點所在。

在**使用 svm?有什麼 svm 的實現方法,比較流行的是用scikit-learn, matlab 和 libsvm實現的這幾種。

定義:分類樹(決策樹)是一種十分常用的分類方法。他是一種監管學習,所謂監管學習說白了很簡單,就是給定一堆樣本,每個樣本都有一組屬性和乙個類別,這些類別是事先確定的,那麼通過學習得到乙個分類器,這個分類器能夠對新出現的物件給出正確的分類。這樣的機器學習就被稱之為監督學習。分類本質上就是乙個map的過程。c4.5分類樹就是決策樹演算法中最流行的一種。

演算法簡介:

1.

function c4.5(r:包含連續屬性的無類別屬性集合,c:類別屬性,s:訓練集)

2. /*返回一棵決策樹*/

3.begin

4.if s為空,返回乙個值為failure的單個節點;

5.if s是由相同類別屬性值的記錄組成,

6. 返回乙個帶有該值的單個節點;

7.if r為空,則返回乙個單節點,其值為在s的記錄中找出的頻率最高的類別屬性值;

8. [注意未出現錯誤則意味著是不適合分類的記錄];

9.for 所有的屬性r(ri) do

10.if 屬性ri為連續屬性,則

11.begin

12. 將ri的最小值賦給a1:

13. 將rm的最大值賦給am;/*m值手工設定*/

14.for j from 2 to m-1

do aj=a1+j*(a1am)/m;

15. 將ri點的基於的最大資訊增益屬性(ri,s)賦給a;

16.end;

17. 將r中屬性之間具有最大資訊增益的屬性(d,s)賦給d;

18. 將屬性d的值賦給;

19. 將分別由對應於d的值為dj的記錄組成的s的子集賦給;

20. 返回一棵樹,其根標記為d;樹枝標記為d1,d2...dm;

21. 再分別構造以下樹:

22. c4.5(r-,c,s1),c4.5(r-,c,s2)...c4.5(r-,c,sm);

23.end c4.5

資料探勘演算法

include include define d 9 d數事務的個數 define minsupcount 2 最小事務支援度數 void main char b 20 d 100 t,b2 100 10 b21 100 10 int i,j,k,x 0,flag 1,c 20 x1 0,i1 0,...

資料探勘演算法

目錄 1.簡述資料探勘概念。2.根據 方法的性質將 方法分為哪些類?各有何優缺點?3.時序 方面典型的演算法有哪些?各有什麼特點?4.根據研究的方式分類,可將時間序列 與挖掘分為哪些類?5.什麼是序貫模式挖掘spmgc演算法?6.資料探勘的常用演算法有哪幾類?有哪些主要演算法?7.資料探勘方法中分類...

資料探勘演算法 K means演算法

k means中文稱為k均值聚類演算法,在1967年就被提出 所謂聚類就是將物理或者抽象物件的集合分組成為由類似的物件組成的多個簇的過程 聚類生成的組成為簇 簇內部任意兩個物件之間具有較高的相似度,不同簇的兩個物件之間具有較高的相異度 相異度和相似度可以根據描述的物件的屬性值來計算 物件間的距離是最...