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的大數據挖掘云服務及應用
主站蜘蛛池模板: 99久久99视频| 国产极品美女在线| 浮力影院国产第一页| 91成人在线观看| 日韩精品毛片| 一级黄色片网| 伊人久久精品无码麻豆精品| 婷婷午夜影院| 亚洲天堂777| 欧美日韩精品一区二区视频| 99精品欧美一区| 久久免费看片| 91亚洲视频下载| 色哟哟精品无码网站在线播放视频| 日韩精品久久久久久久电影蜜臀| 亚洲人成网站18禁动漫无码| 欧洲一区二区三区无码| 色天天综合久久久久综合片| 拍国产真实乱人偷精品| 亚洲欧洲日产国产无码AV| 青青草原偷拍视频| 久久国产精品77777| 国产国产人免费视频成18| 2018日日摸夜夜添狠狠躁| 亚洲精品人成网线在线| 成人午夜视频免费看欧美| 欧美成人在线免费| 67194在线午夜亚洲| 制服丝袜无码每日更新| 大香网伊人久久综合网2020| 一级福利视频| 小说区 亚洲 自拍 另类| 狠狠色狠狠综合久久| 熟妇人妻无乱码中文字幕真矢织江| 久久亚洲精少妇毛片午夜无码 | 国产91视频免费观看| 中文字幕无码av专区久久| 女人18毛片一级毛片在线 | 色偷偷男人的天堂亚洲av| 另类专区亚洲| 国产激情无码一区二区APP| 91精品啪在线观看国产91| 91成人精品视频| 免费国产一级 片内射老| 全部无卡免费的毛片在线看| 在线a视频免费观看| 亚洲VA中文字幕| 亚洲一区二区精品无码久久久| 波多野一区| 国产拍在线| 91精品最新国内在线播放| 女人18毛片水真多国产| 欧美日本在线| 亚洲无码高清一区| swag国产精品| 国产新AV天堂| 久久国产精品电影| 九九热精品在线视频| 999精品视频在线| 国产精品尤物铁牛tv | 婷婷六月综合| 在线国产资源| 91亚洲精选| 亚洲成年人网| 99ri精品视频在线观看播放| 欧美一级爱操视频| 国产精品刺激对白在线| 成年人午夜免费视频| 国产日韩欧美黄色片免费观看| 国产鲁鲁视频在线观看| 91亚洲视频下载| 国产爽爽视频| 欧洲在线免费视频| 亚卅精品无码久久毛片乌克兰 | 夜夜操天天摸| 国产精品无码AⅤ在线观看播放| 成人年鲁鲁在线观看视频| 91久久偷偷做嫩草影院| 亚洲精品中文字幕午夜| 亚洲国产一区在线观看| 色成人亚洲| 成年片色大黄全免费网站久久|