導航:首頁 > 編程大全 > 大數據聚類資料庫

大數據聚類資料庫

發布時間:2024-11-24 04:26:22

大數據分析之聚類演算法

大數據分析之聚類演算法
1. 什麼是聚類演算法
所謂聚類,就是比如給定一些元素或者對象,分散存儲在資料庫中,然後根據我們感興趣的對象屬性,對其進行聚集,同類的對象之間相似度高,不同類之間差異較大。最大特點就是事先不確定類別。
這其中最經典的演算法就是KMeans演算法,這是最常用的聚類演算法,主要思想是:在給定K值和K個初始類簇中心點的情況下,把每個點(亦即數據記錄)分到離其最近的類簇中心點所代表的類簇中,所有點分配完畢之後,根據一個類簇內的所有點重新計算該類簇的中心點(取平均值),然後再迭代的進行分配點和更新類簇中心點的步驟,直至類簇中心點的變化很小,或者達到指定的迭代次數。
KMeans演算法本身思想比較簡單,但是合理的確定K值和K個初始類簇中心點對於聚類效果的好壞有很大的影響。
聚類演算法實現
假設對象集合為D,准備劃分為k個簇。
基本演算法步驟如下:
1、從D中隨機取k個元素,作為k個簇的各自的中心。
2、分別計算剩下的元素到k個簇中心的相異度,將這些元素分別劃歸到相異度最低的簇。
3、根據聚類結果,重新計算k個簇各自的中心,計算方法是取簇中所有元素各自維度的算術平均數。
4、將D中全部元素按照新的中心重新聚類。
5、重復第4步,直到聚類結果不再變化。
6、將結果輸出。

核心Java代碼如下:
/**
* 迭代計算每個點到各個中心點的距離,選擇最小距離將該點劃入到合適的分組聚類中,反復進行,直到
* 分組不再變化或者各個中心點不再變化為止。
* @return
*/
public List[] comput() {
List[] results = new ArrayList[k];//為k個分組,分別定義一個聚簇集合,未來放入元素。

boolean centerchange = true;//該變數存儲中心點是否發生變化
while (centerchange) {
iterCount++;//存儲迭代次數
centerchange = false;
for (int i = 0; i < k; i++) {
results[i] = new ArrayList<T>();
}
for (int i = 0; i < players.size(); i++) {
T p = players.get(i);
double[] dists = new double[k];
for (int j = 0; j < initPlayers.size(); j++) {
T initP = initPlayers.get(j);
/* 計算距離 這里採用的公式是兩個對象相關屬性的平方和,最後求開方*/
double dist = distance(initP, p);
dists[j] = dist;
}

int dist_index = computOrder(dists);//計算該點到各個質心的距離的最小值,獲得下標
results[dist_index].add(p);//劃分到對應的分組。
}
/*
* 將點聚類之後,重新尋找每個簇的新的中心點,根據每個點的關注屬性的平均值確立新的質心。
*/
for (int i = 0; i < k; i++) {
T player_new = findNewCenter(results[i]);
System.out.println("第"+iterCount+"次迭代,中心點是:"+player_new.toString());
T player_old = initPlayers.get(i);
if (!IsPlayerEqual(player_new, player_old)) {
centerchange = true;
initPlayers.set(i, player_new);
}

}

}

return results;
}
上面代碼是其中核心代碼,我們根據對象集合List和提前設定的k個聚集,最終完成聚類。我們測試一下,假設要測試根據NBA球員的場均得分情況,進行得分高中低的聚集,很簡單,高得分在一組,中等一組,低得分一組。
我們定義一個Player類,裡面有屬性goal,並錄入數據。並設定分組數目為k=3。
測試代碼如下:
List listPlayers = new ArrayList();
Player p1 = new Player();
p1.setName(「mrchi1」);
p1.setGoal(1);
p1.setAssists(8);
listPlayers.add(p1);

Player p2 = new Player();
p2.setName("mrchi2");
p2.setGoal(2);
listPlayers.add(p2);

Player p3 = new Player();
p3.setName("mrchi3");
p3.setGoal(3);
listPlayers.add(p3);
//其他對象定義此處略。製造幾個球員的對象即可。
Kmeans<Player> kmeans = new Kmeans<Player>(listPlayers, 3);
List<Player>[] results = kmeans.comput();
for (int i = 0; i < results.length; i++) {
System.out.println("類別" + (i + 1) + "聚集了以下球員:");
List<Player> list = results[i];
for (Player p : list) {
System.out.println(p.getName() + "--->" + p.getGoal()

}
}
演算法運行結果:

可以看出中心點經歷了四次迭代變化,最終分類結果也確實是相近得分的分到了一組。當然這種演算法有缺點,首先就是初始的k個中心點的確定非常重要,結果也有差異。可以選擇彼此距離盡可能遠的K個點,也可以先對數據用層次聚類演算法進行聚類,得到K個簇之後,從每個類簇中選擇一個點,該點可以是該類簇的中心點,或者是距離類簇中心點最近的那個點。

Ⅱ 請問大數據的關鍵技術有哪些

1.分布式存儲系統(HDFS)。2.MapRece分布式計算框架。3.YARN資源管理平台。4.Sqoop數據遷移工具。5.Mahout數據挖掘演算法版庫。權6.HBase分布式資料庫。7.Zookeeper分布式協調服務。8.Hive基於Hadoop的數據倉庫。9.Flume日誌收集工具。

Ⅲ 聚類和分類的區別(分類與聚類的本質區別)

分類(Classification)與聚類(Clustering)在數據處理圈中算是出現頻率較高的兩類演算法。但對不了解數據處理的人來說,當把二者放到一起時,很容易傻傻分不清楚。下面,看點哥在不涉及具體、復雜、高深的演算法步驟和說明的前提下,來對兩個演算法進行一下淺顯易懂、入門級的介紹和對比。

對受眾的標簽類別是已知還是未知

具體解釋就是,分類對受眾標簽類別是已知的。即事先定義的類別,類別數量,甚至類別間的層級關系都是已知的。然後利用訓練和學習完的模型把資料庫中的未分類數據項,根據特徵或屬性映射到給定類別中的某一類中;而聚類則對受眾標簽類別是未知的。即沒有事先預定的類別,類別數也不確定。只是根據物以類聚的原理,通過對演算法判斷規則的調整將具有相似特徵的數據聚成一類。

分類與聚類的應用思路

可能從概念上理解分類與聚類的本質區別比較晦澀難懂。下面列舉二者在互聯網廣告中的應用實例,從而來做進一步區分。其中,電商是同時利用這兩種演算法的典型領域。

分類演算法應用思路

效果類廣告投放的開始階段我們稱之為冷啟動階段。可能對大多數非HERO級別電商廣告主而言,自身沒有第一方數據或者數據量稀疏。這導致依靠歷史數據積累才能發揮作用的演算法無法派上用場。那麼,在冷啟動階段如何進行廣告投放?使用分類演算法對廣告平台預先分類出的人群做投放是明智之選。這里要強調:並不是說分類演算法不需要數據積累,而是人群分類本身就是基於全局的、利用歷史上受眾行為得出的,已經完成了前期的數據積累、分析過程。

使用分類演算法,就是藉助強大的大數據技術,預先將廣告平台人群數據按照標簽屬性做好分類,然後運營人員利用經驗和對客戶產品的深刻理解,可以從歸類好的平台資料庫中篩選出目標受眾類來做定向投放。分類演算法就相當於區分受眾的工具,是電商廣告主或投放平台搞清楚對誰投廣告的過程。受眾分類做得好、分得准,能大大縮短冷啟動周期,減少預算浪費。

聚類演算法應用思路

當投放開始後,隨著運營人員根據實時的投放反饋數據及時優化調整投放策略,會積累越來越多的有效用戶數據。這時候,聚類演算法開始出場了。在電商領域,這里所說的有效用戶數據,就是用戶的電商行為數據,如商品瀏覽、點擊、加入購物車、購買等行為數據。利用這些行為數據加上聚類演算法的判斷規則,協助電商廣告主進行客戶分群,即用不同劃分標准將相似行為的用戶聚到一起,比如分為:高價值用戶、一般價值用戶和潛在用戶;或者是追求品質型用戶、追求實用型用戶、追求個性型用戶等。然後進一步深入挖掘、刻畫不同客戶群的特徵,從而為不同價值或不同喜好的客戶群提供不同的營銷推廣方案和預算配比方案,將能最大化提升轉化率和客單值。

聚類演算法是電商廣告主細分市場、細分消費者的有效工具;同時也可通過研究消費者行為,進一步高效化開拓新的潛在市場、挖掘潛在客戶,最大化提高自身盈利水平。

說在最後

大數據的真正含義不在於大,而在於從海量的資料庫中挖掘出隱含在其中的有用信息。而今天所講的分類、聚類演算法,就是把數據變得更有價值的兩種常見數據挖掘演算法。對於這兩種演算法,你不一定要會,但一定要懂!只有了解了二者的應用思路,才能通過大數據高度自動化地分析,做出歸納性的推理,從中挖掘出潛在的價值信息,幫助企業調整自身市場策略、減少風險、理性面對市場,從而保持核心競爭力,立於不敗之地!

Ⅳ 大數據思維方式主要有

主要有分類、回歸分析、聚類、關聯規則、特徵、變化和偏差分析、Web頁挖掘等,它們分別從不同的角度對數據進行挖掘。
分類是找出資料庫中一組數據對象的共同特點並按照分類模式將其劃分為不同的類,其目的是通過分類模型,將資料庫中的數據項映射到某個給定的類別。
回歸分析方法反映的是事務資料庫中屬性值在時間上的特徵,產生一個將數據項映射到一個實值預測變數的函數,發現變數或屬性間的依賴關系,其主要研究問題包括數據序列的趨勢特徵、數據序列的預測以及數據間的相關關系等。

Ⅳ 大數據kdd是什麼

數據知識發現(KDD),是自動或方便地提取模式,表示在大型資料庫,數據倉庫,Web,其他海量信息庫或數據流中隱式存儲或捕獲的知識。知識發現是從各種信息中,根據不同的需求獲得知識的過程。知識發現的目的是向使用者屏蔽原始數據的繁瑣細節,從原始數據中提煉出有效的、新穎的、潛在有用的知識,直接向使用者報告。

KDD的基本任務

1、數據分類

分類是數據挖掘研究的重要分支之一,是一種有效的數據分析方法。分類的目標是通過分析訓練數據集,構造一個分類模型(即分類器),該模型能夠把資料庫中的數據記錄映射到一個給定的類別,從而可以l立用於數據預測。

2、數據聚類

當要分析的數據缺乏必要的描述信息,或者根本就無法組織成任何分類模式時,利用聚類函數把一組個體按照相似性歸成若干類,這樣就可以自動找到類。聚類和分類類似,都是將數據進行分組。但與分類不同的是,聚類中的組不是預先定義的,而是根據實際數據的特徵按照數據之間的相似性來定義的。

閱讀全文

與大數據聚類資料庫相關的資料

熱點內容
win7網路鄰居如何保存ftp 瀏覽:186
安卓客戶端代理伺服器 瀏覽:572
編程用蘋果 瀏覽:659
51虛擬機的文件管理在哪裡 瀏覽:13
win10系統有沒有便簽 瀏覽:722
java引用傳遞和值傳遞 瀏覽:109
oracle下載安裝教程 瀏覽:854
php篩選資料庫 瀏覽:830
怎麼用手機看wlan密碼 瀏覽:745
奧維地圖導入的文件在哪裡 瀏覽:364
sdltrados2014教程 瀏覽:43
培訓制度文件在哪裡找 瀏覽:601
勒索病毒防疫工具 瀏覽:861
win10c不能打開 瀏覽:375
xfplay影音先鋒蘋果版 瀏覽:597
兩個文件打開兩個word 瀏覽:921
蘋果6s桌面圖標輕微抖動 瀏覽:326
如何刪除手機中看不見的臨時文件 瀏覽:469
安卓412原生鎖屏apk 瀏覽:464
書加加緩存文件在哪裡 瀏覽:635

友情鏈接