Isolation Forest (iForest) menggunakan algoritma sub-sampling untuk mendeteksi anomali. Algoritma ini kurang kompleks dan efektif untuk mengidentifikasi titik-titik anomali dalam dataset. iForest banyak digunakan dalam deteksi anomali. Topik ini menjelaskan cara mengonfigurasi iForest untuk mendeteksi anomali.
Konfigurasikan komponen
Anda dapat menggunakan salah satu metode berikut untuk mengonfigurasi parameter iForest guna mendeteksi anomali.
Metode 1: Konfigurasikan komponen di Machine Learning Designer
Konfigurasikan parameter komponen pada halaman pipeline Machine Learning Designer.
Tab | Parameter | Deskripsi |
Field Setting | featureCols | Jika Anda telah menyetel parameter vectorCol atau tensorCol, parameter ini akan dinonaktifkan. Kolom fitur yang digunakan untuk pelatihan. Catatan Parameter featureCols, tensorCol, dan vectorCol saling eksklusif. Anda hanya dapat menggunakan salah satu dari mereka untuk menggambarkan fitur input algoritma. |
groupCols | Array kolom grup. | |
tensorCol | Jika Anda telah mengatur parameter vectorCol atau featureCols, parameter tersebut akan dinonaktifkan. Nama kolom tensor. Catatan Parameter featureCols, tensorCol, dan vectorCol saling eksklusif. Anda hanya dapat menggunakan salah satu dari mereka untuk menggambarkan fitur input algoritma. | |
vectorCol | Jika Anda telah menyetel parameter tensorCol atau featureCols, parameter ini akan dinonaktifkan. Nama kolom vektor. Catatan Parameter featureCols, tensorCol, dan vectorCol saling eksklusif. Anda hanya dapat menggunakan salah satu dari mereka untuk menggambarkan fitur input algoritma. | |
Parameter Setting | predictionCol | Nama kolom hasil prediksi. |
maxOutlierNumPerGroup | Jumlah maksimum outlier per grup. | |
maxOutlierRatio | Rasio maksimum outlier yang dideteksi oleh algoritma. | |
maxSampleNumPerGroup | Jumlah maksimum sampel per grup. | |
numTrees | Jumlah pohon dalam model. Nilai default adalah 100. | |
outlierThreshold | Jika skor melebihi ambang batas yang ditentukan, titik data dianggap sebagai titik anomali. | |
Column name of detail prediction information | Nama kolom detail prediksi. | |
subsamplingSize | Jumlah baris yang diambil sampelnya di setiap pohon. Nilainya harus bilangan bulat positif. Nilai valid: 2 hingga 100000. Nilai default: 256. | |
numThreads | Jumlah thread komponen. Nilai default: 1. | |
Execution Tuning | Number of Workers | Jumlah node. Nilainya harus bilangan bulat positif. Parameter ini harus digunakan bersama dengan parameter Memory per worker. Nilai valid: 1 hingga 9999. |
Memory per worker, unit MB | Ukuran memori setiap node. Unit: MB. Nilainya harus bilangan bulat positif. Anda harus menentukan nilai dari 1024 hingga 65536. |
Metode 2: Gunakan kode Python
Konfigurasikan parameter komponen dengan menggunakan komponen PyAlink Script. Anda dapat menggunakan komponen skrip PyAlink untuk memanggil kode Python. Untuk informasi lebih lanjut, lihat PyAlink Script.
Parameter | Diperlukan | Deskripsi | Nilai default |
predictionCol | Ya | Nama kolom hasil prediksi. | Tidak tersedia |
featureCols | Tidak | Array kolom fitur. | Pilih Semua |
groupCols | Tidak | Nama kolom grup. Anda dapat menentukan beberapa kolom. | Tidak tersedia |
maxOutlierNumPerGroup | Tidak | Jumlah maksimum outlier per grup. | Tidak tersedia |
maxOutlierRatio | Tidak | Rasio maksimum outlier yang dideteksi oleh algoritma. | Tidak tersedia |
maxSampleNumPerGroup | Tidak | Jumlah maksimum sampel per grup. | Tidak tersedia |
numTrees | Tidak | Jumlah pohon dalam model. | 100 |
outlierThreshold | Tidak | Jika skor melebihi ambang batas yang ditentukan, titik data dianggap sebagai titik anomali. | Tidak tersedia |
predictionDetailCol | Ya | Nama kolom detail prediksi. | Tidak tersedia |
tensorCol | Tidak | Nama kolom tensor. | Tidak tersedia |
vectorCol | Tidak | Nama kolom vektor. | Tidak tersedia |
subsamplingSize | Tidak | Jumlah baris yang diambil sampelnya di setiap pohon. Nilainya harus bilangan bulat positif. Nilai valid: 2 hingga 100000. | 256 |
numThreads | Tidak | Jumlah thread komponen. | 1 |
Contoh kode Python berikut memberikan ilustrasi penggunaannya.
from pyalink.alink import *
import pandas as pd
df = pd.DataFrame([
[0.73, 0],
[0.24, 0],
[0.63, 0],
[0.55, 0],
[0.73, 0],
[0.41, 0]
])
dataOp = BatchOperator.fromDataframe(df, schemaStr='val double, label int')
outlierOp = IForestOutlierBatchOp()\
.setFeatureCols(["val"])\
.setOutlierThreshold(3.0)\
.setPredictionCol("pred")\
.setPredictionDetailCol("pred_detail")
outlierOp.print()