ヒューリスティックの組み合わせ
別のサイバーアナリストによると、特定の種類の攻撃では、感染した送信元コンピュータは検知を避けるために小さなトラフィックを送ることがあるそうです。そこで、多数のポートへのアクセスと小さなパケットサイズを同時に探す、組み合わせたヒューリスティックを作るほうが良いのではないかと考えました。これは、単純なポートのヒューリスティックより性能が向上するでしょうか? 前の演習と同様に、メモリにはX_train、X_test、y_train、y_testがあります。サンプルコードには、ポートのヒューリスティックの結果であるpred_portを再現する助けも含まれています。さらに、numpyはnpとして、accuracy_score()も読み込まれています。
この演習はコースの一部です
Python で設計する Machine Learning ワークフロー
演習の手順
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(____, ____))