Ces dernières années, des programmes se sont généralisés qui tentent de prédire quels objets intéresseront l'utilisateur, ayant certaines informations sur son profil. Jusqu'en 2006, ces algorithmes n'étaient pas populaires. Mais tout a changé à l'automne 2006 lorsque Netflix a offert aux développeurs 1 000 000 $ pour le meilleur algorithme de prédiction. La compétition a duré 3 ans.
Parlons aujourd'hui de notre expérience dans la construction d'un système de recommandation en formation du personnel.
.
?
– 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')
.
. :
(, );
.
.
Cet algorithme de recommandation a été implémenté en mode pilote (pendant un trimestre). Le MVP créé a atteint le taux de conversion cible de 25% fixé par la direction, ce qui nous permet de le reconnaître comme réussi et prêt à être mis en œuvre dans l'industrie.