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

基于Hadoop平臺的SVM_KNN分類算法的研究

2016-02-23 04:51:53李正杰
計算機技術與發展 2016年3期
關鍵詞:數據挖掘分類

李正杰,黃 剛

(南京郵電大學 計算機學院,江蘇 南京 210003)

基于Hadoop平臺的SVM_KNN分類算法的研究

李正杰,黃 剛

(南京郵電大學 計算機學院,江蘇 南京 210003)

數據的變革帶來了前所未有的發展,對豐富且復雜的結構化、半結構化或者是非結構化數據的監測、分析、采集、存儲以及應用,已經成為了數據信息時代發展的主流,分類和處理海量數據包含的信息,需要有更好的解決方法。傳統的數據挖掘分類方式顯然已經不能滿足需求,面對這些問題,這里對數據挖掘的一些分類算法進行分析和改進,對算法進行結合,提出了改進的SVM_KNN分類算法。在這個基礎上,利用Hadoop云計算平臺,將研究后的分類算法在MapReduce模型中進行并行化應用,使改進后的算法能夠適用于大數據的處理。最后用數據集對算法進行實驗驗證,通過對比傳統的SVM分類算法,結果表明改進后的算法達到了高效、快速、準確、低成本的要求,可以有效地進行大數據分類工作。

數據挖掘;Hadoop;并行化;SVM_KNN

0 引 言

當下的時代是一個急需對數據進行高效快速挖掘的時代,而分類是數據挖掘的一項首要任務和技術。分類可以看成是數據庫到一組類別的映射,需要構造一個分類器,輸入一個樣本數據集,通過在訓練集中的數據表現出來的特性,為每一個類找到一種準確的描述或者模型[1],從而利用分類對未來的數據進行預測。SVM算法非常適合解決結構復雜的數據,而針對SVM算法的缺點,KNN算法可以簡單有效地彌補。文中結合這兩種算法,并對其加以改進,來對數據進行更精確的分類。龐大而復雜的數據對數據分類處理的準度和精度有著極高的需求,互聯網和計算機技術的發展產生了云計算技術,Hadoop則是其中的優秀代表。Hadoop是可由大量低成本計算機構成的,能夠可靠地分布式處理大數據的軟件框架,是一個可以進行云計算應用和研究的平臺。云計算技術的出現為數據挖掘的發展提供了強大的推動力,將Hadoop應用于數據挖掘技術中,對數據挖掘分類算法進行并行化處理后,在Hadoop云平臺上運行,可以極大提高數據挖掘分類的準確性和效率。

1 Hadoop平臺

Hadoop以HDFS[2]和MapReduce[3]為核心。HDFS參照了谷歌的分布式文件系統(GFS),是Hadoop的分布式文件系統,為分布式的計算提供了底層的支持。它的機制和以前的分布式文件系統有很多相似之處,但是HDFS以大數據、大文件和低成本等要求進行了設計,而且容錯率比較高,適合布置在低成本的計算機上,能夠提供非常大的系統吞吐量并處理一些非常大的文件。而MapReduce是Hadoop的技術核心,它是為大數據處理提供的可以利用底層分布式環境的編程模型,在不用關心底層細節的情況下為用戶提供接口,這讓它顯得非常簡單,而且具有強大的可擴展性和可伸縮性。MapReduce編程模型的計算過程分為兩部分:Map階段和Reduce階段,即映射與規約。Map階段就是將一個任務分解成多個任務,Map把原始的數據通過函數定義的映射過程進行轉換和過濾,獲得中間的數據作為Reduce階段的輸入,然后對生成的中間數據也按照函數定義的處理過程進行規約處理,Reduce會獲得最終的結果。Hadoop可以充分利用集群中的節點進行大規模數據存儲和高速運算[4]。

Hadoop具有可靠、可擴展、高效、高可用性、低成本和具有完備的容錯機制等優點。基于這些優點,Hadoop被諸如IBM、亞馬遜、雅虎、百度、騰訊和阿里巴巴等企業大量運用和改善,用以開發更完善的云計算平臺[5-6]。

2 數據挖掘分類方法的基本原理

對數據進行合理有效的分類在數據挖掘的整個過程中顯得十分重要。分類的目的是構造出一個分類器,分類器再把數據庫中的數據項和給定類別中的某一個類別對應起來,實現分類的目的,然后進行預測分析。分類是否有效準確將會直接影響到數據挖掘最終結果的有效性和準確性[7]。分類在醫療、模式識別、信息等領域應用廣泛。

數據挖掘分類一般分成兩個步驟:建立模型和使用模型。要對數據進行有效的挖掘,首先需要通過分析數據庫中元組來構造一個模型,用來對預定的數據類集進行描述。這些數據庫元組被稱為訓練數據集,訓練集中的單個元組被稱為樣本,每個樣本有一個特定的類標簽和它對應。一般情況下,學習的模型可以由分類規則、決策樹或者等式、不等式等形式提供,這些規則可以為后面的數據樣本進行分類,即第二步使用模型進行分類。在使用之前,首先需要評估模型的預測準確率,評估過后如果認為可以接受模型的準確率,那么就可以開始使用模型對未知的數據進行分類。

目前來說,分類模型的構造主要有以下方法:統計、機器學習和神經網絡等。統計方法主要包括貝葉斯法、一些常見的近鄰算法和基于事例的學習[8]等。機器學習方法包括規則歸納法,如決策表、產生式規則和決策樹法(如決策樹、判別樹)。而神經網絡方法主要則是BP算法,一種非線性的判別函數[9]。一些如粗糙集等方法也可以用來構造分類器。大體上,分類的方法主要有基于距離的分類方法、貝葉斯分類方法、決策樹分類方法、規則歸納方法等。具體則有許多不同的算法,像支持向量機算法、K-近鄰算法、樸素貝葉斯算法、C4.5算法、AQ算法等。

3 SVM_KNN分類算法

3.1 SVM算法

支持向量機(Support Vector Machine,SVM)算法是在1995年由Vapnik提出的[10],一種基于統計學習理論和結構風險最小化理論的機器學習方法[11]。它是針對兩種類別分類的算法,具有優秀的泛化能力,適合于解決那些維度高的非線性數據的問題,因此在分類、識別、檢索等方面得到了非常廣泛的應用。

SVM算法的基本思想在于:找到一個最優分類超平面,它能滿足分類的要求和精度,并且超平面的兩側空白空間能夠最大。如圖1和圖2所示,兩幅圖中的

圖1 一般分類超平面

圖2 最優分類超平面

超平面均能起到分類的效果,但是圖2中超平面兩側空白的空間最大,所以它是最優分類超平面,而分隔邊界如L1,L2上的樣本點稱為支持向量。

(1)

(2)

(3)

構造拉格朗日函數即可求得最終的決策函數為:

(4)

其中:ai是拉格朗日系數;b*是分類閾值。

如果訓練樣本線性不可分,那么則需要引入非負松弛變量εi,i=1,2,…,n,則其最小化函數為:

(5)

其中,C是一個懲罰參數。

對于非線性的樣本集,需要通過一種非線性的映射將輸入向量映射到一個高維特征空間,在這個空間里構造出最優分類超平面。這種非線性的變化可以通過核函數來轉變[12]。

3.2 KNN算法

KNN(K-NearestNeighbor)算法是由Cover和Hart于1968年提出的[13],一種基于距離、基于實例的非參數方法。KNN算法是一種懶惰的學習算法,它的基本思想比較容易理解:空間中的每一個訓練數據都作為一個點,給出一個需要測試的數據,在這個空間中通過相似度算法找出與這個待測試數據最相似的K個最近鄰點,統計出這K個最近鄰點中哪個類的個數最多,則認為測試數據屬于該類,如圖3所示。

當K=4時,4個最近鄰點中有3個I類點,一個II類點,所以認為待測數據屬于I類;當K=7時,7個最近鄰點中有3個I類點,4個II類點,所以此時認為待測數據屬于II類。

3.3 SVM_KNN分類算法原理及其改進

KNN算法雖然簡單有效,但是仍然存在很多不足。在KNN算法中,對于每一個待測數據都需要計算它與空間中每個樣本的相似度后,才能進行比較,得到K個最近鄰點,因此KNN算法的計算量比較大。另外,由于算法對每個樣本都賦予了相同的權重,認為每個特征對分類的作用都是一樣的[14],所以當樣本的分布不是很平均時,可能會導致輸入的待測數據被分到樣本容量大的那一方,造成錯誤分類的情況。

圖3 KNN算法示例

而對于SVM算法,Vapnik通過分析指出,在對兩個類別進行分類時,SVM算法在兩個類別的邊界區域或重疊區域的樣本會存在一定的分類錯誤[10],經過對誤分樣本的分布情況進行研究后,可以發現SVM算法一般誤分都發生在最優分類面的附近[15]。

SVM分類器可以看作是每個類只有一個代表點的最近鄰分類器[15],所以可以考慮將SVM算法和KNN算法結合起來產生一種新的算法,即SVM_KNN算法,在這個基礎上,對SVM算法選取合適的懲罰參數和核函數,文中采用的核函數為徑向基核函數。對KNN算法采取加入權重系數的方式,權重系數可以通過某個類的樣本數占所有樣本數的比重來求得,在計算待測數據到某個類樣本的距離時,用這個類的權重系數乘以距離,所得的結果作為比較依據,使得樣本容量大的一類占的權重變小,樣本容量小的一類占的權重變大,來盡可能避免樣本分布不均所帶來的分類影響。同時,還可以使用效果更穩定的向量空間余弦相似度來代替KNN算法中的歐氏距離相似度。改進后的SVM_KNN算法對原來的兩種算法進行了優劣互補,在性能上進行了優化,也不需要KNN算法進行大量的計算,提高了分類的準確性。

圖4 SVM_KNN算法

SVM_KNN算法的主要實現步驟如下:

(1)采用樣本訓練集對SVM算法進行訓練,求出分類決策函數(式(4))中的系數w和常數b,得到支持向量集Dsv,給定閾值ξ,并對測試數據集D進行預處理;

(2)若D為空,則停止步驟的進行,若D不為空,則從D中取出待分類數據x;

(4)若dis>ξ,則選定好合適的核函數,用SVM算法進行分類,最后輸出式(4)的f(x);

(5)若dis<ξ,則使用KNN算法進行分類,選定好K的值,輸入待分類數據x,用支持向量集Dsv作為樣本點,在距離計算中加入權重系數平衡樣本,輸出最后的結果;

(6)從測試數據集D去除已分類好的數據x,返回步驟(2)繼續執行。

3.4 SVM_KNN分類算法的并行化處理

從上文可知,首先需要用樣本訓練集對SVM算法進行訓練,而SVM算法主要是找出支持向量,稀疏性是支持向量的特性,即支持向量在訓練樣本集中占的比例很小。利用這個特性,可以先對數據量大的訓練數據集進行分塊處理,因為各個分塊一般來說具有獨立性,可以將其并行化處理,分塊處理進行訓練可以減少SVM算法的訓練時間。

對于分好的小數據集,可以采用SMO算法[16]進行訓練以加快效率得到每個小數據集的支持向量集,當然不能簡單地通過疊加每個小數據集的支持向量集得出最后整個訓練數據集的支持向量集,這樣可能導致得到的支持向量集有著明顯的偏差。因此在對大數據集進行分塊時,應保持分塊的均衡性,使得每個分塊不同類別的比例和原有比例相近,對每個分塊進行訓練,過濾非支持向量點,保留支持向量點,然后兩個分塊的訓練結果經過整合后作為下一個輸入。就這樣一直迭代直到剩下最后一個支持向量集,然后判斷這個集合是不是達到了迭代精度,如果達到了,則輸出最后得到的支持向量集、系數w和常數b。通過對初始數據集進行分塊處理,可以極大提高SVM算法的訓練速度,也使訓練準確度有一定的保證。

訓練好SVM分類器之后,對測試數據同樣進行分塊處理。在均分了測試數據后,從測試數據分塊中依次取出數據在各自節點上進行計算,得到3.3小節中的dis,再與給定的閾值ξ進行比較,從而讓各節點選擇使用SVM算法或使用KNN算法進行分類。所有測試數據分類完成后,對各節點的分類結果進行統一處理和分析。

以上就是SVM_KNN分類算法并行化處理的基本思路,可以將并行化后的SVM_KNN分類算法稱之為hSVM_KNN分類算法。根據這個思路,實現hSVM_KNN分類算法需要4對MapReduce函數,分別是迭代訓練產生支持向量集、系數w和常數b的函數:IterationMapper函數和IterationReducer函數;求出dis的函數:DisMapper函數和DisReducer函數;SVM分類算法的函數:SVMMapper函數和SVMReducer函數;KNN分類算法的函數:KNNMapper函數和KNNReducer函數。hSVM_KNN分類算法的并行化算法偽代碼如下:

FunctionIteration//訓練迭代算法

Begin

//將樣本訓練集分塊,放入各節點中處理

Split();

While(不止有一個支持向量集)do

//求出各分塊的支持向量集

IterationMapper函數;

//對IterationMapper函數傳來的key/value形式的支持向量集兩兩進行合并處理

IterationReducer函數;

If最后的支持向量集達到迭代精度then

//返回最后的支持向量集Dsv,系數w和常數b

ReturnDsv,w,b;

Else

//如果不滿足迭代精度,則進行迭代處理

CallIteration;

Endif

End

FunctionDis//求出dis的函數

Begin

//對測試數據集進行分塊,放入各節點中處理

Split_dis();

For分塊中的測試數據集D′do

//求得各分塊中的dis

DisMapper函數;

//對DisMapper函數傳來的key/value形式的dis進行處理

DisReducer函數;

Returndis;

End

Ifdis大于給定的閾值ξthen使用SVM分類算法進行分類;

FunctionSVM//SVM分類算法

Begin

//對dis大于閾值ξ的進行分塊,放入各節點處理

Split_SVM();

For分塊中的每個disdo

//使用SVM算法進行分類

SVMMapper函數;

//對SVMMapper函數傳來的key/value形式的結果進行處理

SVMReducer函數;

End

Ifdis小于給定的閾值ξthen使用KNN分類算法進行分類;

FunctionKNN//KNN分類算法

Begin

//對dis小于閾值ξ的進行分塊,放入各節點處理

Split_KNN();

For分塊中的每個disdo

//使用KNN算法進行分類

KNNMapper函數(計算距離時加入權重系數對樣本進行處理);

//對KNNMapper函數傳來的key/value形式的結果進行處理

KNNReducer函數;

End

4 實驗結果與分析

為了檢驗算法的準確性和效率,對算法進行了實驗驗證。實驗選取的數據集是來自UCI數據庫中的PokerHand數據集,整個數據集包含11個屬性,10個類別和1 025 010個實例,其中訓練實例有25 010個,測試實例有1 000 000個。對于多分類的SVM算法,這里采取一對一分類方法[17],訓練10*(10-1)/2=45個SVM分類器。實驗中設定懲罰參數C=5,給定閾值ξ=0.6,KNN算法中的K=5。為了使實驗結果有效、全面,實驗會在測試數據隨機抽取的1萬、5萬、10萬、25萬、50萬、75萬、100萬個實例上對SVM分類算法和hSVM_KNN分類算法進行比較,對測試數據集多次實驗后取平均值作為結果。

圖5與圖6分別顯示了傳統的串行SVM算法和hSVM_KNN算法在處理時間和準確性上面的對比。

如圖5所示,隨著測試實例的數量不斷增大,hSVM_KNN算法的處理時間逐漸由劣勢變成巨大的優勢。當測試實例比較少時,由于hSVM_KNN算法的并行化需要進行傳輸文件、分配節點和節點之間的通信,這些操作占用了大量時間,所以hSVM_KNN算法在處理時間上要比SVM慢或者接近于相等。當測試實例逐漸增大以后,并行化的優勢便體現了出來,傳統的SVM算法顯然難以適應大型數據的運算,所以處理時間要遠遠慢于hSVM_KNN算法。

圖5 串行SVM與hSVM_KNN算法測試處理時間對比

圖6 串行SVM與hSVM_KNN準確性對比

從圖6可以看出,hSVM_KNN算法在準確性上要高于SVM算法,這是由于hSVM_KNN算法組合了SVM和KNN兩種算法,在最優分類面附近的數據分類上比SVM算法有優勢,因此hSVM_KNN算法在準確性上也有保證。另外,因為hSVM_KNN算法采用的是并行化處理,所以在處理大數據方面對于每個節點的計算機性能要求也不高,使得算法的成本較低。

5 結束語

文中在分析了SVM算法和KNN算法的優缺點后,將SVM和KNN算法進行結合,形成了一種效率、準確度更高的SVM_KNN算法,對算法進行改進后將其在Hadoop平臺上進行并行化處理,得到hSVM_KNN分類算法,從而滿足對大數據高速、高效的處理。通過實驗可以發現,并行化后的SVM_KNN算法相比于傳統的SVM算法在大數據分類的準確性、速度、成本和效率等方面有了明顯提升,對核函數的選取也不是很敏感,而且算法的穩定性很好,具有很好的使用價值。

[1] 毛國君,段立娟,王 實,等.數據挖掘原理與算法[M].第2版.北京:清華大學出版社,2007.

[2]BorathakurD.Thehadoopdistributedfilesystem:architectureanddesign[EB/OL].2012-01-20.http://hadoop.apache.org/core/docs/r0.16.4/hdfsdesign.html/.

[3]DeanJ,GhemawatS.MapReduce:simplifieddataprocessingonlargeclusters[J].CommunicationsoftheACM,2008,51(1):107-113.

[4] 武 霞,董增壽,孟曉燕.基于大數據平臺hadoop的聚類算法K值優化研究[J].太原科技大學學報,2015,36(2):92-96.

[5] 楊宸鑄.基于HADOOP的數據挖掘研究[D].重慶:重慶大學,2010.

[6] 張奕武.基于Hadoop分布式平臺的SVM算法優化及應用[D].廣州:中山大學,2012.

[7] 王明星.數據挖掘算法優化研究與應用[D].合肥:安徽大學,2014.

[8]AhaDW,KiblerD,AlbertMK.Instance:basedlearningalgorithms[J].MachineLearning,1991,6(1):37-66.

[9] 劉振巖.數據挖掘分類算法的研究與應用[D].北京:首都師范大學,2003.

[10] 郭明瑋,趙宇宙,項俊平,等.基于支持向量機的目標檢測算法綜述[J].控制與決策,2014,29(2):193-200.

[11]PengNanbo,ZhangYanxia,ZhaoYongheng.ASVM-kNNmethodforquasar-starclassification[J].ScienceChina-Physics,Mechanics&Astronomy,2013,56(6):1227-1234.

[12] 章 兢,張小剛.數據挖掘算法及其工程應用[M].北京:機械工業出版社,2006.

[13]CoverT,HartP.Nearestneighborpatternclassification[J].IEEETransonInformationTheory,1967,13(1):21-27.

[14] 侯玉婷,彭進業,郝露微,等.基于KNN的特征自適應加權自然圖像分類研究[J].計算機應用研究,2014,31(3):957-960.

[15] 李 蓉,葉世偉,史忠植.SVM-KNN分類器一一種提高SVM分類精度的新方法[J].電子學報,2002,30(5):745-748.

[16] 李麗萍.并行支持向量機[J].計算機光盤軟件與應用,2013,24:107-109.

[17]BelUK.Pairwiseclassificationandsupportvectormachines[M].Cambridge,MA:MITPress,1999:255-268.

Research on SVM_KNN Classification Algorithm Based on Hadoop Platform

LI Zheng-jie,HUANG Gang

(School of Computer,Nanjing University of Posts and Telecommunications,Nanjing 210003,China)

The reform of data has brought the unprecedented development,to monitor,analyze,collect,store and apply to the rich and complex structured,semi-structured or unstructured data has become the mainstream of the development of the information age.To classify and deal with the information contained in mass data,it’s needed to have a better solution.The traditional data mining classification method cannot meet the demand any longer.To face these problems,it analyzes and improves the classification algorithm in data mining in this paper.Combined with the algorithms,an improved SVM_KNN classification algorithm is proposed.Then on this basis,by utilizing Hadoop cloud computing platform,the new classification algorithm is put into MapReduce model for parallelization application,so the improved algorithm can be applied to large data processing.Finally,data set is used to conduct experimental verification on the algorithm.By comparing with traditional SVM classification algorithm,the results show that the improved algorithm has become more efficient,fast,accurate and cost-effective,which can effectively carry out large data classification.

data mining;Hadoop;parallelization;SVM_KNN

2015-06-12

2015-09-18

時間:2016-02-18

國家自然科學基金資助項目(61171053)

李正杰(1991-),男,碩士研究生,研究方向為信息網絡與通信軟件、海量數據管理;黃 剛,教授,研究生導師,研究方向為計算機在通信中的應用、海量數據管理、移動商務平臺設計開發。

http://www.cnki.net/kcms/detail/61.1450.TP.20160218.1630.040.html

TP301.6

A

1673-629X(2016)03-0075-05

10.3969/j.issn.1673-629X.2016.03.

猜你喜歡
數據挖掘分類
分類算一算
垃圾分類的困惑你有嗎
大眾健康(2021年6期)2021-06-08 19:30:06
探討人工智能與數據挖掘發展趨勢
分類討論求坐標
數據分析中的分類討論
教你一招:數的分類
基于并行計算的大數據挖掘在電網中的應用
電力與能源(2017年6期)2017-05-14 06:19:37
數據挖掘技術在中醫診療數據分析中的應用
一種基于Hadoop的大數據挖掘云服務及應用
給塑料分分類吧
主站蜘蛛池模板: 丝袜亚洲综合| 2020精品极品国产色在线观看| 伊人成人在线| 久久人人妻人人爽人人卡片av| 97青草最新免费精品视频| 无码内射在线| 毛片基地视频| 亚洲欧美成人综合| 亚洲最大看欧美片网站地址| 真人免费一级毛片一区二区| 天天综合网站| 国产精品人莉莉成在线播放| 九九视频免费在线观看| 2020国产精品视频| 自慰网址在线观看| 久久毛片免费基地| 久一在线视频| 亚洲美女一级毛片| 狠狠色婷婷丁香综合久久韩国| 在线免费亚洲无码视频| 久久国产免费观看| 狠狠操夜夜爽| 国产精品亚洲日韩AⅤ在线观看| 毛片基地美国正在播放亚洲| 极品尤物av美乳在线观看| 夜夜操天天摸| 亚洲第一视频区| 在线观看视频99| 国产精品无码一区二区桃花视频| 亚洲精品福利网站| 国产综合欧美| 成人无码区免费视频网站蜜臀| 91亚洲国产视频| 久久精品中文字幕免费| 欧美h在线观看| 国产福利一区视频| 欧美激情福利| 国产一级精品毛片基地| 超碰色了色| 亚洲综合在线网| 精品一区二区无码av| 午夜精品久久久久久久2023| 欧美性猛交一区二区三区| 成人午夜视频网站| 免费高清a毛片| 久久精品国产精品青草app| 亚洲午夜久久久精品电影院| 无码内射中文字幕岛国片| 极品av一区二区| 国产本道久久一区二区三区| 国产精品成人免费视频99| 国产高清在线精品一区二区三区| 97久久精品人人| 国产人人乐人人爱| 成人一区在线| 欧美视频免费一区二区三区 | 欧美国产日韩在线| 精品少妇人妻av无码久久| 97青青青国产在线播放| 狠狠亚洲婷婷综合色香| 91亚洲精品国产自在现线| AV熟女乱| 2020最新国产精品视频| 91福利一区二区三区| 熟妇人妻无乱码中文字幕真矢织江 | 亚洲成aⅴ人在线观看| 国产自无码视频在线观看| 亚洲黄网在线| 亚洲综合精品香蕉久久网| 亚洲无码日韩一区| 欧洲成人免费视频| 国产精品亚欧美一区二区| 2021精品国产自在现线看| 亚洲欧美精品一中文字幕| 97无码免费人妻超级碰碰碰| 国产凹凸一区在线观看视频| 亚洲精选无码久久久| 亚洲首页国产精品丝袜| 老司机精品99在线播放| 国产在线八区| 欧美综合成人| 国产网站黄|