Oldukça değişken özellik seti boyutuyla başa çıkmak

Oct 21 2020

Güvenlik olayı sınıflandırması için makine öğrenimini kullanmaya çalışıyorum. Amacım, belirli bir olayın sonucunu (gerçek pozitif veya yanlış pozitif) tahmin etmektir. Bir olayın içinde gözlemlenebilirler adı verilen bir dizi değişken vardır. Bunlar url'ler, ip adresleri, dosya karmaları vb. Olabilir (toplamda 8 tür). Bununla birlikte, bir olay az sayıda gözlenebilir veya çok sayıda da içerebilir. Sonucu bu gözlemlenebilirlere dayanarak tahmin etmek istediğim için, özellik boyutumun uzunluğu değişiyor - 1 ile 2500 arasında. Bu, veri setinin bir örneğidir:

['user1', '1.1.1.1', 'explorer.exe', NULL, NULL, NULL ...]
['google.com', 'msword.exe', NULL, NULL, NULL ...]
['user3', '1.1.1.9', 'explorer.exe', 'e0d123e5f316bef78bfdf5a008837577', 'http://google.com, NULL ...]

Bu senaryoyu nasıl idare edebilirim? Karşılaştırma için bir sınıflandırma ve sinir ağları denemek istiyorum.

Düzenleme
Bahsettiğim "gözlemlenebilirler" bir belgedeki kelimeler olarak yorumlanabildiğinden, Kelime Torbası yaklaşımını kullandım. Oradan benim durumum nispeten bilinen bir metin sınıflandırma problemidir ve Naive Bayes algoritmaları ve hash vektörleştirme ile iyi sonuçlar elde ettim.

Yanıtlar

1 GermanCM Oct 21 2020 at 15:32

Ne tür bir algoritma kullanabileceğinizi düşünmeden önce, verilerinizi nasıl düzgün bir şekilde önceden işleyeceğimi düşünürdüm. Olası 8 türünüzün her biri için kaç olası değere sahip olabileceğinize bağlı olarak (doğru anladıysam), her bir olaydaki olası her değerin varlığını veya yokluğunu gösteren bir 0 ve 1 veri kümesi oluşturabilirsiniz.

Bu sizi seyrek bir matrise sahip olmaya yönlendirir, ancak bu, bazı araçlarla başa çıkabileceğiniz bir şeydir, muhtemelen güzel bir örnek bu bağlantıdadır.

Sonuç:

  • Öncelikle, türlerinizin her biri için sabit olası değerler olup olmadığını belirlemeye çalışırdım (bölgeye göre ips grupları oluşturarak? Sabit sayıda olası .exe, url'ler var mı ...?)
  • verilerinizi önceden işleyin, böylece http://google.comve google.com aynı değerdedir (yani, URL'lerden http: // silerek )
  • Olası değerlerin sayısının gülünç derecede büyük olmadığını düşünüyorsanız, seyrek matrisi oluşturmaya çalışabilirsiniz.

Bundan sonra, hangi tür algoritmanın uygulanacağını düşünebilir ve başından beri bir sinir ağı için delirmemeyi düşünebilirsiniz.

Erwan Oct 22 2020 at 07:25

Alman CM'ye katılıyorum, verilerinizde tam olarak yapılandırılmamış olsa da bazı yapılar var. Dolayısıyla ilk görev, verileri makine öğrenimi tarafından yararlanılabilecek özelliklere dönüştürmektir. Bu tipik özellik mühendisliğidir: Buradaki fikir, verilerdeki farklı öğe türlerini, algoritmaya yararlı göstergeler sağlamaya duyarlı bir şekilde düzenlemeye çalışmaktır. Pek çok öğrenme algoritması eksik değerlerle başa çıkabilir, bu nedenle belirli bir bilgi türünün olmaması mutlaka bir sorun olmak zorunda değildir. Elbette bu aşama uzman bilgisi gerektirdiğinden kesin tavsiye vermek zordur.

Teknik olarak, bu tür değişken uzunluklu dizileri girdi olarak alan yöntemler olduğunu unutmayın, ancak algoritmanın her şeyi kendi başına tahmin etmesi gerekiyorsa, iyi çalışması pek olası değildir.