CovertMark.strategy.sgd module
- class CovertMark.strategy.sgd.SGDStrategy(pt_pcap, negative_pcap, recall_pcap=None, debug=True)[source]
Bases:
CovertMark.strategy.strategy.DetectionStrategy
A generic SGD-based strategy for observing patterns of traffic in both directions of stream. Not designed for identifying any particular existing PT, should allow a general use case based on traffic patterns. It should achieve better unseen recall performance than Logistic Regression.
- DESCRIPTION = 'Generic binary classification strategy.'
- DYNAMIC_ADJUSTMENT_STOPPING_CRITERIA = (0.75, 0.001)
- DYNAMIC_THRESHOLD_PERCENTILES = [0, 25, 50, 75, 90]
- FEATURE_SET = ['entropy', 'psh', 'interval_bins', 'tcp_len_bins']
- LOSS_FUNC = 'hinge'
- NAME = 'SGD Classifier Strategy'
- NUM_RUNS = 5
- PT_SPLIT_RATIO = 0.5
- RUN_CONFIG_DESCRIPTION = ('Occurrence Threshold (%ile)', 'Run #')
- TIME_SEGMENT_SIZE = 60
- config_specific_penalisation(config_set)[source]
The lower the occurrence threshold is, the easier it is to perform live classification. Therefore, a 5% penalty is applied for every 20% of occurrence threshold raised.
- interpret_config(config_set)[source]
Threshold percentile and run # are used to distinguish SGD runs.
- negative_run()[source]
Not used at this time, as FPR combined into
positive_run()
.
- positive_run(**kwargs)[source]
Perform SGD learning on the training/testing dataset, and validate overfitting on validation dataset.
- Parameters
threshold_pct (int) – the occurrence threshold %ile used to tolerate low number of classifier positive hits to reduce false positives.
run_num (int) – the integer run number of this training/validation run.
- recall_run(**kwargs)[source]
Run the classifier with lowest FPR at each occurrence threshold on unseen recall packets.
- run_strategy(**kwargs)[source]
Input traces are assumed to be chronologically ordered, misfunctioning otherwise. Sacrificing some false negatives for low false positive rate, under dynamic occurrence thresholding.
- Parameters
window_size (int) – the number of packets in each segment of single client-remote TCP sessions.
decision_threshold (int) – leave as None for automatic decision threshold search, otherwise the number of IP occurrences before positive flagging.
- test_validation_split(split_ratio)[source]
Split the inputs into test and validation packets through random sampling over all feature rows. We refer to testing data used in training as test, and data used in negative run unseen during training as validaton. It is important to balance the positive and negative sample counts, as over-supply of negative cases can severely damage the recall performance on unseen inputs captured separately.