Heuristieken combineren
Een andere cyberanalist vertelt je dat tijdens bepaalde soorten aanvallen de geïnfecteerde broncomputer kleine beetjes verkeer verstuurt om detectie te vermijden. Dat doet je afvragen of het beter is om een gecombineerde heuristiek te maken die tegelijk zoekt naar grote aantallen poorten én kleine pakketgroottes. Verbetert dit de prestaties ten opzichte van de eenvoudige poortheuristiek? Net als in de vorige oefening heb je X_train, X_test, y_train en y_test in het geheugen. De voorbeeldcode helpt je ook om de uitkomst van de poortheuristiek, pred_port, te reproduceren. Je hebt ook numpy als np en accuracy_score() al ingeladen.
Deze oefening maakt deel uit van de cursus
Machine Learning-workflows ontwerpen in Python
Oefeninstructies
- De kolom
average_packetberekent de gemiddelde pakketgrootte over alle flows die van één bron zijn waargenomen. Neem het gemiddelde van die waarden voor alleen de slechte bronnen in de trainingsset. - Maak nu een nieuwe regel die alle bronnen als positief markeert waarvan het gemiddelde verkeer kleiner is dan de waarde hierboven.
- Combineer de regels zodat beide heuristieken tegelijk moeten gelden, met een passende rekenkundige bewerking.
- Rapporteer de nauwkeurigheid van de gecombineerde heuristiek.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Compute the mean of average_packet for bad sources
avg_bad_packet = np.mean(____[____]['average_packet'])
# Label as positive if average_packet is lower than that
pred_packet = ____[____] < avg_bad_packet
# Find indices where pred_port and pred_packet both True
pred_port = X_test['unique_ports'] > avg_bad_ports
pred_both = pred_packet ____ pred_port
# Ports only produced an accuracy of 0.919. Is this better?
print(accuracy_score(____, ____))