#python #machine-learning #nlp #statistics #data-science
Вопрос:
Поэтому я работаю над проблемой дублирования, используя LSH: Хэширование, чувствительное к местоположению.
Итак, я знаю дубликаты документов. Давайте предположим, что у нас есть что-то вроде:
{'group1': [text1,text2,text3],
'group2': [text4],
'group3': [text5,text6],}
Таким образом , я могу легко получить дубликаты, как text1
дубликат text2
, text3
и наоборот.
Используя пакет Snapy python LSH, он дает мне результаты примерно такие:
{'text1': ['text1','text5'],
'text2': []
'text4: ['text6']}
так что, как вы можете видеть, есть Ложные срабатывания (в text1
), а также Ложные отрицательные (в text2
) тоже.
Как я могу определить здесь новую метрику, где, если я хочу оценить работу этого алгоритма на основе настройки гиперпараметров, я могу увеличить или уменьшить число?
Я не могу использовать напрямую Top-K
, так как есть экземпляры только с 1 дубликатом, а у некоторых их больше N
. Кроме того, в результатах тоже есть пустые FP
, FN
тоже. Я даже не могу использовать sklearn.metrics.accuracy
или около того, потому что у нас более 1 дубликата каждого экземпляра.
Мы будем признательны за любую помощь в поиске показателя для этого.
Обновление: Я придумал нижеприведенную функцию. Не мог бы кто-нибудь, пожалуйста, дать мне совет, если это правильный показатель, и если да, то как я могу объединить эти 3 числа, чтобы получить одно число?
def metric(actual:[set],predicted:[set]):
len_true = len(actual)
len_pred = len(predicted)
TP = len(actual.intersection(predicted)) # common in both are True Positive
FP = len(predicted.difference(a.intersection(b))) # Extra in predicted are False Positive
Missing = len(actual.difference(a.intersection(b))) # Extra in actual are Missing
TP = TP/len_pred if len_pred > 0 else 0 # increase this value. between 0 and 1
FP = FP/len_pred if len_pred > 0 else 0 # Decrease this value. IS between 0 and 1
Missing = Missing/len_true # value is between 0-1 . Decrease this value
return TP, FP, Missing