小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【數(shù)據(jù)分享】R語(yǔ)言SVM和LDA文本挖掘分類開(kāi)源軟件存儲(chǔ)庫(kù)標(biāo)簽數(shù)據(jù)和詞云可視化

 拓端數(shù)據(jù) 2022-11-18 發(fā)布于上海

全文鏈接:http:///?p=30413

開(kāi)源軟件存儲(chǔ)庫(kù)上有數(shù)千個(gè)開(kāi)源軟件,可以從中免費(fèi)使用該軟件。為了能夠有效和高效地識(shí)別用戶所需的軟件,已根據(jù)軟件的功能和屬性向軟件判斷了標(biāo)記點(diǎn)擊文末“閱讀原文”獲取完整代碼數(shù)據(jù)。

因此,標(biāo)簽分配成為開(kāi)源軟件存儲(chǔ)庫(kù)軟件維護(hù)成功的關(guān)鍵。手動(dòng)分配需要專家判斷軟件的功能和性能,并從軟件的大型標(biāo)簽池中選擇適當(dāng)?shù)念A(yù)定義標(biāo)簽,這顯然很耗時(shí)。因此,此任務(wù)上的軟件挖掘的目的是利用數(shù)據(jù)挖掘的進(jìn)步,為新上傳的軟件項(xiàng)目啟用自動(dòng)標(biāo)記分配(重新推薦)。

為了降低數(shù)據(jù)預(yù)處理(特別是網(wǎng)頁(yè)解析)的難度,在知名開(kāi)源軟件倉(cāng)庫(kù)中介紹不同開(kāi)源軟件的網(wǎng)頁(yè)的主要內(nèi)容被提取并按照以下格式妥善存儲(chǔ)。

要挖掘的數(shù)據(jù)

數(shù)據(jù)以 txt 格式存儲(chǔ)查看文末了解數(shù)據(jù)免費(fèi)獲取方式。每行對(duì)應(yīng)于一個(gè)以該項(xiàng)目的 id 開(kāi)頭的軟件項(xiàng)目。在id之后,有“#$#”引用的該軟件項(xiàng)目的提取文本描述。在此行的末尾,將附加標(biāo)記(用“,”分隔)。所有數(shù)據(jù)被拆分為兩個(gè)不相交的數(shù)據(jù)集。一個(gè)被命名為“train.data”(包含4465個(gè)軟件項(xiàng)目),而另一個(gè)被命名為“test.data”(包含大約1000個(gè)新軟件項(xiàng)目)。這兩個(gè)文件之間的唯一格式區(qū)別是所有標(biāo)簽都替換為單個(gè)未知標(biāo)記“?”??梢苑峙浣o任何軟件項(xiàng)目的標(biāo)簽集在“allTags.txt”中提供,其中每行對(duì)應(yīng)于一個(gè)標(biāo)簽。

使用“train”來(lái)構(gòu)建一個(gè)模型。data,然后使用構(gòu)建的模型在評(píng)估階段為”test.data“中的每個(gè)軟件項(xiàng)目的標(biāo)記提供預(yù)測(cè)。

問(wèn)題剖析

本次項(xiàng)目本質(zhì)上屬于數(shù)據(jù)挖掘中的分類問(wèn)題,那總體的思路就是在提供的訓(xùn)練集上采用分類算法構(gòu)造出分類模型, 然后將分類模型應(yīng)用在測(cè)試集上, 得出測(cè)試集中所有記錄的分類結(jié)果。

從項(xiàng)目背景上就可以看出數(shù)據(jù)集在特征上的取值是稀疏的,文本信息中會(huì)出現(xiàn)大量的單詞,而一些常用的單詞,如 a ,an , and等是不具有分類特征的詞匯,屬于常用詞匯,因此在文本挖掘的過(guò)程中必須剔除這些詞匯。因此我們首先要做的就是對(duì)數(shù)據(jù)文本挖掘,然后對(duì)得到的詞頻進(jìn)行預(yù)處理,剔除標(biāo)點(diǎn),常用詞等,同時(shí)降低其稀疏性,也就是剔除出現(xiàn)頻率特別低的詞匯。其中注意的是在預(yù)處理過(guò)程中我們應(yīng)該保證訓(xùn)練集和測(cè)試集在形式上的一致,比如他們的屬性個(gè)數(shù)、類別應(yīng)該一致。

在數(shù)據(jù)預(yù)處理完成的基礎(chǔ)上,就應(yīng)該進(jìn)行選擇分類算法,利用訓(xùn)練集構(gòu)造模型了。

最后就是應(yīng)用模型,得出測(cè)試集中結(jié)果。

數(shù)據(jù)挖掘過(guò)程

經(jīng)過(guò)問(wèn)題分析后就開(kāi)始進(jìn)行各項(xiàng)工作了, 那首先就是平臺(tái)的選擇, 經(jīng)過(guò)比較后我最終采用了 R工具,因?yàn)榇斯ぞ咧泄δ鼙容^健全,有助于我們分析。

文件導(dǎo)入

由于訓(xùn)練數(shù)據(jù)是文本數(shù)據(jù),因此不能用讀取excel或者讀取table的方式讀取數(shù)據(jù),只能通過(guò)readlines對(duì)數(shù)據(jù)的每一行文本進(jìn)行讀取,主要思路就是讀文件到r,保存為訓(xùn)練數(shù)據(jù),然后讀取標(biāo)簽數(shù)據(jù)。因?yàn)闃?biāo)簽數(shù)據(jù)是文檔格式數(shù)據(jù),可以直接用read.table讀取到r。

數(shù)據(jù)預(yù)處理

A、分割:

因?yàn)樽x取后數(shù)據(jù)并不是格式化的,因此第一步就是對(duì)他進(jìn)行分割處理,原有的數(shù)據(jù)每一行都包含了序號(hào),文本和標(biāo)簽并用"#$#"隔開(kāi),因此,我們可以利用這個(gè)分割符號(hào)來(lái)對(duì)每個(gè)樣本進(jìn)行處理。這里用到的是strsplit語(yǔ)句。分割后得到的標(biāo)簽數(shù)據(jù)仍然是混合在一起的,同樣可以找到分隔符號(hào)為“,”,因此再次對(duì)標(biāo)簽數(shù)據(jù)進(jìn)行分割。得到每個(gè)樣本的標(biāo)簽數(shù)據(jù)。

B .格式化

由于得到的每個(gè)樣本的標(biāo)簽數(shù)據(jù)是一個(gè)集合,對(duì)于后面的分類問(wèn)題來(lái)說(shuō),不是理想的數(shù)據(jù)格式,因此需要將標(biāo)簽數(shù)據(jù)轉(zhuǎn)化成二維矩陣的格式,每一行為一個(gè)樣本,每一列代表一個(gè)標(biāo)簽,所有列就是所有出現(xiàn)過(guò)的標(biāo)簽。如果該樣本中包含一個(gè)或多個(gè)標(biāo)簽,就將這些標(biāo)簽所對(duì)應(yīng)的元素標(biāo)為1,沒(méi)有出現(xiàn)的元素為0.最后生成一個(gè)標(biāo)簽矩陣。

算法選擇

分類算法無(wú)窮無(wú)盡, 針對(duì)不同的數(shù)據(jù)集, 算法的效率也不一樣, 因此選擇合適的算法是很重要的工作。

決策樹(shù)易于理解和解釋。人們?cè)谕ㄟ^(guò)解釋后都有能力去理解決策樹(shù)所表達(dá)的意義。但由于本項(xiàng)目中樣本屬性較多,因此可能會(huì)出現(xiàn)較多的分支和較大的樹(shù),從而很難得到有效的判斷。人工神經(jīng)網(wǎng)絡(luò)雖然分類的準(zhǔn)確度高,并行分布處理能力強(qiáng),不能觀察之間的學(xué)習(xí)過(guò)程,輸出結(jié)果難以解釋。

Knn算法雖然原理簡(jiǎn)單有效,但是計(jì)算量較大,對(duì)于數(shù)據(jù)量較大的數(shù)據(jù)不太合適,對(duì)高維數(shù)據(jù)進(jìn)行分類時(shí)會(huì)而且導(dǎo)致其準(zhǔn)確率下降。

而SVM可以解決高維問(wèn)題,同時(shí)可以避免神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)選擇和局部極小點(diǎn)問(wèn)題。因此,最終選用該算法來(lái)建立分類模型。

相關(guān)視頻

支持向量機(jī)

SVM 是支持向量機(jī)的簡(jiǎn)稱, 是統(tǒng)計(jì)學(xué)習(xí)理論中 最年輕的內(nèi)容, 也是最實(shí)用的部分。其核心內(nèi)容是在 1992 到 1995 年間提出的, 目前仍處在不斷發(fā)展階段。支持向量機(jī)可用 于模式識(shí)別、回歸分析 、主成分分析等.下面以模式 分類為例來(lái)介紹支持向量機(jī)的含義 。

給定一組訓(xùn)練數(shù)據(jù)(x 1 , y 1), … ,(x l , y l), xi ∈ R n , yi ∈{ +1 , -1} , i =1 , 2 , …, l,我們要尋找一 個(gè)分類規(guī)則 I(x),使它能對(duì)未知類別的新樣本(新 樣本與訓(xùn)練樣本獨(dú)立同分布)作盡可能正確的劃分 。支持向量機(jī)用于分類問(wèn)題其實(shí)就是尋找一個(gè)最 優(yōu)分類超平面, 把此平面作為分類決策面.同時(shí)它還 通過(guò)引進(jìn)核函數(shù)巧妙地解決了在將低維空間向量映 射到高維空間向量時(shí)帶來(lái)的“維數(shù)災(zāi)難”問(wèn)題。

基于LDA的文本主題挖掘

對(duì)于文本處理過(guò)程首先要擁有分析的語(yǔ)料(text corpus),比如報(bào)告、出版物、網(wǎng)頁(yè)文章等。而后根據(jù)這些語(yǔ)料建立半結(jié)構(gòu)化的文本庫(kù)(text database),生成包含詞頻的結(jié)構(gòu)化的詞條 -文檔矩陣(term-document matrix)。

LDA是一種非監(jiān)督機(jī)器學(xué)習(xí)技術(shù),可以用來(lái)識(shí)別大規(guī)模文檔集(document collection)或語(yǔ)料庫(kù)(corpus)中潛藏的主題信息。它采用了詞袋(bag of words)的方法,這種方法將每一篇文檔視為一個(gè)詞頻向量,從而將文本信息轉(zhuǎn)化為了易于建模的數(shù)字信息。但是詞袋方法沒(méi)有考慮詞與詞之間的順序,這簡(jiǎn)化了問(wèn)題的復(fù)雜性,同時(shí)也為模型的改進(jìn)提供了契機(jī)。每一篇文檔代表了一些主題所構(gòu)成的一個(gè)概率分布,而每一個(gè)主題又代表了很多單詞所構(gòu)成的一個(gè)概率分布。由于 Dirichlet分布隨機(jī)向量各分量間的弱相關(guān)性(之所以還有點(diǎn)“相關(guān)”,是因?yàn)楦鞣至恐捅仨殲?),使得我們假想的潛在主題之間也幾乎是不相關(guān)的,這與很多實(shí)際問(wèn)題并不相符,從而造成了LDA的又一個(gè)遺留問(wèn)題。

對(duì)于語(yǔ)料庫(kù)中的每篇文檔,LDA定義了如下生成過(guò)程(generative process):

  1. 對(duì)每一篇文檔,從主題分布中抽取一個(gè)主題;

  2. 從上述被抽到的主題所對(duì)應(yīng)的單詞分布中抽取一個(gè)單詞;

  3. 重復(fù)上述過(guò)程直至遍歷文檔中的每一個(gè)單詞。

更形式化一點(diǎn)說(shuō),語(yǔ)料庫(kù)中的每一篇文檔與 T(通過(guò)反復(fù)試驗(yàn)等方法事先給定)個(gè)主題的一個(gè)多項(xiàng)分布相對(duì)應(yīng),將該多項(xiàng)分布記為 θ。每個(gè)主題又與詞匯表(vocabulary)中的  V個(gè)單詞的一個(gè)多項(xiàng)分布相對(duì)應(yīng),將這個(gè)多項(xiàng)分布記為 ?。

上述詞匯表是由語(yǔ)料庫(kù)中所有文檔中的所有互異單詞組成,但實(shí)際建模的時(shí)候要剔除一些停用詞(stopword),還要進(jìn)行一些詞干化(stemming)處理等。θ 和?分別有一個(gè)帶有超參數(shù)(hyperparameter)α和β的Dirichlet先驗(yàn)分布。對(duì)于一篇文檔d中的每一個(gè)單詞,我們從該文檔所對(duì)應(yīng)的多項(xiàng)分布θ中抽取一個(gè)主題z,然后我們?cè)購(gòu)闹黝}z所對(duì)應(yīng)的多項(xiàng)分布?中抽取一個(gè)單詞w。將這個(gè)過(guò)程重復(fù)Nd次,就產(chǎn)生了文檔d,這里的Nd是文檔d的單詞總數(shù)。這個(gè)生成過(guò)程可以用如下的圖模型表示:

這個(gè)圖模型表示法也稱作“盤(pán)子表示法”(plate notation)。圖中的陰影圓圈表示可觀測(cè)變量(observed variable),非陰影圓圈表示潛在變量(latent variable),箭頭表示兩變量間的條件依賴性(conditional dependency),方框表示重復(fù)抽樣,重復(fù)次數(shù)在方框的右下角。

該模型有兩個(gè)參數(shù)需要推斷(infer):一個(gè)是“文檔-主題”分布θ,另外是T個(gè)“主題-單詞”分布?。通過(guò)學(xué)習(xí)(learn)這兩個(gè)參數(shù),我們可以知道文檔作者感興趣的主題,以及每篇文檔所涵蓋的主題比例等。推斷方法主要有LDA模型作者提出的變分-EM算法,還有現(xiàn)在常用的Gibbs抽樣法。

LDA模型現(xiàn)在已經(jīng)成為了主題建模中的一個(gè)標(biāo)準(zhǔn)。如前所述,LDA模型自從誕生之后有了蓬勃的擴(kuò)展,特別是在社會(huì)網(wǎng)絡(luò)和社會(huì)媒體研究領(lǐng)域最為常見(jiàn)。

算法實(shí)現(xiàn)

根據(jù)SVM和LDA文本挖掘的原理,通過(guò)r語(yǔ)言可以做出以下的代碼實(shí)現(xiàn):

for(j in 1:length(colindex))tagmatrix[j,colindex[[j]]]=1;

####建立語(yǔ)料庫(kù)

reuters <- Corpus(VectorSource(traindata))

#下一步用tm_map命令對(duì)語(yǔ)料庫(kù)文件進(jìn)行預(yù)處理,將其轉(zhuǎn)為純文本并去除多余空格,轉(zhuǎn)換小寫(xiě),去除常用詞匯、合并異形同意詞匯

reuters <- tm_map(reuters, as.PlainTextDocument)

再之后就可以利用R語(yǔ)言中任何工具加以研究了,下面用層次聚類試試看: 先進(jìn)行標(biāo)準(zhǔn)化處理,再生成距離矩陣,再用層次聚類.

d <- dist(data.scale, method = "euclidean")

繪制詞匯圖

wordcloud(names(d),d,random.order=FALSE,random.color=FALSE,colors=mycolors,family="my


    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多