Etapas para a construção de um sistema de recomendação no treinamento de pessoal

Nos últimos anos, têm se difundido programas que tentam prever quais objetos serão do interesse do usuário, tendo certas informações sobre seu perfil. Até 2006, esses algoritmos não eram populares. Mas tudo isso mudou no outono de 2006, quando a Netflix ofereceu aos desenvolvedores US $ 1.000.000 pelo melhor algoritmo de previsão. A competição durou 3 anos.





Vamos falar hoje sobre nossa experiência na construção de um sistema de recomendação em treinamento de pessoal.





.





?

– 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')
      
      



.





. :





  • (, );





  • .





.





Este algoritmo de recomendação foi implementado em modo piloto (durante um trimestre). O MVP criado atingiu a meta de taxa de conversão de 25% definida pela administração, o que nos permite reconhecê-lo como bem-sucedido e pronto para implementação na indústria.








All Articles