Использование логистической регрессии для оценки рисков кибербезопасности

Во все более взаимосвязанном цифровом ландшафте защита конфиденциальных данных и критически важной инфраструктуры приобретает первостепенное значение. Инциденты кибербезопасности представляют собой серьезную угрозу для предприятий и организаций, что может привести к утечке данных, финансовым потерям и репутационному ущербу. Чтобы снизить эти риски, компании обращаются к методам машинного обучения, таким как логистическая регрессия, для оценки и прогнозирования киберрисков. В этой статье мы углубимся в вероятностный подход на основе логистической регрессии для расчета риска инцидента кибербезопасности и рассмотрим, как предприятия могут использовать машинное обучение для повышения защиты системы.

Понимание кода

Давайте разберем предоставленный код Python шаг за шагом, выделив назначение каждой строки:

# Импортировать необходимые библиотеки
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.linear_model import LogisticRegression
из импорта sklearn.caulibration CalibratedClassifierCV

# Загрузите набор данных
df = pd.read_csv(‘/content/cyber_cleaned_data’)
df = df.drop(‘Unnamed: 0’, axis=1)
df.head()

В этом разделе мы начнем с импорта необходимых библиотек: модулей NumPy, pandas и scikit-learn. Затем мы загружаем набор данных кибербезопасности из CSV-файла, удаляя безымянный столбец из DataFrame и отображая первые несколько строк набора данных с помощью функции head().

# Преобразовать категориальные переменные в числовые с помощью кодировки меток
label_encoders = {}
для столбца в df.columns:
if not pd.api.types.is_numeric_dtype(df[column]):
le = LabelEncoder()
df[столбец] = le.fit_transform(df[столбец])
label_encoders[столбец] = le

Здесь мы решаем проблему категориальных данных, используя кодирование меток. Этот метод преобразует категориальные переменные в числовые значения, позволяя алгоритму машинного обучения работать эффективно. Мы перебираем каждый столбец DataFrame, идентифицируя нечисловые столбцы и применяя LabelEncoder для их преобразования. Мы также храним экземпляры LabelEncoder в словаре label_encoders.

# Определить функции и цель
X = df.drop(columns=[‘Цель’])
y = df[‘Цель’]

# Разделить данные на обучающие и тестовые наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0,2, random_state=42)

В этой части мы отделяем функции (X) и целевую переменную (y) от набора данных. Затем мы разделяем данные на наборы для обучения и тестирования, используя функцию train_test_split. Это деление необходимо для точной оценки производительности модели.

# Обучить модель логистической регрессии
model = LogisticRegression(max_iter=1000)
linear_model = CalibratedClassifierCV(model, method=’sigmoid’) # Калибровка вероятностей
linear_model.fit(X_train, y_train)

Мы запускаем модель логистической регрессии с заданным максимальным количеством итераций. Логистическая регрессия — это популярный алгоритм классификации, который хорошо работает для бинарных результатов, что делает его подходящим для прогнозирования кибер-риска (независимо от того, присутствует он или нет). Затем мы создаем калиброванную версию модели, используя CalibratedClassifierCV, чтобы улучшить оценки вероятности. Калибровка выравнивает прогнозируемые вероятности с наблюдаемыми частотами, обеспечивая более надежные прогнозы.

# Предсказать вероятности для набора тестов
probabilities = linear_model.predict_proba(X_test)[:, 1]

Здесь мы прогнозируем вероятность кибер-риска для тестового набора, используя калиброванную модель. Функция predict_proba возвращает массив вероятностей для каждого класса. Мы извлекаем вероятности положительного класса (кибер-риск), используя индексацию [:, 1].

# Сделать прогноз вероятности киберриска для нового экземпляра
new_instance = np.array([[15, label_encoders['CyberCatBreed'].transform(['NeuralNet'])[0],
label_encoders['CyberEnhancements'].transform(['DataEncryption, SuperHearing, AugmentedReality'])[0],
label_encoders['CyberSecurityProtocols'].transform(['IntrusionDetection'])[0],
label_encoders['PreviousCyberIncidents'].transform(['MalwareInfection, InsiderThreat, RansomwareAttack'])[0],
label_encoders['IndustryType'].transform(['Transporting'])[0],
label_encoders['EmployeeTraining'].transform(['Advanced'])[0],
label_encoders['PatchManagement'].transform(['Excellent'])[0]]])
прогнозируемая_вероятность = калиброванная_модель.predict_proba(новый_экземпляр)[:, 1]
print("Прогнозируемая вероятность киберриска:", прогнозируемая_вероятность)

Эта заключительная часть включает в себя создание нового экземпляра данных, представляющих потенциальный сценарий кибербезопасности. Мы используем LabelEncoders, хранящиеся в словаре label_encoders, для преобразования категориальных значений в числовой формат. Затем мы пропускаем этот новый экземпляр через откалиброванную модель, чтобы предсказать вероятность кибер-риска. Прогнозируемая вероятность выводится на консоль.

# Сохраните модель, используя pickle
model_filename = ‘cyber_risk_model.pkl’
with open(model_filename, ‘wb’) as f:
pickle.dump(calibrated_model, f)

# Разверните модель, используя joblib
joblib.dump(calibrated_model, ‘cyber_risk_model.joblib’)

В этих строках мы сохраняем калиброванную модель, используя как pickle, так и joblib. Сохранение модели позволяет нам повторно использовать ее без повторного обучения, что особенно полезно для развертывания модели в производственных средах. Модель сохраняется как файл .pkl, так и файл .joblib.

Заключение

Предоставленный код является примером практической реализации логистической регрессии для оценки риска инцидентов кибербезопасности. Преобразовывая категориальные данные в числовой формат, обучая модель логистической регрессии и калибруя вероятности, предприятия могут получить ценную информацию о своей подверженности киберрискам. Кроме того, использование методов машинного обучения, таких как логистическая регрессия, позволяет организациям активно защищать свои системы и данные от потенциальных угроз. Благодаря включению этапов развертывания модели предприятия могут не только оценивать риски, но и внедрять прогностические модели для реальной защиты, способствуя более безопасному цифровому ландшафту.