Формирование обучающей выборки
На рис. 1 представлен график количества увольнений по датам. Максимальное количество увольнений за день не превышает 124 человек. Судя по всему, в систему заносились данные об увольнении не сразу после подписания о расторжении трудового договора, а после определенных событий, предпосылки которых автору данной магистерской не известны. Стоит отметить что 124 человека за день — это максимальное… Читать ещё >
Формирование обучающей выборки (реферат, курсовая, диплом, контрольная)
Обучающая выборка необходима для моделей Data Mining предполагающих использование учителя (например — C4.5). В процессе формирования обучающей выборки из первоначальной базы данных извлекаются неподготовленные данные, подготавливаются и только затем заносятся в алгоритм C4.5 или используются в наивном Байесовском классификаторе как первоначальный источник представителей классов.
Некоторые метрики относительно не сложно извлечь — такие как перенос графика рабочего времени, количество отклонений прошений о переносе рабочего времени или количества командировок. Иначе говоря, просто подсчет количества для каждого сотрудника. Такие метрики не требуют большой вычислительной мощи и большого количества времени для обработок.
Некоторые метрики наоборот потребуют значительных усилий для извлечения. Например, отклонения от времени прихода или ухода с рабочего времени по заданному графику. Проблема заключается в том, что эти данные весьма динамичны и заносятся в базу данных каждый день для каждого пользователя и при чем не по разу (сотрудник может выйти днем за пределы компании). Дополнительно график рабочего времени тоже относительно не является постоянным и может меняться. Это содержится в таблицах с действующими отклонениями от расписания и текущем расписании, распределенном по дням недели.
В исследуемой базе данных имеется:
- · 4 045 — всего сотрудников (независимо о статусе уволен или нет).
- · 12 248 — расписаний для сотрудников (как было указано ранее — сотрудник мог их изменять и ходить на работу по новому расписанию).
- · 1 038 784 — отклонений в расписании. Достаточно большое количество отклонений, которые нужно учитывать при немаленьком количестве расписаний.
- · 4 363 934 — общее количество входов и выходов для сотрудников. Для каждого необходимо вычислить текущее расписание по дням недели с учетом возможного отклонения.
К сожалению данные метрики вычислить в домашних условиях не удается из-за большого количества вычислений, но скорее всего эти метрики являются наиболее объективными.
Для использования в реальных условиях рекомендуется обязательно включить в список данные метрики. Для их извлечения можно воспользоваться следующим T-SQL кодом (Листинг 1):
declare some_cursor cursor.
for.
SELECT [user_id].
[working_day].
FROM [wt]. [dbo]. [working_days].
WHERE [time_in] IS NULL AND [time_out] IS NULL AND [working_day] IS NOT NULL.
open some_cursor.
declare @user_id int, @working_day date.
fetch next from some_cursor INTO @user_id, @working_day.
while @@FETCH_STATUS = 0.
begin.
INSERT INTO [wt]. [dbo]. [working_day_temporary] (time_in, time_out).
SELECT.
CONVERT (TIME (0), [date_in]) as time_in.
CONVERT (TIME (0), [date_out]) as time_out.
FROM [wt]. [dbo]. [t_workhours] WHERE [user_id] = @user_id AND.
CONVERT (DATE, [date_in]) = CONVERT (DATE, @working_day) AND.
CONVERT (DATE, [date_out]) = CONVERT (DATE, @working_day).
UPDATE [wt]. [dbo]. [working_days].
SET.
[time_in] = (SELECT MIN ([time_in]) AS [time_in] FROM [wt]. [dbo]. [working_day_temporary]).
[time_out] = (SELECT MAX ([time_out]) AS [time_out] FROM [wt]. [dbo]. [working_day_temporary]).
[count_enter] = (SELECT COUNT (DISTINCT [time_in]) as count_enter FROM [wt]. [dbo]. [working_day_temporary]).
WHERE [wt]. [dbo]. [working_days]. [working_day] = @working_day.
AND [wt]. [dbo]. [working_days]. [user_id] = @user_id.
DELETE FROM [wt]. [dbo]. [working_day_temporary].
fetch next from some_cursor INTO @user_id, @working_day.
end.
close some_cursor.
deallocate some_cursor.
Листинг 1. Извлечение метрик Еще один вариант работы со сложными метриками — записывать в базу данных сразу готовые метрики, для того что бы снизить нагрузка на процесс вычисления их.
Стоить заметить, что у компании наблюдались массовые увольнения и необходимо их также рассмотреть. Проанализировав даты увольнений был получен следующий график (см. рис. 1):
Рисунок 1. График количества увольнений по датам.
На рис. 1 представлен график количества увольнений по датам. Максимальное количество увольнений за день не превышает 124 человек. Судя по всему, в систему заносились данные об увольнении не сразу после подписания о расторжении трудового договора, а после определенных событий, предпосылки которых автору данной магистерской не известны. Стоит отметить что 124 человека за день — это максимальное количество увольнений за день, следующее по величине увольнений — всего 34 человека. Это еще раз свидетельствует, о том, что данные об увольнении заносились не сразу после непосредственного ухода сотрудника, а позже.
Следует ли очищать данные всплески из выборки и по-особому обрабатывать? Ответ скорее не следует, чем следует:
- · Данные об увольнении сотрудников заносились не сразу после увольнения, а порой большими пачками из-за этого невозможно будет определить где действительно ушло сразу большое количество сотрудников по странным причинам, а где — просто только сейчас занесли данные об увольнениях.
- · В базе данных не различаются увольнения по собственному желанию и по принудительному расходу. Невозможно интерпретировать где и какой всплеск увольнений был.
- · За числовыми данными в базе данных хранятся поступки людей, которые, возможно, массово отклоняться от привычной нормы. Эти данные возможно лучше всего отразятся как раз в всплесках увольнений в базе данных.
Следовательно, принимаем текущую базу данных как есть и не считаем всплески увольнении чем-то аномальным.
Важное замечание — часть сотрудников (каждый 200 из базы данных) не входит в первоначальную выборку. Это связанно с тем, что необходима тестовая выборка для проверки моделей Data Mining. Благодаря данной тестовой выборке появляется возможность проверить составленный прототип и сделать выводы об эффективности применения методов Data Mining в данной области.