julibinho / cloneCluster

0 stars 0 forks source link

F1-score script #2

Closed LisaChabrier closed 4 years ago

LisaChabrier commented 4 years ago

Hello @NikaAb, J'ai refais le calcul du recall pour les données monoclonal, et je trouve comme valeurs :
false negative : 74990
true positive : 170407
recall = 170407 / (170407 + 74990) = 0.69

l'algorithme dans F1-score trouve :
false negative : 13365
true positive : 902
recall = 902 / (902 + 13365) = 0.063

Le plus gros cluster dans true cluster compte 700 séquences, et dans nos résultats, sur ces 700 séquences, 582 appartiennent au même cluster (le 0 dans resultat), et 118 à d'autres clusters. Donc pour les false negative, il y a au moins 582*118 = 68676 paires de séquences, sans compter les différences parmis les 118, et seulement pour un cluster. C'est supérieur aux 13365 false negative trouvés dans l'algo F1. Je n'ai pas très bien compris comment fonctionne l'algorithme F1, mais est-ce qu'il est possible que l'algo ne prennent pas en compte tous les false positive et tous les false négative ?

Mes codes sont dans le fichier analysis-recall. Si j'ai fait une erreur dans le calcul du recall, est-ce que ce serait possible de me dire ce qui ne va pas ?

NikaAb commented 4 years ago

Hey @LisaC1234, C'est une excellente remarque. Il y a plusieurs façons de calculer les Vrai Positives (TP), faux Negatives(FN) et les faux positives (FP). Par exemple dans le fichier joint, j'ai calculé ces valeurs avec deux points de vue différent. Dans le méthode A ou cluster based, on trouve pour chaque cluster prédit, le cluster le plus proche parmi les vrais clusters et on compte TP, FN et FP en fonction de cette association (comme dans tes calculs). Dans la méthode B ou ce qu'on a appelé sequence based, pour chaque séquencent on évalue le degré de ressemblance des séquences avec lesquelles elle est regroupée dans les vrais clusters et dans les clusters prédits.(comme les calcules d'algo F1) Cette différence nous donne des valeurs différentes de Precision et recall pour le même set de cluster prédit. On a décidé d'utiliser une calcule sequence based, car il pénalise plus les singletons et les séquences non-classifiées, et il me semble, c'est la raison de différence entres les valeurs de recall. Dis-moi stp si c'est claire et si j'ai bien répondu à ta question. Je vais vérifier aussi le script pour être sure qu'on compte bien tout.

F-score penalty alternatives.pdf

NikaAb commented 4 years ago

@LisaC1234 , @QuentinStr Est-que vous pourriez mettre tous les fichiers de résultats d'algo Louvain dans le dossier résultats ? Il n'y a que le résultat de polyclonal actuellement. Ça serait bien de préciser le type de répertoire dans le nom du fichier, par exemple res_oligo_louv.txt ou un nom similaire. (ˊᗜˋ)/ᵗᑋᵃᐢᵏ ᵞᵒᵘ*

LisaChabrier commented 4 years ago

C'est fait !

NikaAb commented 4 years ago

@LisaC1234 , @QuentinStr, @julibinho Vous avez eu raison, le script "Evaluate_Sim_Cluster.py" ne comptait pas tous les pair de séquence, good job!

On a aussi remarqué avec Juliana que l'ancienne figure ne comptait pas tous les FP et FN.

Je viens de mettre 2 scripts dans le dossier F-score, un qui se base sur le voisinage des clusters et l'autre sur les séquences (pairwise). J'ai aussi mis 2 figures pour résumer la façon dont j'ai calculé TP, FP et FN dans chaque cas. Essayer ces nouveaux scripts, surtout le pairwise, et comparez les résultats avec votre code d'évaluation. Dites-moi si vous remarquez des incohérences.