microsoft power bi python anomaly detection algorithm

Merhaba, iyi günler.

Bugün; çeşitli veri kümeleri üzerinde özel işlemler ile farklı çözümlemeler için yapılandırılmış öğrenme algoritmaları kullanımında verilerin çoğunluğundan önemli ölçüde farklılaşarak şüphe uyandıran nadir öğelerin, olayların veya gözlemlerin tanımlanması ile oluşan Anomali (Anomaly) durumlarında uygulanan algoritmalar üzerine çeşitli bilgi ve çözümlemeler aktarmaya çalışacağım.

Genel konu özetinin bulunduğu Python Veri Analizi yazısına link üzerinden ulaşabilirsiniz.

Anomali (Aykırı-Anormallik) Tespiti (Anomaly Detection); bir veri kümesinde elde edilen normlardan oluşan aykırı değerlerin, farklı öğelerin ve olayların belirlenmesi/saptanması olarak ifade edilmektedir.

Bu değer/öğe/durumların literatür karşılığı ise Outlier (Aykırı Değer) ya da kimi yazılım dili kullanımlarında sürekli karşımıza çıkan Exception (Exception Handling – İstisnai Durum) şeklinde adlandırılmaktadır.

Bir makine öğreniminin (Öğrenme Modelinin) performansını; veri kümesinin tutarlılığı ve verilerin ölçümlenebilir modellere uyarlanabilirliliği büyük ölçüde, doğrudan etkilemektedir.

Bu noktadaki problemlerin bir nebze önüne geçmek için bilinçli/farkına varmadan veri setinin/veri kümesinin eğitim için hazırlanmasına yönelik genellikle istatistiksel grafikler ve diğer veri görselleştirme yöntemleri kullanarak temel özelliklerini özetlemek için Keşifsel Veri Analizi (Exploratory Data Analysis – (EDA)analiz etme yaklaşımı uygulanmaktadır.

Kısacası; verilerin bize resmi modellemenin öncesinde neler söyleyebileceğini görmek için kullanılmaktadır. 
1960 yılında temel bu uygulamamanın öncülerinden John Tukey veri analizini şu şekilde tanımlamaktadır;

Procedures for analyzing data, techniques for interpreting the results of such procedures; ways of planning the gathering of data to make its analysis easier, more precise or more accurate, and all the machinery and results of (mathematical) statistics which apply to analyzing data.

Veri analiz etme prosedürleri, bu tür prosedürlerin sonuçlarını yorumlama teknikleri; analizini daha kolay, daha kesin veya daha doğru hale getirmek için veri toplamayı planlama yolları ve verilerin analizine uygulanan tüm makineler/makineleşmeler ve (matematiksel) istatistiklerin sonuçlarıdır.

Temsili (sembolik) olarak anomali;

microsoft power bi python anomaly detection algorithm coordinate example
microsoft power bi python anomaly detection algorithm coordinate groups example

Her ne kadar yöntemsel uyarlama ya da kavramsal tanımlamalarda bulunsakta analizlerimizde kilitlendiğimiz noktlar olabilir.Bu ön analiz yönteminde çokça ikilemde kalınan kavramsal ya da mantıksal çıkmaz oluşturan iki eş kavram bulunmaktadır. (Birbirine ne yakın, ne uzak.)

Gürültü (Noise) ve Anomali (Anomaly).

  • Anomali (Anomaly); bir veri kümesinde elde edilen normlardan oluşan aykırı değerler, farklı öğeler ve olaylar olarak ifade edilmektedir.
  • Gürültü (Noise); veri girişi, veri işlenmesi ya da veri toplanması esnasından oluşan/saptanan hatalar olarak ifade edilmektedir. (Yanlış giriş, yanlış etiketlenme vb. durumlar.)

Farkı örneklendirmek adına insanları ve servetlerini anketleyerek; kümeleyip, analiz edecek olursak:
Elon Musk’ın veya Jeff Bezos’un servet miktarı, dünyadaki insanların servetine göre aykırı/anomali değerler oluşturur.
İnsanların bazılarının anket yaparken yanlış beyanda bulunarak verilerde sapmalara neden olması ile ise gürültü değerleri oluşur.

Sembolikleştirirsek;

Ölçüm/Analiz = Temiz Veri + Gürültü

1. Temiz veri modeli; parametrelerle varsayılan model dahilinde karakterize edilebilir.
2. Gürültü; varsayılan olasılık dağılımını takip eden farklı veri tipidir.

(1) ve/veya (2)’yi kesen herhangi bir nokta aykırı değerdir.
Aykırı değerler; varsayılan modeli takip etmeyen veri noktalarıdır.

Aslında bakarsanız literatürde net olarak (bariz) aykırı değer (anomali) veya gürültünün ayırıcı ya da birbirinden ayrılan tanımı bulunmamaktadır.

Belirttiğimiz örnek ve tanımlamalar dahilinde;
Aykırı değer toplulukların/araştırmacıların görüşüne göre 
analizlerimiz dahilindeki verilere uymayan/uyumsuz olan veriler olarak nitelendirilmiştir.
Burada grubun (veri grubunun) bir üyesi olup olmadığı önemsizdir.
Bunun yanı sıra aykırı bir değer; bir gürültü ya da ilgili kümeye ait bir veri noktası olabilir.

Hepsinin yanı sıra ortak olarak kabul edilen nokta ise; analiz neticelerinde doğru sonuç ulaşımı adına verilerden gürültü ve hatalar çıkarılmalıdır, ancak gürültü olmayan aykırı değerler verilerde kalmalıdır.
(Ya da farklı değerlendirilip ele alınmalı.)

Temsili (sembolik) karşılaştırmalar;

microsoft power bi python anomaly detection algorithm differenca niosy coordinate and graph example
microsoft power bi python anomaly detection algorithm genetic hierarchy coordinate example

Anomali (Anomaly) Türleri

Analizler esnasında oluşan/elde edilen anomaliler 3 tip olarak değerlendirilip ele alınmaktadır.
Bunlar;

  • Nokta Anomalileri (Point Anomalies)
  • Bağlamsal Anomaliler (Contextual Anomalies)
  • Kollektif Anomaliler (Collective Anomalies)

Nokta Anomalileri (Point Anomalies)

Nokta Anomalisi (Point Anomaly); veri setindeki diğer örnekler arasında anormal olarak kabul edilebilecek bir örnek olarak nitelendirilip ifade edilmektedir.
Nokta anomalileri genellikle rastgele meydana gelen ve özel bir anlamı olmayan bazı aşırılık, düzensizlik veya sapmayı temsil eder.

Temsili (sembolik) örnek;

microsoft power bi python anomaly detection algorithm coordinate groups example

Bağlamsal Anomaliler (Contextual Anomalies)

Bağlamsal Anomali (Contextual Anomaly); belirli bir bağlamda anormal olarak kabul edilebilecek bir örnek olarak nitelendirilip ifade edilmektedir.
Kısacası koşullara bağlı olarak saptanan anomali türü olarakta literatürlerde yer almaktadır.

Temsili (sembolik) örnek;

microsoft power bi python anomaly detection algorithm coordinate example

Kollektif Anomaliler (Collective Anomalies)

Kollektif-Toplu Anomali (Collective Anomaly); genellikle ilişkili, birbirine bağlı veya sıralı örnekler grubu olarak kabul edilebilecek bir örnek olarak nitelendirilip ifade edilmektedir.
Bu grubun her bir özel örneğinin kendisi anomali olmak zorunda olmasa da, bunların toplu oluşumu anomalidir.
Kısacası koşullara bağlı olarak saptanan anomali türü olarakta literatürlerde yer almaktadır.

Temsili (sembolik) örnek;

microsoft power bi python anomaly detection collective anomaly example

Anomali Tespiti (Anomaly Detection) Uygulama Örneği

AD (Anomali Tespiti – Anomaly Detection) çözümüne örnek olarak, çokça duyulan ve kullanılan Iris Veri Seti üzerinden basit bir örnek ile çözümlemelerde bulunalım.

İlgili veri setine ait csv. uzantılı dosyasına buradan ulaşabilirsiniz.

microsoft power bi iris machine learning data sets support vector machine

Iris Veri Seti 3 Iris bitki türüne (Iris Setosa, Iris Virginica ve Iris Versicolor) ait, her bir türden 50 örnek olmak üzere toplam 150 örnek sayısına sahip bir veri setidir.

Iris Veri Seti içerisinde;

Sınıflar (Türler);

  • Iris Setosa,
  • Iris Versicolor,
  • Iris Virginica.

Veri Özellikleri (Ortak Özellikler);

  • Sepal Uzunluk (cm),
  • Sepal Genişlik (cm),
  • Petal Genişliği (cm)
  • Petal Uzunluk (cm).

özellik ve değerleri bulunmaktadır.

Dilerseniz hızlıca analizimizi gerçekleştirmek için adımlarımızı uygulamaya başlayalım.

1-Gerçekleştireceğimiz analizler için kullanacağımız kütüphanelerimizi projemize dahil edelim;
(Scikit-LearnNumpyMatplotlipSeaborn)

>>> import seaborn as sns
       import matplotlib.pyplot as plot
       from sklearn.cluster import KMeans
       import numpy as nmp
       from sklearn.preprocessing import MinMaxScaler
       import pandas as pd
       from sklearn.cluster import DBSCAN

  • seaborn – sns: Iris veris seti ve analizlere yönelik görselleştirme kullanımı için,
  • matplotlib.pyplot – plot: Analizlere yönelik detaylı görselleştirme kullanımı için,
  • sklearn.cluster – KMeans : Analizlerde bulunamamız için dahil edilecek gözetimsiz algoritma modeli kullanımı için,
  • numpy – nmp : Analizlerde matematiksel işlem kullanımı için,
  • sklearn.preprocessing – MinMaxScaler : Analizlerde veri değer durumu kullanımı için,
    (MinMaxScaler: [0-1])
  • pandas – pd: İçeri aktardığımız veri kümesinin bir çok boyutlu olarak kullanacağımız veri çerçevesini (DataFrame) kullnımı için,
  • sklearn.cluster – DBSCAN*** : Uzaklığa dayalı ilişki tespiti kullanımı için
kullanılacaktır.

***DBSCAN Algoritması; Nesnelerin komşuları ile olan mesafelerini hesaplayarak belirli bir bölgede önceden belirlenmiş eşik değerden daha fazla nesne bulunan alanları gruplandırarak kümeleme işlemini gerçekleştirmektedir.

python anomaly detection data analyze import library pandas sckit learn matplotlib numpy seaborn

2-Çalışmamıza ilgili verilerimizi dahil edelim ve önizleme gerçekleştirelim;

>>> iris_dataset = sns.load_iris()
       print(iris_dataset)

python anomaly detection import data load iris seaborn

Hatırlatma;

Önceki çalışmamızda yerel dizin üzerinden ilgili verilerimizi projemize dahil etmiştik;
    Iris_Data = pd.read_csv(“D:\Yedekleme\Iris.csv”)

Burada aşağıdaki gibi bir hata alındığında;
‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape [duplicate]

  • “D:\\Yedekleme\\Iris.csv”
  • r”D:\Yedekleme\Iris.csv”
  • “D:/Yedekleme/Iris.csv”
formatlarını sisteminize uygun şekilde deneyebilirsiniz.
Ek olarak print() çıktı fonksiyonunu kullanmadan doğrudan veri kaynağı belirtilerek;
python anomaly detection import data print iris seaborn

önizlemede bulunabilirsiniz. (Göze hitap eden bir görüntüleme formatı.)

3-Çalışmamızda kullanılacak olan veri setine yönelik ek bilgiler edinelim;

>>> iris_dataset.head()
       print(“##############DATA INFO##############”)
       iris_dataset.info()
       print(“#####################################”)

python anomaly detection data analyze data head and info

4-Çalışmamızda kullanılacak olan veri setine yönelik ek metrik değerler niteliğinde bilgiler edinelim;

>>> iris_dataset.describe()
       iris_dataset.columns
       print(“##############DATA COLUMNS##############”)
       print(iris_dataset.columns)
       print(“##############DATA DESCRIBE#############”)
       print(iris_dataset.describe())
       print(“##############DATA NULL?################”)
       iris_dataset.isnull().sum()

python anomaly detection iris data info detail describe isnull sum

5-Çalışmamızda kullanılacak olan veri setinde yer alan tür grublarını kontrol edelim;
(Tekil standartta)

>>> iris_dataset[‘species’].unique()

python anomaly detection iris data unique group type

6-Modelimiz üzerinde anomali oluşturalım.
Bunun için tür gruplarında yer alan ilgili değerleri rastgele değiştirelim.
Tabi ki değişiklik yaptığımız iligli değerimizin ilk ve son hali farklı olacak şekilde düzenlemede bulunalım.

Bunun için öncelikle veri setimizdeki ilk 20 satıra yönelik önizlemede bulunalım.

>>> print(iris_dataset.head(20))

python anomaly detection iris data edit top 20 rows

Modelimiz üzerindeki ilk 20 satırda yer alan çiçek türü grubu Setosa.
Burada rastgele birkaç satırda yer alan türü Virginica olarak yeniden düzenleyelim.

>>> iris_dataset.iloc[2,4] = ‘virginica’
       iris_dataset.iloc[7,4] = ‘virginica’
       iris_dataset.iloc[9,4] = ‘virginica’
       iris_dataset.iloc[11,4] = ‘virginica’
       iris_dataset.head() 

python anomaly detection data analyze edit group type

Modelimiz üzerindeki düzenleme ardından ilk 20 satırı tekrar kontrol ettiğimizde;

>>> print(iris_dataset.head(20))

python anomaly detection iris data new top 20 rows

Düzenlememizin gerçekleştiğini görüntülemekteyiz.

7-Modelimiz üzerindeki analizimizi biraz daha derinleştirip sadece virginica türündeki çiçeklere yönelelim.
Ek olarak yeni veri seti için (DataFrame) indekslerimizi yapılandıralım;

>>> virginica_df =  iris_dataset.loc[iris[‘species’]==’virginica’]
       virginica_df = virginica_df.reset_index(drop=True)

python anomaly detection create virginica data frame and reset index

Oluşan yeni veri setimizin önzilemesini gerçekleştirilem;
(Top 5)

>>> virginica_df.head(5)

python anomaly detection new data set head

8-Oluşan yeni veri setimizi ölçeklendirelim;
(Değişkenlerinizi ölçekleyerek, farklı değişkenleri eşit temelde karşılaştırmaya çalışacağız.)

>>> virginica_np = virginica_df.iloc[:,:4].values
       scaler = MinMaxScaler()
       virginica_sc = scaler.fit_transform(virginica_np)

python anomaly detection df analyze

9-Bariz anomali görünümü içeren verilerin olup-olmadığını kontrol etmek için görselleştirmede bulunalım;

(x,y) ikilisi şeklinde;
x=5.1, y=3.5
 ve
x=4.6, y=3.1
noktalarını işaretleyip kontrol gerçekleştirelim.

>>> sns.set()
       plot.subplot(1,2,1)
       sns.scatterplot(data=virginica_df, x=’sepal_length’, y=’sepal_width’)
       plot.scatter(x=5.1, y=3.5, marker=’*’, color=’red’,linewidths = 2.1)
       plot.scatter(x=4.6, y=3.1, marker=’*’, color=’red’,linewidths = 2.1)
       plot.xlabel(‘sepal_length’)
       plot.ylabel(‘sepal_width’)
       plot.title(‘Sepal length v width’)
       print(“##############USER FOLDER##############”)
       plot.savefig(‘Sepal length v width V-1’)
       print(“##############CUSTOM FOLDER############”)
       plot.savefig(‘C:/Users/user/Desktop/Sepal length v width V-1’)
       plot.show()
       plot.close()

python anomaly detection data analyze data visualizations matplotlib

İlgili görsel çıktısı;
(Uyguladığımız çıktı formatında.)

python anomaly detection data analyze data visualizations matplotlib export

Elbette farklı varyasyonlarda da görselleştirmeyi ele alabiliriz;

python anomaly detection data analyze data visualizations differant example 1
python anomaly detection data analyze data visualizations differant example 2

10-KMeans algoritması ve Elbow* metodunu kullanarak optimum küme sayısını belirleyelim;

*Elbow Kümeleme Metodu; bir veri setindeki küme sayısının belirlenmesinde kullanılan bir yöntemdir.
Yöntem sonucu; açıklanan varyasyonun küme sayısının bir fonksiyonu olarak çizilmesinden ve kullanılacak küme sayısı olarak eğrinin kırılım noktasının/dirseğinin seçilmesinden oluşur.

**Within Cluster Sum of Squares (WCSS – Küme İçerisindeki Kareler Toplamı); kümenin her bir üyesi ile onun ağırlık merkezi arasındaki kare uzaklığın toplamı olarak ifade edilmektedir.

>>> wcss = []
       for i in range(1, 11):
       kmeans = KMeans(n_clusters = i, init = ‘k-means++’, random_state = 42)
       kmeans.fit(virginica_sc)
       wcss.append(kmeans.inertia_)
       plt.plot(range(1, 11), wcss)
       plt.title(‘The Elbow Method’,fontsize=20)
       plt.xlabel(‘Number of clusters’)
       plt.ylabel(‘WCSS’)
       plt.show()

python anomaly detection data analyze kmeans elbow method

Analiz esnasında oluşan uyarı bildirimlerini inaktif etmek için:

Öncelikle kütüphanemizi ekleyip, ardından tekrar çalıştırıp; 

>>> import warnings #HATA YONETIMI ICIN.

python anomaly detection data analyze import library pandas sckit learn matplotlib numpy seaborn warning os

Sonrasında ilgili işlem önceliği göz ünunda bulunarak işleme alınacak adım dahilinde;

>>> #OMP_NUM_THREADS UYARISI ICIN KULLANILDI.

       #1 YONTEM-KULLANIM
       warnings.filterwarnings(action=’once’)

       #2 YONTEM-KULLANIM
       warnings.filterwarnings(‘ignore’)

       #MULTITHREAD DETAYLARI
       #http://scv.bu.edu/examples/python/examples/parallel/multithread/

şeklinde aktifleştirilebilir.

python anomaly detection data analyze warning os code

Uyarı yönetimi uygulandığında çıktı;

python anomaly detection data analyze kmeans elbow method close warning

 

şeklinde olmaktadır.

İlgili görsel çıktısı;
(Uyguladığımız çıktı formatında.)

>>> print(“##############USER FOLDER##############”)
       plot.savefig(‘The Elbow Method’)
       print(“##############CUSTOM FOLDER############”)
       plot.savefig(‘C:/Users/user/Desktop/The Elbow Method’) 

python anomaly detection data analyze kmeans elbow method visual

İlgili görsel çıktısını incelediğimizde optimum noktanın ya da eğrinin kırılım noktasının/dirseğinin 2-4 arasında olduğu görüntülenmektedir. (Kabaca görsel izlenim ile.)

11-Oluşturmuş olduğumuz modelimizi veri seti üzerinde eğitelim;

>>> kmeans = KMeans(n_clusters = 3, init = ‘k-means++’, random_state = 2).fit(virginica_sc)

python anomaly detection training kmeans model on the dataset

12-Küme merkezlerine uzaklık durumu değerlendirmesi ile anomali kontrolü gerçekleştirelim;

>>> virginica_sc_clusters = kmeans.predict(virginica_sc)
       virginica_sc_clusters_centers = kmeans.cluster_centers_
       dist = [nmp.linalg.norm(x-y) for x, y in zip(virginica_sc, virginica_sc_clusters_centers[virginica_sc_clusters])]

python anomaly detection kmeans predict range analyze

13-Uzaklık durum değerlendirmesine çıktı olarak göz atalım;
Maksimum, minumum, ortalama ve median değerlerini ele alalım.

>>> print(“##############virginica_sc_clusters##############”)
       print(virginica_sc_clusters)
       print(f”\n”)
       print(“##############dist##############”)
       print(dist)
       print(f”\n”)
       print(“##############dist info##############”)
       print(“MIN: “),print(nmp.min(list(dist)))
       print(“MAX: “),print(nmp.max(list(dist)))
       print(“AVG: “),print(nmp.average(list(dist)))
       print(“MED: “),print(nmp.median(list(dist)))

python anomaly detection kmeans predict range analyze output

14-Kümelerdeki aykırı değerlere dayalı sahte değer tahminleri oluşturalım;
(Percentile Score Analyze)

>>> km_y_pred = nmp.array(dist)
       km_y_pred[dist >= nmp.percentile(dist, 95)] = 1
       km_y_pred[dist <   nmp.percentile(dist, 95)] = 0

python anomaly detection percentile analyze data

15-Kümelerden birinin yalnızca yanlış etiketlenmiş durumlar içerip içermediğini görmek için test oluşturalım;

>>> virginica_clus = pd.concat([virginica_df,

                                 pd.DataFrame(virginica_sc_clusters,columns=[‘Clusters’])],axis=1)

python anomaly detection concat and build dataframe

Yeni veri setimizin ön izlemesini gerçekleştirelim;

>>> print(virginica_clus.head(10))

python anomaly detection new dataset cluster version preview

16-Kümelerden birinin yalnızca yanlış etiketlenmiş durumunu görsel üzerinde kontrol edelim;
(Değşiklikte bulunduğumuz küme sayısı kadar, 4.)

>>> plot.subplot(1,2,1)
       sns.scatterplot(data=virginica_clus, x=’sepal_length’, y=’sepal_width’, hue=’Clusters’, palette=’deep’)
       plot.xlabel(‘sepal_length’)
       plot.ylabel(‘sepal_width’)
       plot.legend( loc=’lower right’)
       plot.title(‘Sepal length v width’)
       plot.show()

python anomaly detection new dataset clusters visual map

İlgili görsel çıktısı;

(Uyguladığımız çıktı formatında.)

>>> print(“##############USER FOLDER##############”)
       plot.savefig(‘Virginica Clusters Visual’)
       print(“##############CUSTOM FOLDER############”)
       plot.savefig(‘C:/Users/user/Desktop/Virginica Clusters Visual’)

virginica clusters visual

Farklı bir gösterim varyasyonunda ise;

>>> plot.subplot(1,2,2)
       sns.scatterplot(data=virginica_clus, x=’sepal_length’, y=’sepal_width’, hue=’Clusters’, palette=’deep’)
       plot.xlabel(‘sepal_length’)
       plot.ylabel(‘sepal_width’)
       plot.legend( loc=’lower right’)
       plot.title(‘Sepal length v width’)
       plot.show()

python anomaly detection new dataset clusters different visual map

İlgili görsel çıktısı;

(Uyguladığımız çıktı formatında.)

>>> print(“##############USER FOLDER##############”)
       plot.savefig(‘Petal length v width’)
       print(“##############CUSTOM FOLDER############”)
       plot.savefig(‘C:/Users/user/Desktop/Petal length v width’)

python anomaly detection anomaly points

yanlış etiketlenme sonucuna ulaşabileceğimiz görüntüleme elde edebiliriz. (subplot(1,2,2) varyasyonu.)

17-DBSCAN modelini parametrik olarak hazırlayıp, öğrenmemizi başlatalım;

>>> dbs = DBSCAN(eps=0.75, min_samples=2, n_jobs=-1).fit(virginica_sc)

*eps ile bir değerin, diğerinin komşuluğunda kabul edilmesi için iki örnek arasındaki maksimum mesafe değerini belirleyebilmektesiniz.
Bu, bir küme içindeki noktaların uzaklıklarına ilişkin kabul edilen bir maksimum sınır değildir.
Veri setinize ve mesafe fonksiyonuna uygun olarak seçebileceğiniz en önemli DBSCAN parametresidir.
*min_samples ile çekirdek nokta olarak kabul edilecek bir nokta için, bir komşuluktaki örnek sayısını belirleyebilmektesiniz.
*n_jobs ile paralel olarak çalıştırılacak iş sayısını belirleyebilmektesiniz.

python anomaly detection dbscan fitting

18-Öngörülen etiketler üzerinden küme sayısını belirleyelim;

>>> pred_labels = dbs.labels_
       n_clusters = len(set(pred_labels)) – (1 if -1 in pred_labels else 0)

python anomaly detection predict n cluster range value

19-Sonuç metriklerimizi görüntüleyelim;

>>> print(“##############pred_labels##############”)
       print(pred_labels)
       print(f”\n”)
       print(“##############n_clusters###############”)
       print(n_clusters)
       print(f”\n”)
       print(“##############info#####################”)
       print(‘Tahmini küme sayısı: %d’ % n_clusters)

python anomaly detection predict n cluster finally conclusion data

20-dbs_cluster sonuçlarımızı veri kümemize dahil edelim;

>>> virginica_db = pd.concat([virginica_clus,pd.DataFrame(pred_labels,columns=[‘dbs_cluster’])],axis=1) 

python anomaly detection dbs cluster add data frame

ve tablomuzu görüntüleyelim;
(İlk 15 satır.)

>>> virginica_db.head(15)

Güncellenmiş olan ve Virginica türü baz alınarak oluşturulmuş veriseti üzerindeki ilk 4-Dört küme; değişikliğe uğramış ve bu değişiklik algoritma tarafından tespit edilmiş olarak görüntülenmektedir.

python anomaly detection dbs cluster conclussion dataframe

Sonuç tablomuzu incelediğimizde DBSCAN ve KMeans analizleri altında gerçekleştirdiğimiz kümeleme yöntemindeki ilk vakaların anomali olarak işaretlendiği görüntülenmektedir.

Özet geçecek olursak; Iris veri kümesini kullanarak dört Setosa girişini Virginica olarak yeniden etiketleyip, iki denetimsiz öğrenme modelinin yanlış etiketlenmiş girişleri algılayıp algılamayacağını kontrol ettik.
Tekrar hatırlatmak gerekirse modellerde işaretlenen herhangi bir vakanın alanında bir uzmana danışmadan anormallik olduğunu varsayamayacağımızı unutmayalım. (Vakalar kendi içinde uzmanlık gerektirir.)

Görselleştirme çözümlerini farklı araç tercihi dahilinde ele almak isterseniz; Python üzerinde ki çeşitli kütüphaneleri kullanarak geçmiş dönemlerde uygulamış olduğumuz Power BI ile görselleştirme (12) çalışmalarından faydalanabilirsiniz. 

Günlük Hayatta Uygulama Alanları

İnternet Teknolojileri (Siber Güvenlik, E-Ticaret )

  • Ağ Davranışı Anormallikleri (Network Behavior Anomalies)
  • Dalgalı Band Anormallikleri (Wavy Band Anomalies)
  • Web Sitesi Trafik Anormallikleri (Website Traffic Anomalies)
  • Web Satış Performansı Anormallikleri (Web Sales Performance Anomalies
  • Kullanıcı Profili Anormallikleri / Güvelik İhlali Gerçekleşmiş  (User Profile Anomalies)

Sahtekarlık Girişimleri (Fraud)

  • Müşteri Davranış Anormallikleri / E-Ticaret (Customer Behavior Anomalies)
  • Kredi Kartı, Online Bankacılık Anormallikleri (Credit Card, Online Banking Anomalies)

Tıbbı-Medikal Problemler

  • Hasta Biyolojik Durum Anormallikleri (Patient Biological Status Anomalies)
  • Klinik Ortam Anormallikleri (Clinical Environment Anomalies)

Finansal Problemler

  • Hisse Senedi Ticareti Anormallikleri (Stock Trading Anomalies)
  • Borsa Alım-Satım Anormallikleri (Exchange Trading Anomalies)

Endüstriyel Problemler (Üretim ve ARGE)

  • Endüstriyel Otomasyon İşlem Anormallikleri (Industrial Automation Process Anomalies)
  • Üretim Anormallikleri (Production Anomalies)
  • Arge Analiz Anormallikleri (R&D Analysis Anomalies)
  • Akıllı Ev Enerji Tüketim Anormallikleri (Smart Home Energy Consumption Anomalies)

Avantaj Dezavantaj

Anomali Tespiti yöntemi/çözümü avantaj olarak;

  • Veriseti üzerinde uyarlanacak yapıda özelliklerin normalleştirilmesi gerekli değildir, (Geniş zaman bazlı planlama gerektirmez.)
  • Veriseti üzerindeki verilere ait özelliklerin dağılımının tahmin edilemediği durumlarda daha etkili bir yöntemdir, (Çıkarım oluşturur.)
  • Birkaç parametre kullanılması; modelin optimize edilmesi ve uyarlanabilirliğinin kolay olmasını sağlar.

Anomali Tespiti yöntemi/çözümü avantaj olarak;

  • Analiz sonuçlarnıı görselleştirmek karmaşıktır; kontrol noktaları iyi planlanıp probleme yönelik uygun görselleştirmelerde bulunulmalıdır, 
  • Kontrol noktalarına ya da vakaya uygun olarak optimize edilmezse uygulama ve uyarlama uzun olabilir.
    Bunun sonucu olarak daha yüksek hesaplama gücü ve hesaplama zamanı gerektirebilir,
  • Sonuç güvenilirliği birçok durumda belirsizdir.
    (Uzman görüşünde dahil ihtimal yer almaktadır.)

Bu bölümde genel manada çeşitli analiz ve algoritma uyarlamalarında kontrol basamağı olarak kullanılan Anomali-Anormallik Testipi (Anomaly Detection) çözümüne değinmeye çalıştım.

Gelecek yazımda Benzerlik Öğretimi (Similarity Learning) algoritmasını ve uyarlamalarını ele almaya çalışacağım.

İyi günler, iyi çalışmalar…

, ,

İlgili Yazılar