2016-09-01 117 views
0

我試圖對一組數據運行聚類分析,但無法找到適當的見解。示例:我有100個資源(列)中的一組50個變量(行)。每種資源都有一些變量,如強度和其他弱點。我將強度標記爲1,弱點標記爲2.因爲每個資源可能只有10個變量作爲強度,而5個變量作爲弱點,所以其他被忽略的變量標記爲0。現在,我想找到分享共同優點和缺點的資源集羣。使用虛擬編碼變量在R中進行聚類分析

我已經使用層次聚類和k-means轉置數據集,以便資源在行中。 k-means圖顯示了不同羣集之間的過多重疊,因此僅使用層次聚類。我用+10和2(弱點)替換了1(強度)和-10,以查看集羣算法是否有不同的響應,但仍然沒有什麼幫助。

改進此方法的任何輸入和處理此方法的替代方法?

非常感謝!

回答

0

以下代碼應該可以幫助您製作虛擬/二進制變量。

settingStrength <- as.numeric(setting.g == "Strength") 
settingWeakness <- as.numeric(setting.g == "Weakness") 

我稱之爲聚焦於數據集第3和第4列的分級聚類。您不能聚類100個維度並將它們繪製在二維圖中。您必須先降低維度。您在右邊選擇分層聚類,因爲K-方式要求您知道集羣的數量,你不知道他們

CLUSTER <- hclust(dist(YOURDATA[, 3:4])) 
plot(CLUSTER) 

但是如果你使用K-意味着你不應該只是看劇情。在下面我選擇了三組聚類。

KMEANSCLUSTER <- kmeans(YOURDATASET[,3:4],3) 
KMEANSCLUSTER[1] 

現在你應該看到的向量具有15的長度(數據長度)和值1,2- & 3.值給變量是否屬於類「1」,聚類「2 「或集羣」3「。

+0

謝謝。我必須自己識別和虛擬編碼爲1強度,2弱點,0-不識別。用-10代替+10和2,對層次聚類算法有什麼不同意義?此外,我如何降低維度(100資源),然後做羣集,因爲我想查看哪些資源在哪個羣集?爲了找到整個集羣的優勢和劣勢的負載,我已經使用了該集羣中變量的頻率的平均值。對於包含10個資源的集羣1的示例,如果在5個資源中注意到X強度,則加載爲0.5,是正確的嗎? – Ankur

+0

你有沒有想過包含2個二進制變量?第一個變量:1-強度0 - 否則;第二個變量1-弱點0-否。兩個二進制變量都沒有標識會給你0。 – Ferdi

+0

您可以減少PCA的尺寸並繪製縮小數據集的聚類。你只需要解釋變量。分配值+10和-10不會給你更好的結果。這隻會讓解釋變得更加困難。 – Ferdi

0

聚類二進制數據(以及低基數和分類虛擬編碼數據)的問題是它是二進制信息。

諸如k-means的方法被設計用於連續變量,其中平均值是有意義的,並且幾乎每個距離都是唯一的。

隨着二進制數據,一切都趨於同時變化。你有很多重複記錄。你有1個職位,2個職位等不同的記錄 - 在你的情況下,他們最多可以有30個職位,所以你有31個級別的相似性。

解決方案通常是從羣集移動到項目集挖掘視圖。這與集羣並沒有根本的不同,但它始於一個二元假設:一個項目存在於一個事務中,或者它不存在。所得到的項目集然後對應於頻繁的組合,例如,具有A和B的行傾向於具有C.

試試這個,頻繁項目集和關聯規則。

+0

感謝您的建議。我還沒有嘗試關聯規則。你能否給我提供一個虛擬的代碼/流程圖/例子的鏈接?我基本上將資源集羣,所以必須轉置數據框,以便資源在行中,變量在列中。 – Ankur

+0

抓住你最喜歡的數據挖掘書,閱讀有關關聯規則的章節。 –