Ответ 1
Здесь приведен простой подход к проблеме с машиной, и я бы это сделал, чтобы приступить к этой проблеме и разработать базовый классификатор:
Создайте кучу скриптов и прикрепите ярлык "good" (label = 0) или "bad" (label = 1), тем лучше. Постарайтесь обеспечить, чтобы "плохие" сценарии были разумной долей всего тела, 50-50 good/bad идеально.
Разработка двоичных функций, которые указывают на подозрительные или плохие сценарии. Например, наличие "eval", наличие "base64_decode". Как всеобъемлющий, как вы можете быть, и не бойтесь вникать в аффект, который мог бы захватить некоторые "хорошие" сценарии. Один из способов помочь это может состоять в том, чтобы рассчитать частоту отсчетов слов в двух классах script и выбрать в качестве функций слова, которые видны в "плохом", но менее заметном в "хорошем".
Запустите генератор функций над корпусом и создайте двоичную матрицу функций с метками.
Разделить корпус на поезд (80% примеров) и наборы тестов (20%). Используя библиотеку изучения scikit, подготовьте несколько различных алгоритмов классификации (случайные леса, машины поддержки векторов, наивные заливы и т.д.) С набором тренировок и проверьте их производительность на невидимом тестовом наборе.
Надеюсь, у меня есть разумная точность классификации для сравнения. Затем я хотел бы улучшить функции, некоторые неконтролируемые методы (без меток) и более специализированные алгоритмы для повышения производительности.
Для ресурсов курс Эндрю Нг Курсера по компьютерному обучению (который, как мне кажется, включает пример классификации спама) - это хорошее начало.