In den letzten Jahren haben sich Programme verbreitet, die versuchen, vorherzusagen, welche Objekte für den Benutzer von Interesse sind, und bestimmte Informationen über sein Profil haben. Bis 2006 waren solche Algorithmen nicht beliebt. Dies änderte sich jedoch im Herbst 2006, als Netflix den Entwicklern 1.000.000 US-Dollar für den besten Vorhersagealgorithmus anbot. Der Wettbewerb dauerte 3 Jahre.
Lassen Sie uns heute über unsere Erfahrungen beim Aufbau eines Empfehlungssystems in der Personalschulung sprechen.
.
?
– 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')
.
. :
(, );
.
.
Dieser Empfehlungsalgorithmus wurde in einem Pilotmodus (während eines Quartals) implementiert. Das erstellte MVP hat die vom Management festgelegte Conversion-Rate von 25% erreicht, wodurch wir es als erfolgreich und bereit für die Implementierung in der Branche erkennen können.