Объединение эвристик
Другой аналитик по кибербезопасности сообщает вам, что при некоторых типах атак заражённый компьютер-источник передаёт небольшие фрагменты трафика, чтобы избежать обнаружения. Это наводит на мысль: не лучше ли создать комбинированную эвристику, которая одновременно учитывает большое количество портов и малый размер пакетов? Улучшит ли это результат по сравнению с простой портовой эвристикой? Как и в предыдущем упражнении, в памяти доступны X_train, X_test, y_train и y_test. Пример кода также позволяет воспроизвести результат портовой эвристики — pred_port. Кроме того, предварительно загружены numpy как np и функция accuracy_score().
Это упражнение является частью курса
Проектирование рабочих процессов машинного обучения на Python
Инструкции к упражнению
- Столбец
average_packetсодержит средний размер пакета по всем потокам, зафиксированным от одного источника. Вычислите среднее значение этого столбца только для вредоносных источников на обучающей выборке. - Составьте новое правило, которое помечает как положительные все источники, у которых средний трафик меньше найденного значения.
- Объедините правила так, чтобы обе эвристики выполнялись одновременно, используя подходящую арифметическую операцию.
- Оцените точность комбинированной эвристики.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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(____, ____))