ÖZET: Yapay zeka algoritmaları kullanılarak sistemde oluşan trafik verileri incelenebilir ve anormal ya da tehlikeli olarak değerlendirilen veriler belirlenebilir. Bu sayede sistemdeki güvenliği artırılabilir ve izinsiz girişler en aza indirilebilir. Ayrıca, yapay zeka algoritmaları kullanılarak sistemdeki trafik verilerinin daha iyi anlaşılması ve yönetimi sağlanabilir.
Analizler için kullanılabilecek öğrenme türleri arasında sınıflandırma, regresyon ve kümeleme gibi yapay zeka algoritmaları bulunur. Bu algoritmalar ağ trafiği verilerini analiz etmek için kullanılabilir ve izinsiz girişleri tespit etmek için kullanılabilir.
Modeller arasında en yaygın olarak kullanılanlar arasında çok katmanlı sinir ağları (MLP) ve destek vektör makine (SVM) bulunur. MLP ağ trafiği verilerini analiz etmek için kullanılan popüler bir model olarak kabul edilirken, SVM ise sınıflandırma problemlerinde oldukça etkilidir.
Ancak, ağ trafiği verilerinin çok fazla olduğu ve hızlı değiştiği düşünüldüğünde, yapay zeka tabanlı sistemlerin yanı sıra veri yoğunluğunu azaltmak ve hızlı analiz yapmak için veri madenciliği teknikleri ve veri yoğunluğunu azaltmak için özel olarak tasarlanmış veri yoğunluğu azaltma algoritmaları da kullanılabilir. Bu sistemlerin kullanımı, izinsiz girişleri hızlı bir şekilde tespit etmeye ve önlem almaya olanak tanır.
Anahtar Kelimeler: İzinsiz Giriş Tespit Sistemleri, Yapay Zeka
Analizler için kullanılabilecek öğrenme türleri arasında sınıflandırma, regresyon ve kümeleme gibi yapay zeka algoritmaları bulunur. Bu algoritmalar ağ trafiği verilerini analiz etmek için kullanılabilir ve izinsiz girişleri tespit etmek için kullanılabilir.
Modeller arasında en yaygın olarak kullanılanlar arasında çok katmanlı sinir ağları (MLP) ve destek vektör makine (SVM) bulunur. MLP ağ trafiği verilerini analiz etmek için kullanılan popüler bir model olarak kabul edilirken, SVM ise sınıflandırma problemlerinde oldukça etkilidir.
Ancak, ağ trafiği verilerinin çok fazla olduğu ve hızlı değiştiği düşünüldüğünde, yapay zeka tabanlı sistemlerin yanı sıra veri yoğunluğunu azaltmak ve hızlı analiz yapmak için veri madenciliği teknikleri ve veri yoğunluğunu azaltmak için özel olarak tasarlanmış veri yoğunluğu azaltma algoritmaları da kullanılabilir. Bu sistemlerin kullanımı, izinsiz girişleri hızlı bir şekilde tespit etmeye ve önlem almaya olanak tanır.
Anahtar Kelimeler: İzinsiz Giriş Tespit Sistemleri, Yapay Zeka
- Ağ Adli Bilişiminde Yapay Zeka Kullanımı
Yapay Zeka (AI) alanında son dönemde yaşanan gelişmeler, bu teknolojinin şirketler ve kuruluşlar tarafından benimsenmesine ve bu alana teknolojik yatırımlar yapılmasına yardımcı olmuştur. Akıllı telefonlar, otonom arabalar, akıllı saatler, televizyonlar gibi gündelik hayatta kullanılan cihazların yanısıra birçok üretim endüstrileri, finans, eğlence gibi sektörlerde Yapay Zeka’nın kullanımı rahatlıkla gözlemlenebilir. Siber Güvenlik ve Adli Bilişim alanları da siber güvenlik olaylarının tespit, ve analizi için yapay zeka teknolojilerinden faydalanmaktadır.
Dijital cihazların kullanımının günden güne artması ile birlikte siber suçlardaki büyüme, Adli Bilişim alanının da önünü açmıştır. Adli Bilişim dijital verilerin ve cihazların mahkemeler tarafından yasal olarak kabul edilecek şekilde analiz edilmesini ve soruşturulmasını içerir. Bu inceleme ve analiz süreçleri dijital kanıtların tanımlanması, toplanması, doğrulanması, analizi, yorumlanması, belgelenmesi ve sunulması süreçlerini içerir.
Cisco tarafından yayınlanan “Yıllık Internet Raporu”na göre, 2023 yılı sonunda internet ağına bağlı olacak cihaz sayısı 29.3 milyar olacak ve bir sistem tarafından yönetilen ortalama trafik hacmi aylık 50 GB olacaktır.
Dijital cihazların kullanımının günden güne artması ile birlikte siber suçlardaki büyüme, Adli Bilişim alanının da önünü açmıştır. Adli Bilişim dijital verilerin ve cihazların mahkemeler tarafından yasal olarak kabul edilecek şekilde analiz edilmesini ve soruşturulmasını içerir. Bu inceleme ve analiz süreçleri dijital kanıtların tanımlanması, toplanması, doğrulanması, analizi, yorumlanması, belgelenmesi ve sunulması süreçlerini içerir.
Cisco tarafından yayınlanan “Yıllık Internet Raporu”na göre, 2023 yılı sonunda internet ağına bağlı olacak cihaz sayısı 29.3 milyar olacak ve bir sistem tarafından yönetilen ortalama trafik hacmi aylık 50 GB olacaktır.
- İzinsiz Giriş Tespit Sistemleri (Intrusion Detection System)
İzinsiz Giriş Tespit Sistemi (IDS), ağ trafiğini şüpheli etkinlik açısından izleyen ve bu tür etkinlikler keşfedildiğinde uyarı veren bir sistemdir. Zararlı etkinlik veya politika ihlali için bir ağı veya sistemi tarayan bir yazılımdır. Herhangi bir kötü niyetli girişim veya ihlal, normalde bir yöneticiye bildirilir veya bir güvenlik bilgileri ve olay yönetimi (SIEM) sistemi kullanılarak merkezi olarak toplanır. Bir SIEM sistemi, birden çok kaynaktan gelen çıktıları birleştirir ve kötü amaçlı etkinlikleri yanlış alarmlardan ayırt etmek için alarm filtreleme tekniklerini kullanır.
Şekil 1 : İzinsiz Giriş Tespit Sistemleri
Ana Bilgisayar Tabanlı IDS (Host Based IDS): Ana bilgisayar tabanlı IDS (Intrusion Detection System), herhangi bir kötü niyetli veya şüpheli etkinliği tespit etmek için belirli bir bilgisayar üzerindeki etkinliği izleyen ve analiz eden bir güvenlik sistemidir. Potansiyel güvenlik tehditlerini veya ihlallerini belirlemek için ana bilgisayar (izlenen bilgisayar veya ağ) tarafından oluşturulan verileri analiz eder. Ana bilgisayar tabanlı IDS, belirli sistemleri veya ağları hedef alan saldırılara karşı koruma sağlamak için kullanılır ve bir tehdit algılandığında kullanıcıyı veya güvenlik ekibini uyaracak şekilde yapılandırılabilir.
Ağ tabanlı IDS (Network Based IDS) : Ağ üzerinde bulunan güvenlik açıklarını ve potansiyel tehditleri tespit etmek amacıyla kullanılan bir güvenlik sistemidir. Bu sistem ağ üzerinde gerçekleşen trafikleri inceler ve belirli bir kurallar setine göre bu trafikleri değerlendirir. Eğer bir trafik potansiyel bir tehdit olarak algılanırsa, sistem bu tehdidi bildirir ve gerekli önlemleri alır. Ağ tabanlı IDS sistemleri, ağ üzerinde bulunan sunucular, switchler ve routerlar gibi ağın herhangi bir yerinden gelen trafikleri inceleyebilir.
![011923_1629_PYTHONLEZN1.png](https://www.imagevisit.com/images/2023/07/31/011923_1629_PYTHONLEZN1.png)
Şekil 1 : İzinsiz Giriş Tespit Sistemleri
Ana Bilgisayar Tabanlı IDS (Host Based IDS): Ana bilgisayar tabanlı IDS (Intrusion Detection System), herhangi bir kötü niyetli veya şüpheli etkinliği tespit etmek için belirli bir bilgisayar üzerindeki etkinliği izleyen ve analiz eden bir güvenlik sistemidir. Potansiyel güvenlik tehditlerini veya ihlallerini belirlemek için ana bilgisayar (izlenen bilgisayar veya ağ) tarafından oluşturulan verileri analiz eder. Ana bilgisayar tabanlı IDS, belirli sistemleri veya ağları hedef alan saldırılara karşı koruma sağlamak için kullanılır ve bir tehdit algılandığında kullanıcıyı veya güvenlik ekibini uyaracak şekilde yapılandırılabilir.
Ağ tabanlı IDS (Network Based IDS) : Ağ üzerinde bulunan güvenlik açıklarını ve potansiyel tehditleri tespit etmek amacıyla kullanılan bir güvenlik sistemidir. Bu sistem ağ üzerinde gerçekleşen trafikleri inceler ve belirli bir kurallar setine göre bu trafikleri değerlendirir. Eğer bir trafik potansiyel bir tehdit olarak algılanırsa, sistem bu tehdidi bildirir ve gerekli önlemleri alır. Ağ tabanlı IDS sistemleri, ağ üzerinde bulunan sunucular, switchler ve routerlar gibi ağın herhangi bir yerinden gelen trafikleri inceleyebilir.
2.1 İzinsiz Giriş Yöntemi Tespit Metodları
- İmza Tabanlı Tespit Yöntemi: İmza tabanlı IDS, ağ trafiğindeki bayt boyutu, 1 veya 0 sayısı gibi belirli kalıplara dayalı olarak saldırıları tespit eder. Ayrıca, kötü amaçlı yazılım tarafından kullanılan zaten bilinen kötü amaçlı talimat dizisini temel alarak da algılar. IDS’de tespit edilen kalıplar, imzalar olarak bilinir. İmza tabanlı IDS, sistemde deseni (imzası) mevcut olan saldırıları kolayca tespit edebilir ancak yeni kötü amaçlı yazılım saldırılarını deseni (imzası) bilinmediği için tespit etmek oldukça zordur..
- Anomali Tabanlı Tespit Yöntemi: Kötü amaçlı yazılımlar hızla geliştirildiğinden, bilinmeyen kötü amaçlı yazılım saldırılarını tespit etmek için anomaly tespit tabanlı IDS yapıları ortaya çıkmıştır. Anomali tabanlı IDS’de, güvenilir bir etkinlik modeli oluşturmak için makine öğrenimi kullanılır ve gelen her şey bu modelle karşılaştırılır ve modelde bulunmazsa şüpheli ilan edilir. Makine öğrenimi tabanlı yöntem ile bu modeller uygulamalara ve donanım yapılandırmalarına göre eğitilebildiğinden, imza tabanlı IDS’ye kıyasla daha iyi genelleştirilmiş bir özelliğe sahiptir.
- Python ile İzinsiz Giriş Tespit Sisteminin Analizi
Yapay Zeka, katmanlı bir güvenlik modelinde ağın izlenmesine, güvenliğinin sağlanmasına ve gerektiği durumlarda araştırma yapılabilmesine yardımcı olabilir.
Yapay Zeka tabanlı İzinsiz Giriş Tespit Sistemleri (IDS) gibi teknolojiler aracılığı ile güvenlik olaylarının proaktif olarak izlenmesi, kritik verilerin kurtarılmasında önemli bir rol oynayabilir. Ağ trafiğinin büyük miktarda veri içermesi, bu verinin yapay zeka ile işlenmesini ve bu iki unsurun uyumlu bir şekilde çalışmasını mümkün kılacaktır.
Araştırma yapılan yerel ağ ortamlarında ya da bulut ortamlarındaki çeşitli kaynaklardan dijital kanıtlar elde edilebilir. Dosya sistemlerinin yapısı, cihazlar üzerindeki silinmiş verilere erişim sağlanmasına imkan tanır. İşletim sistemleri üzerindeki olay günlükleri, sistem, güvenlik ve uygulama loglarını kayıt altına alır.Olay günlükleri kullanılarak cihazın nasıl kullanıldığı çıkarımı yapılabilir. Ağ trafiği,dijital kanıt araştırması yapan kişiye ağ üzerinden erişilen uygulamalar, oturum açma kayıtları gibi verilerin toplanmasını sağlar. Bulut ortamları ise, yerel bir bilgisayar ya da bilgisayar ağı üzerinde depolanmayan kanıtları veya birden fazla cihaz arasında paylaşılan verileri tutar.
Ağ Adli Bilişimi, güvenlik olaylarının incelenmesini, veri ve güvenlik ihlallerinin araştırılması için ağ trafiğindeki paketlerin incelenmesini temel alan bir bilim olarak bilinir. Ağ paketleri cihazların birbiri ile iletişimi için gerekli yönlendirme bilgisinden fazlasını içermektedir. Örneğin; bazı durumlarda ağdaki paket akışları, gönderilen ve alınan dosyaların yeniden oluşturulması için kullanılabilir.
Bir dijital soruşturma kapsamında ağ trafiğindeki veriler iki şekilde toplanabilir:
Yapay Zeka tabanlı İzinsiz Giriş Tespit Sistemleri (IDS) gibi teknolojiler aracılığı ile güvenlik olaylarının proaktif olarak izlenmesi, kritik verilerin kurtarılmasında önemli bir rol oynayabilir. Ağ trafiğinin büyük miktarda veri içermesi, bu verinin yapay zeka ile işlenmesini ve bu iki unsurun uyumlu bir şekilde çalışmasını mümkün kılacaktır.
Araştırma yapılan yerel ağ ortamlarında ya da bulut ortamlarındaki çeşitli kaynaklardan dijital kanıtlar elde edilebilir. Dosya sistemlerinin yapısı, cihazlar üzerindeki silinmiş verilere erişim sağlanmasına imkan tanır. İşletim sistemleri üzerindeki olay günlükleri, sistem, güvenlik ve uygulama loglarını kayıt altına alır.Olay günlükleri kullanılarak cihazın nasıl kullanıldığı çıkarımı yapılabilir. Ağ trafiği,dijital kanıt araştırması yapan kişiye ağ üzerinden erişilen uygulamalar, oturum açma kayıtları gibi verilerin toplanmasını sağlar. Bulut ortamları ise, yerel bir bilgisayar ya da bilgisayar ağı üzerinde depolanmayan kanıtları veya birden fazla cihaz arasında paylaşılan verileri tutar.
Ağ Adli Bilişimi, güvenlik olaylarının incelenmesini, veri ve güvenlik ihlallerinin araştırılması için ağ trafiğindeki paketlerin incelenmesini temel alan bir bilim olarak bilinir. Ağ paketleri cihazların birbiri ile iletişimi için gerekli yönlendirme bilgisinden fazlasını içermektedir. Örneğin; bazı durumlarda ağdaki paket akışları, gönderilen ve alınan dosyaların yeniden oluşturulması için kullanılabilir.
Bir dijital soruşturma kapsamında ağ trafiğindeki veriler iki şekilde toplanabilir:
- Proaktif yaklaşım olarak bilinen bu yöntem ile ağ üzerindeki trafiğin sürekli izlendiği ve analiin o an gerçekleştirildiği modeldir.
- Reaktif yaklaşım olarak bilinen bu yöntemde ise, tespit edilen bir saldırı sonrasında, ağ trafiğinin daha sonra ya da çevrimdışı analiz edilmesi esasına dayanır.
Ağ Adli Bilişimi, kendi kendini koruyan sistemlerin daha önce karşılaşılmamış bir saldırının bilinmeyen etki ve etkenlerinin analiz edilmesini ve anlaşılmasını sağlar. Bunu yapabilmesi ve sınıflandırma performansının geliştirilmesi için ağdan geçen tüm trafiği izlenmesi ve kayıt altına alınması gerekir. Ağ güvenliğini tehlikeye atan ve en çok karşılaşılan saldırıları aşağıdaki gibi sıralayabiliriz.
- Botnet
- Buffer Overflow Saldırıları
- E-posta hesaplarının ele geçirilmesi
- Cros-Site Scripting (XSS)
- Cryptojacking
- DDoS (Dağıtık Hizmet Dışı Bırakma) Saldırıları
- Ransomeware
- DNS Tunelleme
- SQL Injection
- Oltalama Saldırıları
3.1 Python Kütüphanelerinin Kurulumu ve İçe Aktarılması
Öncelikle pyton ile geliştirilecek uygulama için gerekli kütüphanelerin kurulması ve içeri aktarılması sürecinin gerçekleştirilmesi gerekmektedir.
3.1.1 NumPy (Numerical Python)
Bilimsel hesaplamaları hızlı bir şekilde yapmamızı sağlayan bir matematik kütüphanesidir. Numpy’ın temelini numpy dizileri oluşturur. Numpy dizileri python listelerine benzer fakat hız ve işlevsellik açısından python listelerinden daha kullanışlıdır. Ayrıca python listelerinden farklı olarak Numpy dizileri homojen yapıda olmalıdır yani dizi içindeki tüm elemanlar aynı veri tipinden olmalıdır.
3.1.2 Pandas
Python programlama dili için yüksek performanslı, kullanımı kolay veri yapıları ve veri analiz araçları sağlayan açık kaynaklı bir kütüphanedir. ‘.csv’ ve ‘.txt’ dosyalarını açmak ve içerisinde bulunan verileri okuyarak istenen sonuca kolayca ulaşmak için kullanılmaktadır. Yani Pandas sayesinde bir excel dosyasını açarak içerisinde bulunan bir sütunu veya satırı seçip işlem yapabiliriz. Numpy kütüphanesinde yapılan verilerin şekillendirilmesi işlemi daha detaylı bir biçimde kullanılabilmektedir.
3.1.3 Seaborn
Seaborn, Matplotlib kütüphanesine yüksek seviye arayüz sağlayan bir kütüphanedir. Seaborn ile;
- Estetik olarak hoş olan varsayılan temaları kullanma
- Özel olarak renk paleti belirleme
- Göz alıcı istatistiksel grafikler yapma
- Dağılımları kolayca ve esnek bir şekilde sergileme
- Matris ve DataFrame içindeki bilgileri görselleştirme
yapılabilir.
3.1.4 Matplotlib
Matplotlib; veri görselleştirmesinde kullandığımız temel python kütüphanesidir. 2 ve 3 boyutlu çizimler yapmamızı sağlar. Matplotlib genelde 2 boyutlu çizimlerde kullanılırken, 3 boyutlu çizimlerde başka kütüphanelerden yararlanılır.
Çizgi grafikler, dağılım grafikleri, histogramlar, çubuk grafikler, hata grafikleri, pasta grafikler, kutu grafikler ve diğer birçok görselleştirme stili oluşturabilir. Matplotlib ile 3D grafikler de mümkündür.
Çizgi grafikler, dağılım grafikleri, histogramlar, çubuk grafikler, hata grafikleri, pasta grafikler, kutu grafikler ve diğer birçok görselleştirme stili oluşturabilir. Matplotlib ile 3D grafikler de mümkündür.
3.1.5 Optuna
Hiperparametre optimizasyonu noktasında kendini kanıtlamış birçok algoritma vardır. Optuna hem makine öğrenimi hem de derin öğrenme algoritmaları ile uyumlu çalışabilen açık kaynak kodlu optimizasyon algoritmalarından biridir. Kısaca Optuna, hiperparametre optimizasyonu sürecini otomatize etmek için geliştirilmiş, Python kullanan ve en iyi performans için deneme yanılma yoluyla optimum değerleri otomatik olarak arayıp bulan bir yazılım çerçevesidir.
3.1.6 SKLearn
Scikit-learn, veri bilimi ve machine learning için en yaygın kullanılan Python paketlerinden biridir. Birçok işlemi gerçekleştirmenizi sağlar ve çeşitli algoritmalar sağlar. Scikit-learn ayrıca sınıfları, yöntemleri ve işlevleri ile kullanılan algoritmaların arka planıyla ilgili belgeler sunar.
Scikit-learn Özellikleri :
Scikit-learn Özellikleri :
- Veri İşleme,
- Boyutsal Küçülme,
- Model Seçimi,
- Regresyon,
- Sınıflandırılması,
- Küme Analizi.
3.1.7 XGBoost
XGBoost(eXtreme Gradient Boosting), Gradient Boosting algoritmasının çeşitli düzenlemeler ile optimize edilmiş yüksek performanslı halidir. Tianqi Chen ve Carlos Guestrin’in 2016 yılında yayınladıkları “XGBoost: A Scalable Tree Boosting System” adlı makale ile hayatımıza dahil olmuştur. Algortimanın en önemli özellikleri yüksek tahmin gücü elde edebilmesi, aşırı öğrenmenin önüne geçebilmesi, boş verileri yönetebilmesi ve bunları hızlı yapabilmesidir. Tianqi’ye göre XGBoost diğer popüler algoritmalardan 10 kat daha hızlı çalışmaktadır.
Daha az kaynak kullanarak üstün sonuçlar elde etmek için yazılım ve donanım optimizasyon tekniklerini uygulanmıştır. Karar ağacı tabanlı algoritmaların en iyisi olarak gösterilir.
Daha az kaynak kullanarak üstün sonuçlar elde etmek için yazılım ve donanım optimizasyon tekniklerini uygulanmıştır. Karar ağacı tabanlı algoritmaların en iyisi olarak gösterilir.
3.1.8 Catboost
Catboost, Yandex şirketi tarafından geliştirilmiş olan Gradient Boosting tabanlı açık kaynak kodlu bir makine öğrenmesi algoritmasıdır. Gradient Boosting’in performansını arttırmak amacıyla geliştirilen XGBoost ve LightGBM’e alternatif olarak Nisan 2017 tarihinde “CatBoost: unbiased boosting with categorical features” makalesiyle tanıtılmıştır. Adı “Category” ve “Boosting” kelimelerinin birleşiminden gelmektedir.
3.1.9 Lightgbm
LightGBM, Microsoft DMTK (Distributed Machine Learning Toolkit) projesi kapsamında 2017 yılında geliştirilmiş bir boosting algoritmasıdır. Diğer boosting algoritmaları ile karşılaştırıldığında yüksek işlem hızı, büyük verileri işleyebilmesi, daha az kaynak(RAM) kullanımı, yüksek tahmin oranı, paralel öğrenme ve GPU öğrenimini desteklemesi gibi avantajları vardır. Modelin tanıtıldığı “LightGBM: A Highly Efficient Gradient Boosting Decision Tree” makalesine göre, yapılan çalışmalarda LightGBM’in diğer modellere göre 20 kat daha hızlı olduğu sonucuna ulaşılmıştır.
3.2 Veri Önişleme
Veri bilimi projelerinde sahip olunan veriler düzensiz halde bulunabilir, bozuk kayıtlar içerebilir ya da uygulayacağınız analize uygun halde bulunmayabilirler. Dahası daha iyi sonuçlar elde edebilmek üzere çeşitli filtrelerden geçirmek, anomalilerden işin başında kurtulmak istenilebilir. Bu ve benzeri birçok duruma müdahaleyi içeren yöntemler bütününe veri ön işleme denir.
Veri Ön İşlemede Kullanılan Bazı Python Kütüphaneleri
NumPy
Matplotlib
Pandas
Scikit-Learn
Kod:
%pip install numpy pandas seaborn matplotlib optuna sklearn xgboost catboost lightgbm
Kod:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from pandas.api.types import is_numeric_dtype
import warnings
import optuna
from sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier, VotingClassifier, GradientBoostingClassifier
from sklearn.svm import SVC, LinearSVC
from sklearn.naive_bayes import BernoulliNB
from lightgbm import LGBMClassifier
from sklearn.feature_selection import RFE
import itertools
from catboost import CatBoostClassifier
from xgboost import XGBClassifier
from tabulate import tabulate
import os
warnings.filterwarnings(‘ignore’)
optuna.logging.set_verbosity(optuna.logging.WARNING)
for dirname, _, filenames in os.walk(‘abyznids’):
for filename in filenames:
print(os.path.join(dirname, filename))
3.2 Veri Önişleme
Veri bilimi projelerinde sahip olunan veriler düzensiz halde bulunabilir, bozuk kayıtlar içerebilir ya da uygulayacağınız analize uygun halde bulunmayabilirler. Dahası daha iyi sonuçlar elde edebilmek üzere çeşitli filtrelerden geçirmek, anomalilerden işin başında kurtulmak istenilebilir. Bu ve benzeri birçok duruma müdahaleyi içeren yöntemler bütününe veri ön işleme denir.
Veri Ön İşlemede Kullanılan Bazı Python Kütüphaneleri
NumPy
Matplotlib
Pandas
Scikit-Learn
Kod:
egitim=pd.read_csv(‘Egitim_Datasi.csv’)
test=pd.read_csv(‘Test_Datasi.csv’)
egitim
![011923_1629_PYTHONLEZN2.png](https://www.imagevisit.com/images/2023/07/31/011923_1629_PYTHONLEZN2.png)
Kod:
egitim.info()
egitim.head()
egitim.describe()
egitim.describe(include=‘object’)
3.3 Eksik Veri Kontrolü
Veri manipülasyonu işlemlerinde istatistik teorilerini bilmenin avantajları yadsınamaz bir gerçektir. Eksik veriyi, yansız tamamlamak ciddi bir bilgi birikimi gerektirir ama cankurtaran görevi gören istatistik bilimi sayesinde işimiz kolaylaşmaktadır. İstatistik teorileriyle geliştirilen birçok algoritma sayesinde bu büyük sorun büyük ölçüde araştırmacının işini kolaylaştırmaktadır.
Kod:
total = egitim.shape[0]
missing_columns = [col for col in egitim.columns if egitim[col].isnull().sum() > 0]
for col in missing_columns:
null_count = egitim[col].isnull().sum()
per = (null_count/total) * 100
print(f“{col}: {null_count} ({round(per, 3)}%)”)
3.4 Yinelenen Veri Kontrolü
Kod:
print(f“Number of duplicate rows: {egitim.duplicated().sum()}“)
3.5 Aykırılık Kontrolü
Verideki genel eğilimin dışına çıkan değerlere aykırı değer denir.
Kod:
# for col in df:
# if col != ‘class’ and is_numeric_dtype(df[col]):
# fig, ax = plt.subplots(2, 1, figsize=(12, 8))
# g1 = sns.boxplot(x = df[col], ax=ax[0])
# g2 = sns.scatterplot(data=df, x=df[col],y=df[‘class’], ax=ax[1])
# plt.show()
3.6 IDS Paketi Isı Haritası
Değişkenler (öznitelikler) arasındaki korelasyon katsayısı değerlerini gösterirken en çok kullanılan yöntemlerden birisi de ısı haritası ile görselleştirme yapmaktır.
Isı haritası grafiği, negatif yönlü ilişkinin şiddeti arttıkça rengin koyulaştığını, pozitif yönlü ilişkinin şiddeti arttıkça rengin krem rengine doğru açıldığını ifade etmektedir.
Isı haritası grafiği, negatif yönlü ilişkinin şiddeti arttıkça rengin koyulaştığını, pozitif yönlü ilişkinin şiddeti arttıkça rengin krem rengine doğru açıldığını ifade etmektedir.
Kod:
plt.figure(figsize=(40,30))
sns.heatmap(egitim.corr(), annot=True)
# import plotly.express as px
# fig = px.imshow(df.corr(), text_auto=True, aspect=”auto”)
# fig.show()
![011923_1629_PYTHONLEZN3.png](https://www.imagevisit.com/images/2023/07/31/011923_1629_PYTHONLEZN3.png)
3.7 Kategorik Değerleri Dönüştürme
Bilgisayar bilimlerinde kategorik verilerle çalışmak, hesaplama ve bilgisayarın bu değerleri anlaması açısından zorluklar içerir. Özellikle makine öğrenmesi modellerinin doğru çalışabilmesi için kategorik verileri, sayısal karşılıklarına (temsillerine) dönüştürmemiz gerekmektedir. Bunu yapmanın en yaygın iki yolu Sklearn kütüphanesi altında yer alan LabelEncoder veya OneHotEncoder (ya da Pandas.get_dummies) sınıflarını kullanmaktır.
Label Encoder, elimizdeki verileri direk sayısal temsillerine dönüştürmeye yarar ve kategorik her veriye sayısal bir değer atar. Genelde sadece iki değere sahip özniteliklerde kullanılır.
Label Encoder, elimizdeki verileri direk sayısal temsillerine dönüştürmeye yarar ve kategorik her veriye sayısal bir değer atar. Genelde sadece iki değere sahip özniteliklerde kullanılır.
Kod:
sns.countplot(x=egitim[‘class’])
![011923_1629_PYTHONLEZN4.png](https://www.imagevisit.com/images/2023/07/31/011923_1629_PYTHONLEZN4.png)
Kod:
def le(df):
for col in df.columns:
if df[col].dtype == ‘object’:
label_encoder = LabelEncoder()
df[col] = label_encoder.fit_transform(df[col])
le(egitim)
le(test)
Kod:
egitim.drop([‘num_outbound_cmds’], axis=1, inplace=True)
test.drop([‘num_outbound_cmds’], axis=1, inplace=True)
egitim.head()
![011923_1629_PYTHONLEZN5.png](https://www.imagevisit.com/images/2023/07/31/011923_1629_PYTHONLEZN5.png)
3.8 Özellik Seçimi
Makine öğrenme modellerinde daha iyi bir doğruluk elde etmek için, ilgili özellikleri (Öznitelikleri) bir veri kümesinden tespit etmek, ilgisiz veya daha az önemli olan özellikleri kaldırmak projenin büyük bir zamanını aldığı kesindir. Özellik Seçimi, makine öğreniminde modelinizin performansını büyük ölçüde etkileyen temel kavramlardan biridir. Modelimizi eğitmek ve problemi öğretmek için kullanılan veri özellikleri, başarabileceğiniz performans üzerinde büyük bir etkiye sahiptir.
Kod:
X_egitim = egitim.drop([‘class’], axis=1)
Y_egitim = egitim[‘class’]
Kod:
rfc = RandomForestClassifier()
rfe = RFE(rfc, n_features_to_select=10)
rfe = rfe.fit(X_egitim, Y_egitim)
feature_map = [(i, v) for i, v in itertools.zip_longest(rfe.get_support(), X_egitim.columns)]
selected_features = [v for i, v in feature_map if i==True]
selected_features
X_egitim = X_egitim[selected_features]
3.9 Verilerin Bölünmesi ve Ölçeklendirilmesi
Veri setleri genel olarak ikiye bölünür.
Eğitim Seti: Eğitim seti makine öğrenmesi algoritmasının eğitilmesi için verileri tanıması ve tahminlerini bu veriler üzerinden yapması için oluşturulan settir. Buna kısaca bundan sonraki verilere belli şekillerde önyargılı olmasını sağlayan veri seti diyebiliriz.
Test Seti: Eğitim seti kullanılarak oluşturulan algoritmanın ne derece doğru çalıştığını test etmek için daha önce kenara ayırdığımız veri setidir.
Eğitim Seti: Eğitim seti makine öğrenmesi algoritmasının eğitilmesi için verileri tanıması ve tahminlerini bu veriler üzerinden yapması için oluşturulan settir. Buna kısaca bundan sonraki verilere belli şekillerde önyargılı olmasını sağlayan veri seti diyebiliriz.
Test Seti: Eğitim seti kullanılarak oluşturulan algoritmanın ne derece doğru çalıştığını test etmek için daha önce kenara ayırdığımız veri setidir.
Kod:
scale = StandardScaler()
X_egitim = scale.fit_transform(X_egitim)
test = scale.fit_transform(test)
x_egitim, x_test, y_egitim, y_test = train_test_split(X_egitim, Y_egitim, train_size=0.70, random_state=2)
3.10 K En Yakın Komşular (KNN) sınıflandırma modeli
K En Yakın Komşular (KNN) sınıflandırma modeli, verilen bir giriş verisi hakkında etiket bilgisi olmayan diğer veriler ile karşılaştırılarak verilen giriş verisinin hangi sınıfa ait olduğunu tahmin etmek için kullanılan bir yöntemdir. Bu yöntem, veri setinde mevcut olan verilerin etiketlerini kullanarak verilen giriş verisinin hangi sınıfa ait olduğunu tahmin etmeye çalışır.
KNN algoritmasının çalışma şekli şu şekildedir:
KNN algoritmasının çalışma şekli şu şekildedir:
- KNN algoritmasının çalıştırılması için öncelikle veri seti içinde mevcut olan verilerin etiketleri ile birlikte bir eğitim seti oluşturulur.
- Daha sonra, verilen giriş verisi için en yakın komşuları bulunur. Bu, veri setinde mevcut olan diğer veriler ile verilen giriş verisinin benzerliklerine göre hesaplanır.
- En yakın komşuların etiketlerine bakılarak, verilen giriş verisinin hangi sınıfa ait olabileceği tahmin edilir.
KNN algoritması, veri seti içinde mevcut olan verilerin etiketlerini kullanarak verilen giriş verisinin hangi sınıfa ait olduğunu tahmin etmeye çalıştığı için, bu algoritma öğrenme sırasında herhangi bir model oluşturmaz. Bu nedenle, KNN algoritması “öğrenme sırasında model oluşturmayan” (lazy learning) sınıflandırma yöntemleri arasında sayılır.
Kod:
def objective(trial):
n_neighbors = trial.suggest_int(‘KNN_n_neighbors’, 2, 16, log=False)
classifier_obj = KNeighborsClassifier(n_neighbors=n_neighbors)
classifier_obj.fit(x_egitim, y_egitim)
accuracy = classifier_obj.score(x_test, y_test)
return accuracy
study_KNN = optuna.create_study(direction=‘maximize’)
study_KNN.optimize(objective, n_trials=1)
print(study_KNN.best_trial)
Kod:
KNN_model = KNeighborsClassifier(n_neighbors=study_KNN.best_trial.params[‘KNN_n_neighbors’])
KNN_model.fit(x_egitim, y_egitim)
KNN_egitim, KNN_test = KNN_model.score(x_egitim, y_egitim), KNN_model.score(x_test, y_test)
print(f“Egitim Skoru: {KNN_egitim}“)
print(f“Test Skoru: {KNN_test}“)