Saya melihat pybrain untuk mengambil alarm monitor server dan menentukan akar penyebab masalah. Saya senang melatihnya menggunakan pembelajaran terawasi dan menyusun set data pelatihan. Data terstruktur seperti ini:
- Server Tipe A # 1
- Jenis alarm 1
- Jenis alarm 2
- Server Type A # 2
- Jenis alarm 1
- Jenis alarm 2
- Server Type B # 1
- Jenis alarm 99
- Jenis alarm 2
Jadi ada n server, dengan x alarm yang bisa UP
atau DOWN
. Keduanya n
dan x
variabel.
Jika Server A1 memiliki alarm 1 & 2 sebagai DOWN
, maka kita dapat mengatakan bahwa layanan a turun di server itu dan merupakan penyebab masalah.
Jika alarm 1 tidak aktif di semua server, maka kita dapat mengatakan bahwa layanan a adalah penyebabnya.
Mungkin ada beberapa opsi untuk penyebabnya, jadi klasifikasi langsung sepertinya tidak tepat.
Saya juga ingin mengikat sumber data nanti ke internet. Seperti hanya skrip yang melakukan ping beberapa layanan eksternal.
Semua alarm yang tepat mungkin tidak terpicu sekaligus, karena pemeriksaan layanan serial, sehingga dapat mulai dengan satu server turun dan kemudian server lain turun 5 menit kemudian.
Saya mencoba melakukan beberapa hal dasar pada awalnya:
from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
INPUTS = 2
OUTPUTS = 1
# Build network
# 2 inputs, 3 hidden, 1 output neurons
net = buildNetwork(INPUTS, 3, OUTPUTS)
# Build dataset
# Dataset with 2 inputs and 1 output
ds = SupervisedDataSet(INPUTS, OUTPUTS)
# Add one sample, iterable of inputs and iterable of outputs
ds.addSample((0, 0), (0,))
# Train the network with the dataset
trainer = BackpropTrainer(net, ds)
# Train 1000 epochs
for x in xrange(10):
trainer.train()
# Train infinite epochs until the error rate is low
trainer.trainUntilConvergence()
# Run an input over the network
result = net.activate([2, 1])
Tetapi saya mengalami kesulitan memetakan sejumlah variabel alarm ke jumlah input statis. Misalnya, jika kita menambahkan alarm ke server, atau menambahkan server, seluruh jaringan perlu dibangun kembali. Jika itu adalah sesuatu yang perlu dilakukan, saya bisa melakukannya, tetapi ingin tahu apakah ada cara yang lebih baik.
Pilihan lain yang saya coba pikirkan adalah memiliki jaring yang berbeda untuk setiap jenis server, tetapi saya tidak melihat bagaimana saya bisa menarik kesimpulan yang luas, karena hanya akan melakukan evaluasi pada satu host, bukan semua host sekaligus.
Jenis algoritma apa yang harus saya gunakan dan bagaimana cara memetakan dataset untuk menarik kesimpulan seluruh lingkungan dengan input variabel?
sumber
Jawaban:
Menurut pendapat saya Anda sedang mencari metode yang salah untuk menyelesaikan masalah Anda.
Anda tidak memiliki data numerik.
Pembelajaran mesin berbasis statistik memiliki waktu yang sangat sulit dengan masalah seperti itu. Masalah Anda terdengar lebih seperti salah satu masalah yang harus diselesaikan dengan sistem berbasis aturan. Naluri pertama saya adalah mencoba memahami aturan dan memasukkannya ke dalam kode yang mengarah ke klasifikasi.
Namun ada metode untuk mempelajari sistem berbasis aturan tersebut berdasarkan logika. Mereka hanya cukup ketinggalan zaman untuk pembelajaran mesin hari ini. https://en.wikipedia.org/wiki/Rule-based_system
sumber
Sejalan dengan komentar di atas, saya sarankan Anda mencoba pendekatan berbasis aturan. Untuk setiap server yang Anda miliki, permintaan layanannya. Jika semua layanan di server, maka Anda memiliki masalah server. Untuk setiap layanan, jika tidak ada server melaporkan bahwa layanan sedang berjalan, maka Anda memiliki masalah dengan layanan. Dalam hal keduanya, Anda akan mendapatkan pemberitahuan untuk masing-masing dan kemudian dapat memeriksa apa yang terjadi dengan salah satu dari konstituen.
Biaya, pemeliharaan, dan risiko hasil buruk menggunakan model JST semuanya melebihi solusi sederhana, berdasarkan aturan dan bos Anda mungkin akan menepuk punggung Anda hanya karena melakukan apa yang masuk akal di sini.
Jika Anda benar-benar serius menjaga server dan proses Anda berfungsi, saya sarankan Anda berinvestasi dalam layanan APM yang memberi Anda notifikasi real-time yang andal tentang apa yang terjadi di lingkungan produksi Anda.
Jika Anda hanya mencoba mempelajari cara kerja ANN - coba masalah lain. Dataset apa pun yang terkenal untuk klasifikasi atau pendeteksian anomali akan memberi Anda lebih banyak wawasan tentang cara kerja JST daripada dataset khusus, yang bisa sangat sulit dipaksakan ke dalam skema pembelajaran yang efektif.
sumber