jaccard (или любой аналогичный) индекс в строках data.frame в R

Я надеюсь, что вы можете помочь мне в проблеме, над которой я ломаю голову.

У меня есть data.frame с тремя столбцами: appl, cod, ipc. Этот набор данных имеет несколько строк с одним и тем же appl, каждая строка соответствует одному cod, который связан с одним ipc. Последний может быть списком из одного или нескольких значений. appl и cod — целые числа. Пример

row    appl   cod         ipc

11  |  1206 | 3857183   | 16
12  |  1220 | 1063002   | 29
13  |  1299 | 46437     | c("26", "31", "33")
14  |  1317 | 685895    | c("10", "13", "14", "16")
15  |  1317 | 790606    | c("10", "13", "14", "16")

Мне нужно число, которое для каждого значения appl говорит мне, насколько похож состав списка в ipc. Я нашел индекс Жаккара как подходящий математический индекс, но он применим только к нескольким наборам. Я решил вычислить индекс Жаккара для каждой уникальной пары ipc для каждого значения appl, а затем вычислить среднее значение.

Я нашел функцию set_similarity для вычисления индекса Жаккара между двумя множествами.

Однако я не знаю, как на практике реализовать эту стратегию — или любую другую.

Как мне правильно реализовать что-то вроде

for (each `appl`) 
{ put all `ipc` in a list, 
 take all possible unique combinations, 
 apply `set_similarity` on them,
 take the average }

?

Я много раз проверял уже отвеченные вопросы по теме, но я не могу их успешно применить.

Спасибо


person Matteo Tubiana    schedule 16.10.2015    source источник


Ответы (1)


Для простого жаккарда используйте count (пересечение двух наборов ipc = общие элементы) и разделите его на count (объединение двух наборов = все элементы обоих наборов ipc)

Это дает локальное решение, которое означает, что измеряется сходство между двумя заданными наборами. Но если вы хотите вычислить глобальное решение, с помощью которого вы можете сравнить каждое яблоко с другим в глобальном пространстве, вам следует сначала собрать все возможные коды IPC для каждого субъекта (например, яблока), а затем использовать его в качестве знаменателя вышеуказанного жаккарда. расчет.

Более сложный сценарий с частотами для каждого элемента также можно решить, рассматривая каждый ipc как гистограмму, а затем вычисляя расстояние гистограммы с помощью одной из различных функций (расстояние движения Земли ИЛИ энтропийное расстояние Дженсена-Шеннона и т. д.).

Для этого предположим, что обе коллекции ipc представляют собой наборы похожих элементов с частотой 0 для каждого несуществующего элемента в любом из наборов.

person AShojaee    schedule 07.01.2016