Kali ini, setelah melakukan eksperimen kecil ulang, akan dilakukan analisis terhadap hasil eksperimen untuk menentukan metode dan distance metric mana yang paling baik. Sebelumnya, hanya digunakan distance metric cityblock
dan euclidean
, sedangkan sekarang ada tambahan 2 metric lagi: cosine
dan correlation
. Tentang correlation
dapat dilihat di sini.
Pertama-tama, load tools yang dibutuhkan.
In [1]:
import numpy as np
import pandas as pd
%matplotlib inline
Selanjutnya, load hasil eksperimen dan tampilkan hasilnya.
In [2]:
df = pd.read_hdf('../reports/small-exp-combined.h5', 'df')
In [3]:
df
Out[3]:
Rata-ratakan hasil terhadap seluruh setting eksperimen, kecuali metode, karena akan dilihat metode mana yang paling bagus.
In [4]:
df_agg = df.groupby(level='method').mean()
In [5]:
df_agg
Out[5]:
Selanjutnya, akan diplot grafik dari tabel di atas. Sebelumnya, buang baseline karena tidak dibutuhkan.
In [6]:
df_plot = df_agg.drop('base', axis=1, level='result')
In [7]:
df_plot
Out[7]:
Lalu, plot grafik.
In [8]:
df_plot.T.plot(kind='bar', use_index=False, ylim=(0.,1.))
Out[8]:
Dari grafik di atas, sudah cukup terlihat bahwa metode txt_comp_dist
cukup unggul dibanding kedua metode lainnya. Untuk memperjelas, akan dihitung expected value untuk masing-masing metode sehingga untuk membandingkan ketiga metode cukup dilihat metode mana yang expected value-nya paling besar.
In [9]:
df_tmp = df_plot * np.arange(4)
In [10]:
df_tmp
Out[10]:
In [11]:
result = df_tmp.sum(axis=1, level='result')
In [12]:
result
Out[12]:
Dari tabel di atas, terlihat bahwa metode txt_comp_dist
unggul dibanding metode lainnya.
Berikutnya, akan dicari distance metric apa yang paling baik. Tahapnya sama:
In [13]:
df_agg = df.groupby(level='metric').mean()
In [14]:
df_agg
Out[14]:
In [15]:
df_plot = df_agg.drop('base', axis=1, level='result')
In [16]:
df_plot
Out[16]:
In [17]:
df_plot.T.plot(kind='bar', use_index=False, ylim=(0.,1.))
Out[17]:
Dari grafik di atas terlihat bahwa distance metric cosine
dan correlation
mengungguli kedua distance metric lainnya. Selanjutnya, akan dihitung expected value untuk masing-masing distance metric.
In [18]:
df_tmp = df_plot * np.arange(4)
In [19]:
df_tmp
Out[19]:
In [20]:
result = df_tmp.sum(axis=1, level='result')
In [21]:
result
Out[21]:
Dari hasil ini, jelas bahwa distance metric correlation
adalah yang terbaik.
Kesimpulan dari analisis ini adalah kita telah mendapatkan metode txt_comp_dist
dan distance metric correlation
adalah metode dan distance metric terunggul berturut-turut.