Dalam beberapa tahun terakhir, program telah tersebar luas yang mencoba memprediksi objek mana yang akan menarik bagi pengguna, dengan memiliki informasi tertentu tentang profilnya. Hingga tahun 2006, algoritme semacam itu tidak populer. Tapi itu semua berubah pada musim gugur 2006 ketika Netflix menawarkan pengembang $ 1.000.000 untuk algoritma prediksi terbaik. Kompetisi berlangsung selama 3 tahun.
Mari kita bicarakan hari ini tentang pengalaman kita dalam membangun sistem rekomendasi dalam pelatihan personel.
.
?
– 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')
.
. :
(, );
.
.
Algoritma rekomendasi ini diimplementasikan dalam mode percontohan (selama satu kuartal). MVP yang dibuat telah mencapai tingkat konversi target 25% yang ditetapkan oleh manajemen, yang memungkinkan kami untuk mengenalinya sebagai yang berhasil dan siap untuk diterapkan di industri.