Sekarang, akan dianalisis hasil dari eksperimen besar yang menggunakan unigram sebagai fiturnya, dengan metode txt_comp_dist
dan distance metric correlation
. Untuk setiap setting eksperimen, dilakukan 30 iterasi.
Import tools yang dibutuhkan dan atur agar matplotlib menggambar grafik secara inline.
In [1]:
import pandas as pd
import numpy as np
%matplotlib inline
Load hasil eksperimen dan tampilkan hasilnya.
In [2]:
df = pd.read_hdf('../reports/large-exp-uni-feat-corr-dist.h5', 'df')
In [3]:
df
Out[3]:
Hitung rata-rata hasil terhadap seluruh dataset.
In [4]:
df_agg = df.mean(axis=0).unstack(level='result')
In [5]:
df_agg
Out[5]:
Sedikit penjelasan, k
menyatakan banyaknya OOT posts yang terambil pada top list.
Agar lebih jelas, hasil pada tabel di atas akan disajikan dalam bentuk grafik. Pada grafik di bawah ini, warna biru dan hijau merepresentasikan baseline dan performa metode berturut-turut.
In [6]:
grouped = df_agg.groupby(level=['num_norm', 'num_oot', 'num_top'])
for name, group in grouped:
group.plot(kind='bar', legend=False, use_index=False, ylim=(0.,1.), title='num_norm={}, num_oot={}, num_top={}'.format(*name))
Dapat dilihat dari grafik di atas bahwa hasil eksperimen jauh lebih baik ketimbang baseline. Untuk lebih jelasnya lagi, akan lebih mudah apabila kita dapat menyatakan setiap distribusi/histogram dalam satu buah angka pengukuran. Untuk keperluan ini, angka pengukuran yang akan digunakan adalah expected value/rata-rata.
In [7]:
ngroup = len(grouped)
data = np.empty((ngroup, 2))
index = []
for i, (name, _) in enumerate(grouped):
tmp = df_agg.loc[name]
prod = tmp.T * np.array(tmp.index) # multiply pmf and support
expval = prod.sum(axis=1)
data[i, :] = expval.values
index.append(name)
In [8]:
index = pd.MultiIndex.from_tuples(index, names=['num_norm', 'num_oot', 'num_top'])
In [9]:
result = pd.DataFrame(data, index=index, columns=['base', 'perf'])
result.columns.name = 'E[X]'
In [10]:
result
Out[10]:
Tabel di atas menunjukkan expected value baseline dan hasil eksperimen dengan metode txt_comp_dist
untuk masing-masing kejadian acak. Terlihat bahwa hasil eksperimen dengan metode txt_comp_dist
jauh mengungguli baseline.