Русский
Русский
English
Статистика
Реклама

Шаги построения рекомендательной системы в обучении персонала

Широкое распространение в последние годы получили программы, которые пытаются предсказать, какие объекты будут интересны пользователю, имея определенную информацию о его профиле. До 2006 года такие алгоритмы не пользовались популярностью. Но все изменилось осенью 2006 года, когда компания Netflix предложила разработчикам 1 000 000$ за лучший алгоритм предсказания. Конкурс продлился 3 года.

Расскажем сегодня о своем опыте построения рекомендательной системы в обучении персонала.

Сегодня в мире цифровых технологий большинство разработок используют в своей основе рекомендательные системы.

Почему?

Рекомендательные системы это современный пример успешного IT-инструмента для понимания интересов и предпочтений другого человека. В данном случае не важно знакомы вы или нет, работаете в одной компании или находитесь в разных уголках Земли. Любая рекомендательная система учится понимать человека на основании имеющейся о нем исходной информации у машины. Чем больше такой инфо, тем больше шансов, что проект будет интересен и не потеряет интерес своей аудитории.

Изначально рекомендательные системы использовались преимущественно для привлечения внешнего клиента и роста прибыли компаний. Сегодня их начали активно применять и для внутреннего клиента. Например, рекомендации обучающих курсов для развития персонала внутри компании.

Существует три основных класса рекомендательных систем

1. Content-based filtering (фильтрация контента).

В данной системе берется каждый сотрудник и машина анализирует его историю обучения, а также пул не пройденных им курсов. В число рекомендаций при этом попадут не пройденные курсы, которые похожи по содержанию на изученные ранее.

2. Collaborative filtering (коллаборативная фильтрация).

В данной системе искомому сотруднику предлагаются курсы к изучению, которые заинтересовали похожих на него коллег.

3. Гибридные системы, комбинирующие предыдущие подходы.

Оптимальный вариант сочетать оба типа фильтрации. Однако в реальности ввиду ограниченности исходных данных быстрее и легче внедрить рекомендательную систему, основанную на коллаборативной фильтрации.

Почему?

Модель работает в режиме офлайн. Система ориентирована на долгосрочный периметр изменений в предпочтениях Users. Как правило, такие изменения имеют под собой более весомые причины, чем сиюминутные предпочтения Users.

Отсутствуют оценки учебных курсов. В классическом варианте источником информации об учебном курсе для его включения в периметр рекомендаций служит средняя оценка (для ее формирования каждый сотрудник по окончании обучения выставляет курсу оценку в границах заданной шкалы). Чем выше средняя оценка, тем выше шанс, что курс будет рекомендован. Однако оценки есть не всегда

Достаточное количество features (кроме оценок) для поиска похожих Users.

Критериями поиска похожих Users внутри компании могут выступать:

должность / грейд (значение определено диапазоном);

вертикаль / направление работы сотрудника;

схожесть истории обучения;

квалификация (например, Data Analist, Data Engineer, Data Scientist);

возраст (вся численность сотрудников разделена на группы с заданным интервалом);

стаж (вся численность сотрудников разделена на группы с заданным интервалом).

Количество похожих Users и количество рекомендованных курсов также следует ограничить.

В нашей компании был опыт разработки MVP рекомендательной системы обучающих курсов, для включения в План развития сотрудников. Рекомендации формировались на основы матрицы корреляции Пирсона. Критериями поиска похожих Users выступали:

должность (-1, +2);

направление работы поиск был настроен по штатной принадлежности сотрудников к идентичному подразделению в разных филиалах России;

схожесть истории обучения похожими были установлены курсы по идентичности наименования;

квалификация в рамках нашей компании выделены только сотрудники категории Data Scientist;

возраст все сотрудники компании разделены на группы в интервале 5 лет (весь возрастной диапазон находится в промежутке от 20 лет и до 65);

стаж - все сотрудники компании разделены на группы в интервале 5 лет.

Количество похожих Users 3 человека.

Количество рекомендованных курсов 6 курсов (по 2 от каждого похожего User).

Язык построения алгоритма рекомендательной системы Python.

На первом этапе код отрабатывает исходные данные (DataSet), например, штатная численность компании в разрезе ФИО, история обучения каждого сотрудника и обязательно информация для отработки критериев поиска похожих Users.

На втором этапе код формирует матрицу корреляции и для каждого User машина подбирает 3 наиболее похожих Users по параметрам из списка выше.

# Проходим по строкам DataSetfor row in df:    corrMatr = df.corrwith(df[row])  # Функция корреляции матрицы    corrMatr = pd.DataFrame(corrMatr)    tempMatr = corrMatr  # Временная матрица    tempMatr = tempMatr.drop([row], axis=0)    li = list()    li2 = list()    print(row)    k = 0    while k < 6:        if len(tempMatr) == 0:  # Если количество строк tempMatr равно 0, выходим из цикла while            break        name = tempMatr.idxmax().item()  # Значение по индексу первого появления максимума в строке        dp = df3[df3['Tab'] == name].set_index('Tab')  # Получаем те строки из таблицы Обучение,            # в которых значение столбца Tab равно name        if name not in li2 and ((df[name]['pos'] <= df[row]['pos'] + 2 and df[name]['pos'] >= df[row]['pos'])):            # Если сотрудник еще не рассмотрен и подходит по должности            li2.append(name)            col_dp = dp.columns.tolist()  # Список столбцов рассматриваемого DataFrame            random.shuffle(col_dp)  # Перемешиваем строки            for yy in col_dp:  # Проходим по ним                if pd.DataFrame(df3[df3['Tab'] == name][yy]).reset_index()[yy][0] == 1 and \                    pd.DataFrame(df3[df3['Tab'] == row][yy]).reset_index()[yy][0] == 0 and \                        yy not in li and yy in df777['Курсы'].tolist():                    # Если курс еще не был включен в список предложенных                    recList.append([row, name, yy,                                    pd.DataFrame(df4[df4['Tab'] == row]['TB']).reset_index()['TB'][0], \                                    pd.DataFrame(df4[df4['Tab'] == name]['TB']).reset_index()['TB'][0], \                                    pd.DataFrame(df4[df4['Tab'] == row]['FIO']).reset_index()['FIO'][0], \                                    pd.DataFrame(df4[df4['Tab'] == name]['FIO']).reset_index()['FIO'][0]])                    k += 1                    li.append(yy)                    # Удаляем рассмотренного сотрудника из tempMatr                    tempMatr = tempMatr.drop([tempMatr.idxmax().item()], axis=0)                    break  # Выходим из цикла for        else:  # Удаляем рассмотренного сотрудника из tempMatr            tempMatr = tempMatr.drop([tempMatr.idxmax().item()], axis=0)# Заполняем результирующий DataFrame и выгружаем его в Excelrecomendations = recomendations.append(recList, ignore_index=True)recomendations.to_excel('итог.xlsx')

Схематично работу алгоритма при поиске учебного курса для включения в перечень рекомендаций можно увидеть на рисунке ниже.

На третьем этапе важно организовать доведение рекомендаций в удобном для сотрудника формате. К возможным и доступным формам корпоративного информирования можно отнести:

персональные рекомендации в личном кабинете сотрудника (например, на корпоративном портале или образовательной корпоративной платформе);

персональная рассылка писем по корпоративной почте.

Наша команда разработчиков остановились на использовании корпоративной почты.

Данный алгоритм рекомендаций был внедрен в пилотном режиме (на протяжении одного квартала). Созданный MVP достиг поставленного руководством целевого значения конверсии в 25%, что позволяет признать его успешным и готовым к внедрению в пром.

Источник: habr.com
К списку статей
Опубликовано: 26.02.2021 14:22:55
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Python

Программирование

Управление персоналом

Рекомендательная система

Обучение

Персонал

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru