2016-11-25 5 views
2

У меня 50 продуктов. Для каждого продукта я хочу идентифицировать следующие четыре связанных продукта, используя меры сходства.Сравнение ранжированного списка в Python

  • 1 связан наиболее
  • -частично связанные
  • -не связанный

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

С помощью чтения я обнаружил, что для сравнения ранжированных списков я могу использовать подходы с ранговой корреляцией, такие как Kendall Tau/Spearmen. Тем не менее, я не уверен, подходят ли эти подходы, так как число моих образцов невелико. (4). Пожалуйста, поправьте меня, если я ошибаюсь.

Другой подход - использовать сходство Jaccard (установить пересечение), чтобы количественно оценить сходство между двумя ранжированными списками. Затем я могу построить гистограмму из setbased_list (см. Ниже).

for index, row in evaluate.iterrows(): 
    d= row['Id'] 
    y_pred = [3,2,1,0] 
    y_true = [row['A'],row['B'],row['C'],row['D']] 
    sim = jaccard_similarity_score(y_true, y_pred) 
    setbased_list.append(sim) 
  1. Является ли мой подход к проблеме выше правильно?

  2. Какие существуют другие подходы, которые я могу использовать, если я хочу учитывать позиции элементов в списке (на основе веса)?

+0

Почему вы идентифицируете один продукт, не связанный с _not_? – Rojan

+0

Это похоже на «контрольные» данные, чтобы пользователи оценили соответственно. – kitchenprinzessin

ответ

1

По тому, как вы описали проблему, звучит так, как будто вы можете просто назначить произвольный балл для каждого элемента в вашем списке - например, 3 балла за тот же предмет в том же рейтинге, что и в «обучающем» списке, 1 очко за тот же предмет, но в другом ранге, или что-то в этом роде.

Я не совсем понимаю, что такое «не связанный» элемент - все остальные 45 предметов одинаково «не связаны» с целевым элементом, и если это имеет значение, какой из них вы выберете? Возможно, вам нужно отбирать очки от оценки, если элемент «не связанных» появляется в одной из «связанных» позиций? Эта тонкость не может быть захвачена стандартной непараметрической корреляционной мерой.

Если по какой-то причине важно использовать стандартную статистическую оценку, вам, вероятно, лучше спросить Cross Validated.

+0

благодарю nekomatic, я отправлю вопрос в Cross Validated. – kitchenprinzessin

0

Если ваше желание, чтобы узнать, как ваши рейтинги сравнить в случае каждого отдельного продукта:

Вы можете использовать коэффициент корреляции подход, даже если количество образцов с низким - однако, вы не получите очень определенные результаты для каждого отдельного продукта.На самом деле, вероятно, не любые подходы, вы можете принять

(Примечание - использование Спирман на двух уже ранжированных векторов даст те же результаты, как Pearson)

Если ваше желание, чтобы узнать, как ваши рейтинги тарифицируются в отношении рейтингов экспертов домена в целом:

Было бы проблематично использовать здесь совокупную корреляцию, поскольку ваши 50 списков не являются независимыми друг от друга. Лучшим подходом было бы построить две симметричные матрицы 50x50, основанные на фактических оценках подобия, которые вы и эксперты домена вычислили для продуктов, - так что j: th элемент i: th строка - это сходство между продуктом i и продукт j, а затем используйте тест на мантилу между ними.

Кроме того, этот вопрос связан скорее с статистикой, чем с программированием - в будущем задайте такие вопросы, как Cross Cross Validated, например @nekomatic.

Смежные вопросы