[Python, Программирование, Управление персоналом] Шаги построения рекомендательной системы в обучении персонала
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Широкое распространение в последние годы получили программы, которые пытаются предсказать, какие объекты будут интересны пользователю, имея определенную информацию о его профиле. До 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 по параметрам из списка выше.
# Проходим по строкам DataSet
for 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 и выгружаем его в Excel
recomendations = recomendations.append(recList, ignore_index=True)
recomendations.to_excel('итог.xlsx')
Схематично работу алгоритма при поиске учебного курса для включения в перечень рекомендаций можно увидеть на рисунке ниже.
На третьем этапе важно организовать доведение рекомендаций в удобном для сотрудника формате. К возможным и доступным формам корпоративного информирования можно отнести:· персональные рекомендации в личном кабинете сотрудника (например, на корпоративном портале или образовательной корпоративной платформе);· персональная рассылка писем по корпоративной почте.Наша команда разработчиков остановились на использовании корпоративной почты.Данный алгоритм рекомендаций был внедрен в пилотном режиме (на протяжении одного квартала). Созданный MVP достиг поставленного руководством целевого значения конверсии в 25%, что позволяет признать его успешным и готовым к внедрению в пром.
===========
Источник:
habr.com
===========
Похожие новости:
- [Управление персоналом, Карьера в IT-индустрии] Где работать в ИТ в 2021: Lad
- [Python, Программирование, Анализ и проектирование систем, Интерфейсы, Go] Порт GUI фреймворка с Python на Go. Анализ граблей и плюшек
- [Ненормальное программирование, Программирование, Машинное обучение] Бонус работы аналитиком данных: Как я нашел свой новый дом в Дублине (перевод)
- [Информационная безопасность, Машинное обучение] Chatbox on Top of SIEM Solution
- [Разработка веб-сайтов, PHP, Программирование, Проектирование и рефакторинг] Run, config, run: как мы ускорили деплой конфигов в Badoo
- [Разработка веб-сайтов, JavaScript, Программирование, ReactJS] Разрабатываем чат на React с использованием Socket.IO
- [Python, Программирование] Сохранение сюжетов matplotlib в pdf файл
- [Программирование, Управление персоналом, Карьера в IT-индустрии, Читальный зал] Компульсивная жизнь разработчиков ПО или Почему весь кодинг немного навязчивый? (перевод)
- [Информационная безопасность, Системное администрирование, Программирование, API] Подтверждение номеров телефона без SMS
- [Управление персоналом, Карьера в IT-индустрии] Дайджест событий для эйчаров и рекрутеров в IT на март 2021
Теги для поиска: #_python, #_programmirovanie (Программирование), #_upravlenie_personalom (Управление персоналом), #_rekomendatelnaja_sistema (рекомендательная система), #_obuchenie (обучение), #_personal (персонал), #_python, #_programmirovanie (
Программирование
), #_upravlenie_personalom (
Управление персоналом
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:24
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Широкое распространение в последние годы получили программы, которые пытаются предсказать, какие объекты будут интересны пользователю, имея определенную информацию о его профиле. До 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 по параметрам из списка выше. # Проходим по строкам DataSet
for 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 и выгружаем его в Excel recomendations = recomendations.append(recList, ignore_index=True) recomendations.to_excel('итог.xlsx') На третьем этапе важно организовать доведение рекомендаций в удобном для сотрудника формате. К возможным и доступным формам корпоративного информирования можно отнести:· персональные рекомендации в личном кабинете сотрудника (например, на корпоративном портале или образовательной корпоративной платформе);· персональная рассылка писем по корпоративной почте.Наша команда разработчиков остановились на использовании корпоративной почты.Данный алгоритм рекомендаций был внедрен в пилотном режиме (на протяжении одного квартала). Созданный MVP достиг поставленного руководством целевого значения конверсии в 25%, что позволяет признать его успешным и готовым к внедрению в пром. =========== Источник: habr.com =========== Похожие новости:
Программирование ), #_upravlenie_personalom ( Управление персоналом ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:24
Часовой пояс: UTC + 5