2017-06-12 37 views
0

我有一個相當大的數據集,其中包含純粹的分類數據。 數據的行數(樣本)超過30,000,000。 屬性已減少到4(列),所有屬性(屬性)都是明確的,其中一個屬性幾乎有50,000個級別!Clara_具有R中許多級別的分類數據的大數據集的數據集

我想在進一步處理之前將我的數據集羣。但是,由於數據量很大,因此不可能使用大多數聚類算法。 我選擇使用ClusterR軟件包中的Clara_Medoids來嘗試集羣。我面臨的問題是運行代碼給我一個我無法解決的錯誤。

代碼:

Cmediods_5 <- ClusterR::Clara_Medoids(MyData, clusters = 5, samples = 3, sample_size = 0.0005, distance_metric = "simple_matching_coefficient") 

,這是錯誤我接收:

錯誤check_NaN_Inf(數據): 與請求的類型不兼容:[式=字符;目標=雙]。

我有一種感覺,這個錯誤是由於我使用「simple_matching_coefficient」距離度量,但我沒有看到任何其他可行的選項,因爲我的數據是純粹的分類。 有沒有辦法繞過數據類型問題來讓這個算法正常工作?顯然,我不想創建任何虛擬變量,因爲正如我之前解釋的,其中一個屬性約有5萬個關卡!

爲Clara_Medoids函數距離度量的選項有: 歐幾里德,曼哈頓,切比雪夫,堪培拉,braycurtis,pearson_correlation,simple_matching_coefficient,閔可夫斯基,漢明,jaccard_coefficient,Rao_coefficient,馬氏

不幸的是,它沒有高爾距離否則,那將是我的選擇。

+0

首先處理* sample *,然後放大。處理擁抱數據只是爲了找出不工作是浪費時間。 –

回答

1

包裝小插曲(http://mlampros.github.io/2016/09/12/clusterR_package/)就是一個例子。

一個使用因子變量如從暈影使用mushroom數據,結果在相同的錯誤您有:

library(ClusterR) 


cl_f = Clara_Medoids(mushroom[-1], clusters = 2, distance_metric = 'hamming', 
    samples = 5, sample_size = 0.2, swap_phase = TRUE, verbose = F, threads = 1) 

# Error in check_NaN_Inf(data) : 
# Not compatible with requested type: [type=character; target=double]. 

暈影建議使用的漢明距離(其計數非匹配的數目變量)和轉換列數字:

dta <- as.data.frame(lapply(mushroom[-1], as.integer)) 

cl_f = Clara_Medoids(dta, clusters = 2, distance_metric = 'hamming', 
    samples = 5, sample_size = 0.2, swap_phase = TRUE, verbose = F, threads = 1) 

的小插曲也讓使用高爾距離的例子,但是這涉及到計算距離矩陣,這可能不是你的數據集的選項。

+0

謝謝@Jan van der Laan,這很有幫助。雖然我不確定Hamming不相似性度量是否與我的數據相關,但我會嘗試一下,看看是否根據此度量標準找到相關的羣集。 – Ankhnesmerira

+0

所以想到更新,我嘗試了海明距離,並且遺憾的是聚類看起來不太相關。 – Ankhnesmerira

+0

@Ankhnesmerira這太糟糕了。正如Anony-Mousse建議的那樣,嘗試例如使用您的數據樣本的投影距離。我懷疑這並沒有什麼幫助。你只有4個分類變量。兩個記錄的比較將導致四個0/1。任何距離度量可能只是1的一些加權和。 –

0

我沒有足夠的聲望,否則我只會添加評論。

在我看來,給你的數據樣本將有助於解決你的問題,而無需做出假設。

由於@Jan van der Laan提到您的數據必須是數字類型(距離矩陣需要),但情況並非如此,這就是爲什麼您會收到錯誤。

您也應該知道,simple_matching_coefficient僅適用於二進制數據。

如果您的數據僅包含分類變量,那麼漢明距離是適當的。在數據是混合數據類型(數字,因子等)的情況下,高功率距離工作良好。看看gowdis function of the FD packagedaisy function of the cluster package

在包描述中,我還添加了link以防萬一任何人遇到問題。