Confusion matrix

Een 'confusion matrix' is een term uit de artificiële intelligentie. Het geeft je een zicht op hoe goed je chatbot kan omgaan met input die hij nog niet gezien heeft. We doen dit door de chatbot te trainen op 80% van de beschikbare trainingszinnen (de trainingsset) en dan te kijken hoe goed de chatbot presteert op de overige 20% (de validatieset).

Hoe lees je een confusion matrix

Voor elke zin in de validatieset wordt er gekeken wat de intentie is die de bot voorstelt wanneer hij getraind wordt met de zinnen uit de testset. We noteren dan of de intentie de verwachtte intentie is of toch een andere. Het resultaat daarvan zetten we in een confusionmatrix:

Als we naar deze confusion matrix kijken, dan zien we dat er in de testset 3 trainingszinnen waren voor de intentie 'Address_office'. Van die 3 zinnen zijn er 2 juist herkend, maar 1 zin werd herkend als de intentie 'Team'.

Aan de rechterkant zie je hoeveel procent van de trainingszinnen juist herkend werden. Voor 'Address_office' is dat 66.66%. Onderaan zie je hoe vaak een intentie correct is herkend. Voor 'Team' is dat 50%: de bot heeft twee keer gedacht de 'Team' intentie te herkennen, maar dat was maar 1 keer correct.

Een confusion matrix verbeteren

Een goede confusion matrix heeft enkel hoge waarden op de diagonaal. Hoge waarden worden donker ingekleurd om een snel overzicht te geven.

Als je intenties ziet waar er veel hoge getallen niet op de diagonaal liggen, dan zijn dat de intenties waar je je chatbot moet bijtrainen.

De problemen die het meest voorkomen zijn dat de chatbot te weinig trainingszinnen heeft voor deze intenties, OF dat er twee intenties zijn die te veel op elkaar lijken.

Het eerste probleem los je natuurlijk op door extra trainingszinnen toe te voegen. Dit werkt ook vaak bij het tweede probleem, maar als dat niet werkt, is het soms beter om de twee intenties samen te voegen tot één intentie en te werken met entiteiten of bijvragen om het verschil te maken. Als een mens het verschil niet kan maken tussen de ene intentie of de andere kan een chatbot dat meestal ook niet.

Score matrix

Wanneer onze chatbot intenties probeert te herkennen in zinnen geeft hij steeds een zekerheidsscore aan elke intentie. Dit betekent dat de chatbot bijvoorbeeld 98% zeker is dat het om intentie A gaat, maar intentie B heeft 68% kans en intentie C 10%.

Naast de confusion matrix geven we daarom ook een matrix van die gemiddelde scores uit de testset.

Zo zie je bijvoorbeeld dat bij het herkennen van 'Adress_office', de gemiddelde score 100%, maar er toch gemiddeld een score van 33% wordt gegeven aan 'Pricing'. Dit laat je toe om intenties op te sporen die dicht tegen elkaar aan liggen en mogelijk moeten bijgetraind worden of samengevoegd worden, zelfs voor het misloopt in de echte confusion matrix.