Кластеризация на основе совместного использования

Я хотел бы кластеризовать данные на основе ключевого слова совместного использования, используя R. Я столкнулся с 2 трудностями по сравнению с другими постами.

  1. Слова имеют разные уровни иерархии
  2. Ключевые слова не обязательно отображаются в порядке или на уровне иерархии

пример

Keywords
Food;Fruit;Banana
Food;Fruit;Apple
Fruit;Food;Orange
Food;Bread;Toast
Food;Bread;Whole Grain
Bed;Bedroom;Furniture
Furniture;Bedroom;Bed
Furniture;Living Room;Chair
Furniture;Bedroom;Chair

Я хотел бы, чтобы результатом было то, что ключевые слова разветвляются на продукты и мебель на первом уровне. На втором и третьем есть дополнительные филиалы, например, Спальня, Гостиная. Если я использую иерархический кластерный анализ, как

hc <- hclust(dist(data))
plot(hc)

В итоге я бы назвал "Мебель" одной из категорий на низшем уровне, но в моем примере это "узловая точка".

Есть ли функция для решения этой проблемы?

Лучший Пит

2 ответа

Слишком долго для комментария, но, возможно, не то, что вы ищете:

df <- read.csv2(header=F, comment.char="#", text="
Food;Fruit;Banana
Food;Fruit;Apple
#Fruit;Food;Orange
Food;Bread;Toast
Food;Bread;Whole Grain
#Bed;Bedroom;Furniture
Furniture;Bedroom;Bed
#Furniture;Living Room;Chair
Furniture;Bedroom;Chair")

library(data.tree)
df$pathString <- with(df, paste("root", V1, V2, V3, sep="/"))
dt <- as.Node(df)
dt
#                  levelName
# 1  root                   
# 2   ¦--Food               
# 3   ¦   ¦--Fruit          
# 4   ¦   ¦   ¦--Banana     
# 5   ¦   ¦   °--Apple      
# 6   ¦   °--Bread          
# 7   ¦       ¦--Toast      
# 8   ¦       °--Whole Grain
# 9   °--Furniture          
# 10      °--Bedroom        
# 11          ¦--Bed        
# 12          °--Chair  

Посмотрите на data.tree виньетка

То, что вы описываете, не похоже на кластерный анализ.

Сделайте следующее:

  1. Посчитайте частоту каждого термина.
  2. Сортировка каждой строки по частоте по убыванию.
  3. Вставьте каждый ряд в дерево.

Дерево будет разветвляться на наиболее часто встречающиеся термины, которые имеют более конкретные термины.

Никакого анализа здесь не происходит, за исключением подсчета + сортировки по частоте - так что ничего сложного или сложного, кроме простого.

Другие вопросы по тегам