999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于異構大數據平臺的并行化K-means算法設計與實現

2025-03-20 00:00:00張適顯黃萬兵熊文
無線互聯科技 2025年4期
關鍵詞:大數據技術數據挖掘

摘要:K-means算法是數據挖掘和機器學習中用于聚類分析的基礎工具,廣泛應用于文檔聚類、異常值檢測等多個領域。然而,隨著大數據時代的來臨,傳統方法難以滿足大規模數據聚類分析的處理需求。為此,文章基于Spark 和 GPU 構建異構大數據平臺,對K-means算法進行并行化設計與實現,以提高K-means算法的數據處理效率和資源利用率。文章在4個公開的真實數據集上驗證了該方法的有效性,與傳統的并行化K-means方法進行對比,實驗結果證明該方法相較傳統方法具備更好的性能。

關鍵詞:并行計算;異構計算;大數據技術;數據挖掘;K-means算法;聚類分析

中圖分類號:TP311.13 "文獻標志碼:A

0 引言

K-means算法[1]是聚類分析的基礎工具,廣泛應用于推薦系統、異常檢測和文檔聚類等領域。然而,面對大數據時代產生的海量數據,傳統聚類方法難堪重任。盡管已有基于分布式計算或GPU的加速方案被提出,但它們在異構大數據平臺上的支持和性能仍有限,不能針對任務特點充分利用CPU和GPU的設備優勢且并行計算的過程中容易產生大量的網絡傳輸。

例如,在借助分布式技術引擎加速K-means算法方面,張波等[2]借助并行計算引擎Spark實現了并行化K-means算法。李召鑫等[3]借助并行計算引擎Flink對K-means算法進行了并行化,這類方法能夠通過增加CPU設備的數量來提升數據處理任務的并行度,以此來提升程序性能,但該類方法僅支持CPU設備,不支持GPU設備,不能利用異構設備的特點進一步加速處理性能。此外,該類方法并行計算時存在大量跨節點通信,會降低處理性能。在借助GPU設備加速K-means算法方面,方玉玲等[4]和劉端陽等[5]通過計算統一設備架構(Computer Unified Device Architecture, CUDA)編程使用GPU設備實現并行化的K-means算法,該類方法與僅使用CPU設備的方法相比取得了較大的性能提升且不會產生多個計算節點間的大規模網絡傳輸。但該類方案的橫向擴展能力受限且未整合CPU設備,因此,該類方案仍不能利用異構設備的特點進行任務劃分和程序優化。

為解決這些問題,本文提出一種基于異構大數據平臺的并行化K-means算法,設計了一種任務劃分方法,結合K-means、Spark和CUDA的特點,按計算任務的類型將任務分配到合適的硬件設備上計算。此外,該方法通過數據扁平化和統一索引,降低了Spark與GPU間的通信成本。本文還引入了K-means++[6]以及Yinyang K-means算法[7],優化處理流程,減少無效計算。最后,在一個配備了2個GPU和32 個CPU的異構大數據平臺上,使用4個公開的真實數據集進行實驗,驗證了方案的有效性。

1 技術路線

本節包括2部分:K-means并行化流程設計和CUDA并行算法設計。K-means并行化流程設計部分將深入探討K-means算法、CUDA編程和Spark編程的特點,討論算法流程中每個步驟使用的設備和并行計算的方法以及設備間通信的方式等。

1.1 K-means并行化流程設計

與僅使用CPU設備或GPU設備的并行計算平臺相比,異構計算平臺的優勢在于可充分利用不同類型的處理器設備,結合任務特點劃分計算任務。例如,將控制流和序列任務劃分給CPU,將計算密集型的任務劃分給GPU。

K-means 算法的作用是將數據集中的所有樣本點劃分為k個類簇,算法流程包括4個步驟:Step1,初始化k個中心點;Step2,計算每個數據點與k個中心點的距離,納入最近中心點的類簇;Step3,根據每個簇的數據點重新計算生成每個簇的中心點;Step4,重復步驟Step2和Step3,直到收斂或達到最大迭代次數。上述過程中,計算最為密集的步驟為Step2和Step3,這是因為在收斂或達到最大迭代次數之前,這2個步驟會被反復執行,迭代次數多。每次迭代應遍歷所有樣本點,每個樣本點須與k個簇的中心點計算距離,單個輪次的計算量也略大。

基于上述分析,本文設計并實現了如圖 1所示的基于異構計算平臺的K-means算法流程。處理流程包括數據加載、數據預處理、數據挖掘(即執行K-means算法)和知識獲取。其中,數據預處理和數據挖掘階段的任務是GPU更擅長的計算密集型任務(包含Step2和Step3),因此,針對這2個階段,使用CUDA編寫并行計算程序來調用GPU進行處理,其余部分使用Spark并行計算引擎調度多個CPU進行處理。

由于Spark的編程環境是Java,CUDA編程的環境是C語言,且兩者調度的設備也不一致,因此,使用JNI技術進行數據傳輸。具體過程如下:首先,Spark端在數據預處理和數據挖掘階段將CPU設備中的數據進行序列化,傳輸到CUDA端。之后,CUDA端用GPU設備加速K-means算法流程中的Step2和Step3。最后,CUDA端將計算得的結果進行序列化,再通過JNI技術傳輸回Spark端。

因為通過JNI技術傳輸基本數據類型的效率要優于封裝數據類型的傳輸效率,所以在序列化數據之前,將多維向量構成的矩陣展開為一維數組,將封裝數據類型在本地轉化為基本數據類型再進行序列化和傳輸,數據扁平化如圖 2所示。該方法可以有效地減少Spark端CPU設備與CUDA端GPU設備間的通信開銷。

此外,本文在Spark端和CUDA端都采用了統一索引排列數據,在返回的結果中只須回傳每個數據點對應的簇中心下標,將傳輸數據的空間復雜度從O(d×n)下降至O(n) 。

1.2 CUDA并行算法設計

為了提升CUDA并行計算程序的性能,本文首先用K-means++算法初始化k個類簇的中心點,基于更合理的初始化方式減少算法迭代次數。其次,使用CUDA對Yinyang K-means中可并行化執行的步驟進行編程實現,以此提升K-means算法在GPU中的執行效率。

為了方便描述經本文優化的K-means算法,此處對一些必要的符號和公式進行解釋。設X為包含n個樣本點的數據集,x為數據集X中的一個樣本點,x的特征維度為d維。令k為聚類標簽類別的數量(即簇數),將k個簇的中心點所構成的集合稱為C,c為集合C中的一個簇類中心點,此時x與c之間的距離定義為d(x,c)。每輪迭代中,x會與C中的所有中心點計算距離,取距離最短的中心點b(x)作為標簽。令下一輪次的C、c、b(x)為C′、c′、b′(x),則迭代過程中,中心點c相較下一輪次中心點c′的偏移量為d(c,c′),定義為δ(c)。之后定義ub(x)為邊界上限,lb(x)為邊界下限,用于過濾無效計算,其定義如式(1)所示:

ub(x)gt;d(x,b(x))

lb(x)lt;d(x,c),c∈C-b(x)(1)

本文參考Yinyang K-means實現了優化的過濾方法以及簇中心更新方式。在過濾時,組過濾是全局過濾的擴展,組過濾首先將k個簇中心點分成t個組,即G={G1,G2,...,Gt},在初次分組后,在組內實施全局過濾,具體如式(2)所示:

lb(x,Gi)lt;d(x,c),c∈Gi-b(x)

lb(x,Gi)-maxc∈Giδ(c)≥ub(x)+δ(b)(2)

中心點更新方式如式(3)所示,V和V′表示2次迭代的中心點集合,OV=V∩V′。

c′=c×|V|-(∑y∈V-OVy)+∑y′∈V′-OVy|V′|(3)

將下邊界集合L和上邊界集合U定義為輔助數據結構,具體如式(4)所示:

L={lb(x1,G1),lb(x2,G2),…,lb(xn,Gn)}

U={ub(x1),ub(x2),…,ub(xn)}(4)

結合上述公式符號的定義,基于CUDA實現的K-means算法流程如下。

Step1:傳入參數n、d、k、X,基于K-means++生成k個中心點,初始化中心點集合C和組集合G。

Step2:使用CUDA并行地將X中的所有樣本點劃分到最近的簇中,初始化簇標簽集合P、上下邊界集合L和U。

Step3:使用CUDA并行地遍歷X中的每個樣本點,根據上下邊界集合L和U以及過濾規則,重新匹配C中與x最匹配的簇,得到新的聚類標簽集合P。

Step4:根據新的聚類標簽集合P,使用CUDA并行地遍歷每個簇的樣本點,更新每個簇的中心點,得到新的中心集合C。

Step5:使用CUDA并行地檢查是否達到收斂條件,若是則取P為最終計算結果。若否,則判斷是否達到最大迭代次數,若未達到則跳轉到Step3進行新一輪的迭代;若達到最大迭代次數則取P為最終計算結果。

2 實驗

2.1 數據集

本文用UCI Machine Learning Repository公開的4個真實數據集MSD、Census、SuSy和Higgs進行實驗驗證,證明本文方法在不同規模和復雜度的數據集上的有效性。具體而言,MSD、Census、SuSy和Higgs的樣本點數量依次為5.2萬個、25萬個、50萬個和110萬個,對應的特征維度依次為90、68、18和28。

2.2 實驗結果與分析

為驗證本文方法相較傳統方法Spark MLib庫并行化K-means的有效性,本文采用32個CPU核心,20 GB的內存在前文提及的4個真實數據集上進行測試,調整k值進行多組實驗。比較2種方法的執行時間,計算加速比作為性能評估指標。此處的加速比(S)定義為傳統方法執行時間(T1)與本文方法執行時間(T2)的比值,即S=T1/T2。實驗結果如表 1所示。

從表 1中可發現,本文方法除了在Census數據集上,當k=4時,表現弱于傳統方法,其他場景下都優于傳統方法,且k值越大,本文方法相較傳統方法的優勢越顯著,特別是當k=10000時,本文方法在Higgs數據集上達到了最顯著的提升,是傳統方法加速比的247倍。

產生上述現象的原因是當數據集的計算量和k值較小時,本文方法的數據通信開銷大于并行計算帶來的加速,反而降低了性能。而在較大數據集和大k值的場景下,本文方法相較傳統方法能夠更有效地穩定提升聚類分析的性能。

為了探究數據集大小對本文方法聚類性能的影響,本文從Higgs數據集中隨機抽取了不同大小的子集,從0.25 M到8.00 M,共6個,使用與前文一致的硬件配置進行實驗,聚類簇數量k設置為1024,數據集大小對算法耗時與加速比的影響如圖 3所示。

由圖3可知,盡管2種方法的執行時間隨著數據負載的增加而增加,但任意負載下,本文方法相較傳統方法都表現出了更好的性能和穩定性,加速比在 "3.48~7.41,這證明了本文方法相較傳統方法的有效性和優越性。

3 結語

本研究針對大數據時代下K-means算法的性能瓶頸,提出了一種基于異構大數據平臺的并行化方法。該方法能夠對K-means算法、Spark編程和CUDA編程的特點進行任務劃分,將數據扁平化和統一索引應用于數據傳輸中,優化了K-means算法的計算流程。實驗結果表明,該方案相較傳統方法有效地提升了計算性能并減少了通信開銷。未來筆者會嘗試在更多異構計算節點上的并行化,進一步提升方法的可擴展性。

參考文獻

[1]WONG J A .Algorithm AS 136: a K-means clustering algorithm[J].Journal of the Royal Statistical Society, 1979(1):100-108.

[2]張波.基于Spark的K-means算法的并行化實現與優化[D].武漢:華中科技大學,2015.

[3]李召鑫,孟祥印,肖世德,等.基于Flink框架的K-means算法優化及并行計算策略[J].計算機與數字工程,2023(10):2231-2235.

[4]方玉玲,那麗春.一種基于CUDA的K-means多級并行優化方法[J].小型微型計算機系統,2021(7):1547-1553.

[5]劉端陽,鄭江帆,沈國江,等.基于CUDA的K-means算法并行化研究[J].計算機科學,2018(11):292-297.

[6]ARTHUR D, VASSILVITSKII S .K-means++: the advantages of careful seeding[C]//Proceedings of the Eighteenth Annual ACM-SIAM Symposium on Discrete Algorithms, SODA 2007, New Orleans, Louisiana, USA, January 7-9, 2007.

[7]TAYLOR C, GOWANLOCK M . Accelerating the Yinyang K-means algorithm using the GPU[C]//2021 IEEE 37th International Conference on Data Engineering (ICDE),April 19-22,2021,Chania,Greece,New York: IEEE, 2021.

(編輯 王雪芬編輯)

Design and implementation of parallelized K-means based on heterogeneous

big data platform

ZHANG" Shixian, HUANG" Wanbing, XIONG" Wen*

(School of Information,Yunnan Normal University, Kunming 650000, China)

Abstract: "The K-means algorithm is a fundamental tool in data mining and machine learning for cluster analysis and is widely used in various fields such as document clustering and anomaly detection. However, with the advent of the big data era, traditional methods struggle to meet the processing demands of large-scale data clustering analysis. To address the problems, the article presents a parallelized design and implementation of the K-means algorithm based on a heterogeneous big data platform constructed with Spark and GPU, aiming to enhance the data processing efficiency and resource utilization of the K-means algorithm. The methods are validated in this article on four publicly available real-world datasets and compared them with traditional parallelized K-means methods. The experimental results demonstrate that our approach outperforms traditional methods in terms of performance.

Key words: parallel computing; heterogeneous computing; big data technology; data mining; K-means algorithm; cluster analysis

猜你喜歡
大數據技術數據挖掘
探討人工智能與數據挖掘發展趨勢
基于并行計算的大數據挖掘在電網中的應用
電力與能源(2017年6期)2017-05-14 06:19:37
大數據技術在電子商務中的應用
大數據技術對新聞業務的影響研究
數據挖掘技術在中醫診療數據分析中的應用
論大數據技術在智能電網中的應用
高校檔案管理信息服務中大數據技術的應用
大數據技術在電氣工程中的應用探討
大數據技術在商業銀行中的應用分析
一種基于Hadoop的大數據挖掘云服務及應用
主站蜘蛛池模板: 亚洲不卡网| 91美女视频在线| 日本三区视频| 国内精品视频在线| 一级爆乳无码av| 亚洲永久精品ww47国产| 久久亚洲高清国产| 四虎国产精品永久在线网址| 国产一区亚洲一区| 国产18页| 无码人中文字幕| 欧洲一区二区三区无码| 亚洲人成网站18禁动漫无码| 九色最新网址| 色成人亚洲| 性欧美在线| 国产福利大秀91| 99er精品视频| 国产福利在线观看精品| 视频二区国产精品职场同事| 亚洲综合香蕉| 伊在人亞洲香蕉精品區| 在线精品欧美日韩| 在线观看精品国产入口| 色老二精品视频在线观看| 国产成人狂喷潮在线观看2345| 成人午夜天| 91成人免费观看| 自慰高潮喷白浆在线观看| 在线看片国产| 欧美成人A视频| AV不卡在线永久免费观看| 成人a免费α片在线视频网站| 亚洲有无码中文网| 国产在线91在线电影| 亚洲日韩国产精品综合在线观看| 丰满人妻一区二区三区视频| 色有码无码视频| 乱系列中文字幕在线视频| 国产制服丝袜91在线| 六月婷婷精品视频在线观看| 久久亚洲国产视频| 六月婷婷精品视频在线观看| 国产污视频在线观看| 国产视频一区二区在线观看| 91在线播放免费不卡无毒| 亚洲熟女中文字幕男人总站| 国产成人1024精品下载| 精品久久蜜桃| 国产成人AV男人的天堂| 亚洲国产精品久久久久秋霞影院| AV天堂资源福利在线观看| AV熟女乱| 人妻21p大胆| 亚洲成a人片| 国产91九色在线播放| 国产精品微拍| 国产办公室秘书无码精品| 亚洲成a人在线播放www| 国产www网站| 亚洲视频免| 亚洲精品第一在线观看视频| 18禁不卡免费网站| 亚洲综合色区在线播放2019| 天堂网国产| 九九九九热精品视频| 萌白酱国产一区二区| 国产一国产一有一级毛片视频| 亚洲国产成人久久77| 精品人妻一区二区三区蜜桃AⅤ| 亚洲第一区精品日韩在线播放| 伊人激情综合网| 亚洲日韩在线满18点击进入| 美女潮喷出白浆在线观看视频| 免费毛片网站在线观看| 国产成人喷潮在线观看| 国产精品爽爽va在线无码观看| 国产剧情一区二区| 国产欧美高清| 亚洲成人网在线播放| 91精品国产91久久久久久三级| 国产毛片不卡|