Testa och träna datauppsättningar

Slutförd

De data vi använder för att träna en modell kallas ofta för en träningsdatauppsättning. Vi har redan sett detta i praktiken. Frustrerande nog, när vi använder modellen i den verkliga världen, vet vi inte säkert hur bra vår modell kommer att fungera. Den här osäkerheten beror på att det är möjligt att vår träningsdatauppsättning skiljer sig från data i verkligheten.

Vad är överanpassning?

En modell är överanpassad om den fungerar bättre på träningsdata än på andra data. Namnet refererar till det faktum att modellen har passat så bra att den är memorerat information om träningsuppsättningen i stället för att hitta breda regler som gäller för andra data. Överanpassning är vanligt, men inte önskvärt. I slutändan bryr vi oss bara om hur bra vår modell fungerar på verkliga data.

Hur kan vi undvika överanpassning?

Vi kan undvika överanpassning på flera sätt. Det enklaste sättet är att ha en enklare modell, eller att använda en datauppsättning som är en bättre representation av vad som visas i verkligheten. För att förstå dessa metoder bör du överväga ett scenario där verkliga data ser ut så här:

Diagram showing a plot graph of dog height and rescues.

Anta dock att vi samlar in information om endast fem hundar och använder den som vår träningsdatauppsättning för att passa en komplex linje. Om vi kan göra det kan vi passa det mycket bra:

Diagram showing a complex line graph using only five dogs height and rescue information.

Men när detta används i den verkliga världen kommer vi att upptäcka att det gör förutsägelser som visar sig vara fel:

Diagram showing real-world vs training data in a graph of dog height and rescues.

Om vi har en mer representativ datauppsättning och en enklare modell visar sig raden vi passar göra bättre (men inte perfekta) förutsägelser:

Diagram showing a representative dog height and rescue graph using real world and training data.

Ett kostnadsfritt sätt att undvika överanpassning är att sluta träna efter att modellen har lärt sig allmänna regler, men innan modellen är överanpassad. Detta kräver dock identifiering när vi börjar överanpassa vår modell. Vi kan göra detta med hjälp av en testdatauppsättning.

Vad är en testdatauppsättning?

En testdatauppsättning, även kallad en valideringsdatauppsättning, är en uppsättning data som liknar träningsdatauppsättningen. I själva verket skapas testdatauppsättningar vanligtvis genom att ta en stor datamängd och dela upp den. En del kallas för träningsdatauppsättningen och den andra kallas för testdatauppsättningen.

Jobbet för träningsdatauppsättningen är att träna modellen. Vi har redan sett träning. Testdatamängdens uppgift är att kontrollera hur bra modellen fungerar. det bidrar inte direkt till träning.

Okej, men vad är poängen?

Poängen för en testdatauppsättning är dubbel.

Först, om testprestandan slutar att förbättras under träningen kan vi stoppa; Det är ingen idé att fortsätta. Om vi fortsätter kan det sluta med att vi uppmuntrar modellen att lära sig mer om träningsdatauppsättningen som inte finns i testdatauppsättningen, vilket är överanpassning.

För det andra kan vi använda en testdatauppsättning efter träningen. Detta ger oss en indikation på hur bra den slutliga modellen fungerar när den ser "verkliga" data som den inte har sett tidigare.

Vad betyder det för kostnadsfunktioner?

När vi använder både tränings- och testdatauppsättningar beräknar vi två kostnadsfunktioner.

Den första kostnadsfunktionen är att använda träningsdatauppsättningen, precis som vi har sett tidigare. Den här kostnadsfunktionen matas till optimeraren och används för att träna modellen.

Den andra kostnadsfunktionen beräknas med hjälp av testdatauppsättningen. Vi använder detta för att kontrollera hur väl modellen kan fungera i den verkliga världen. Resultatet av kostnadsfunktionen används inte för att träna modellen. För att beräkna detta pausar vi träningen, tittar på hur bra modellen presterar på en testdatauppsättning och återupptar sedan träningen.