Как сегментировать и классифицировать журналы событий, сгенерированные из действий пользователя на P C? - PullRequest
0 голосов
/ 01 мая 2020

Итак, я делаю проект, в котором я должен классифицировать журналы, созданные программой, разработанной компанией. Программа работает на ОС windows, собирает данные об активности пользователей и генерирует файлы журналов, которые выглядят следующим образом:

"activity":{
  "probe": "PROCESS_PROBE",
  "status": "ProcessCreated",
  "processName": "backgroundTaskHost.exe",
  "path": "C:\\WINDOWS\\system32\\backgroundTaskHost.exe",
  "creationClassName": "Win32_Process",
  "handle": "1940",
  "priority": "Normal",
  "commandLine": "\"C:\\WINDOWS\\system32\\backgroundTaskHost.exe\" -ServerName:CortanaUI.AppXy7vb4pc2dr3kc93kfc509b1d0arkfb2x.mca",
  "handleCount": 236,
  "processId": 1940,
  "parentProcessId": 124,
  "pageFileUsage": 4188,
  "creationDate": "20200413164335.643711+120",
  "annotations": {
    "userName": "datta",
    "timeSinceStartup": 230474796,
    "ticksOfEvent": 637223930160294317
  }
},
"activity":{
  "probe": "PROCESS_PROBE",
  "status": "ProcessCreated",
  "processName": "dllhost.exe",
  "path": "C:\\WINDOWS\\system32\\DllHost.exe",
  "creationClassName": "Win32_Process",
  "handle": "18048",
  "priority": "Normal",
  "commandLine": "C:\\WINDOWS\\system32\\DllHost.exe /Processid:{7966B4D8-4FDC-4126-A10B-39A3209AD251}",
  "handleCount": 132,
  "processId": 18048,
  "parentProcessId": 124,
  "pageFileUsage": 1808,
  "creationDate": "20200413164336.238890+120",
  "annotations": {
    "userName": "datta",
    "timeSinceStartup": 230475859,
    "ticksOfEvent": 637223930170876513
  }
},
"activity":{
  "probe": "FILERESOURCE_PROBE",
  "status": "Changed",
  "path": "C:\\Users\\datta",
  "entityName": "Internship",
  "extension": "",
  "attributes": "Directory",
  "owner": "null",
  "length": 0,
  "isReadOnly": false,
  "creationTime": "2020-03-18T16:15:32.0377931+01:00",
  "lastWriteTime": "2020-03-18T16:24:16.6020195+01:00",
  "lastAccessTime": "2020-04-13T16:43:37.3722167+02:00",
  "annotations": {
    "userName": "datta",
    "timeSinceStartup": 230476156,
    "ticksOfEvent": 637223930173876891
  }
}
}

Моя цель - использовать эти данные для создания моделей процессов деятельности компании, которые можно использовать для управление бизнес-процессами для поиска узких мест в бизнес-процессах и их оптимизации. Итак, в основном я должен использовать сгенерированные журналы и абстрагироваться от выполняемой пользователем активности более высокого уровня. Например, моя программа должна иметь возможность просматривать журнал событий и получать такие действия, как «Написание отчета», «Отправка отчета менеджеру» и т. Д. c.

Итак, мой подход заключался в том, чтобы абстрагировать некоторые простые действия, такие как «Открытие Chrome», «Создание новой папки», «Удаление папки», открыв программу, затем выполнив простое действие и закрыв програмное обеспечение. Затем для каждого из простых действий я создал несколько сотен файлов журналов. Затем я попытался извлечь содержимое каждого файла журнала в большую строку и сохранить его в кадре данных с его известной меткой.

enter image description here

Я использовал несколько Классификаторы, такие как Классификатор Мультивного Наивного Байеса, Линейный SV C, Случайный Лес и Логистический c регрессия для обучения данных журнала с метками событий. И я получил довольно хорошие результаты теста. Но проблема в том, что мой подход явно не правильный. Поскольку я сгенерировал эти отдельные файлы журнала, специально выполнив простое действие, а затем закрыв программу. В реальной жизни пользователь будет выполнять несколько действий одновременно, и каждый файл журнала будет содержать журналы перекрывающихся действий. Мне нужно сегментировать строки журнала из файлов журнала в соответствии с активностью, которой они принадлежат, и пометить их именем действия. Я не уверен, как это сделать.

Буду очень признателен за ваши предложения и ваш опыт в этом вопросе. Спасибо.

...