Pada notebook ini, akan dianalisis hasil eksperimen dengan membatasi banyak fitur yang digunakan, i.e. hanya top sekian most frequent unigrams di thread tersebut. Sekedar pengingat, metode yang digunakan adalah txt_comp_dist
, fitur unigram, distance metric correlation
, dan untuk setiap konfigurasi eksperimen dilakukan iterasi sebanyak 30 kali.
Import tools yang dibutuhkan dan atur agar matplotlib menggambar grafik secara inline.
In [1]:
import numpy as np
import pandas as pd
%matplotlib inline
Load hasil eksperimen dan tampilkan hasilnya.
In [2]:
df = pd.read_hdf('../reports/large-exp-uni-lim-feat.h5', 'df')
In [3]:
df
Out[3]:
num_norm
10
...
80
num_oot
1
...
8
num_top
1
3
5
...
5
result
base
perf
base
perf
base
...
base
perf
k
0
1
0
1
0
1
0
1
0
1
...
2
3
4
5
0
1
2
3
4
5
method
feature
max_features
metric
norm_dir
oot_dir
txt_comp_dist
unigram
7
correlation
bbs152930
bbs57549
0.909091
0.090909
0.866667
0.133333
0.727273
0.272727
0.500000
0.500000
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
mus10142
0.909091
0.090909
0.966667
0.033333
0.727273
0.272727
0.733333
0.266667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
phy40008
0.909091
0.090909
0.866667
0.133333
0.727273
0.272727
0.466667
0.533333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
phy17301
bbs57549
0.909091
0.090909
0.766667
0.233333
0.727273
0.272727
0.866667
0.133333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
mus10142
0.909091
0.090909
0.866667
0.133333
0.727273
0.272727
0.966667
0.033333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
phy40008
0.909091
0.090909
0.766667
0.233333
0.727273
0.272727
0.566667
0.433333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
mus1139
bbs57549
0.909091
0.090909
0.866667
0.133333
0.727273
0.272727
0.366667
0.633333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
mus10142
0.909091
0.090909
0.966667
0.033333
0.727273
0.272727
0.700000
0.300000
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
phy40008
0.909091
0.090909
0.633333
0.366667
0.727273
0.272727
0.533333
0.466667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
20
correlation
bbs152930
bbs57549
0.909091
0.090909
0.733333
0.266667
0.727273
0.272727
0.500000
0.500000
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.933333
0.066667
0.000000
0.000000
0.000000
0
mus10142
0.909091
0.090909
0.966667
0.033333
0.727273
0.272727
0.733333
0.266667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
phy40008
0.909091
0.090909
0.333333
0.666667
0.727273
0.272727
0.533333
0.466667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.966667
0.033333
0.000000
0.000000
0.000000
0
phy17301
bbs57549
0.909091
0.090909
0.666667
0.333333
0.727273
0.272727
0.633333
0.366667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
mus10142
0.909091
0.090909
0.933333
0.066667
0.727273
0.272727
0.866667
0.133333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
phy40008
0.909091
0.090909
0.433333
0.566667
0.727273
0.272727
0.433333
0.566667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
mus1139
bbs57549
0.909091
0.090909
0.600000
0.400000
0.727273
0.272727
0.333333
0.666667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
mus10142
0.909091
0.090909
0.966667
0.033333
0.727273
0.272727
0.833333
0.166667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
phy40008
0.909091
0.090909
0.233333
0.766667
0.727273
0.272727
0.166667
0.833333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
50
correlation
bbs152930
bbs57549
0.909091
0.090909
0.933333
0.066667
0.727273
0.272727
0.166667
0.833333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.400000
0.166667
0.166667
0.166667
0.100000
0
mus10142
0.909091
0.090909
1.000000
0.000000
0.727273
0.272727
0.466667
0.533333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.733333
0.200000
0.000000
0.000000
0.066667
0
phy40008
0.909091
0.090909
0.566667
0.433333
0.727273
0.272727
0.166667
0.833333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.400000
0.133333
0.233333
0.133333
0.100000
0
phy17301
bbs57549
0.909091
0.090909
0.200000
0.800000
0.727273
0.272727
0.066667
0.933333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.933333
0.033333
0.033333
0.000000
0.000000
0
mus10142
0.909091
0.090909
0.500000
0.500000
0.727273
0.272727
0.266667
0.733333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
phy40008
0.909091
0.090909
0.133333
0.866667
0.727273
0.272727
0.033333
0.966667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.900000
0.100000
0.000000
0.000000
0.000000
0
mus1139
bbs57549
0.909091
0.090909
0.266667
0.733333
0.727273
0.272727
0.033333
0.966667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
mus10142
0.909091
0.090909
0.800000
0.200000
0.727273
0.272727
0.666667
0.333333
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
phy40008
0.909091
0.090909
0.066667
0.933333
0.727273
0.272727
0.033333
0.966667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
1.000000
0.000000
0.000000
0.000000
0.000000
0
100
correlation
bbs152930
bbs57549
0.909091
0.090909
0.333333
0.666667
0.727273
0.272727
0.000000
1.000000
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.300000
0.033333
0.400000
0.266667
0.000000
0
mus10142
0.909091
0.090909
0.766667
0.233333
0.727273
0.272727
0.100000
0.900000
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.233333
0.133333
0.266667
0.300000
0.066667
0
phy40008
0.909091
0.090909
0.300000
0.700000
0.727273
0.272727
0.033333
0.966667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.266667
0.000000
0.100000
0.500000
0.133333
0
phy17301
bbs57549
0.909091
0.090909
0.166667
0.833333
0.727273
0.272727
0.000000
1.000000
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.233333
0.300000
0.400000
0.066667
0.000000
0
mus10142
0.909091
0.090909
0.566667
0.433333
0.727273
0.272727
0.033333
0.966667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.266667
0.200000
0.266667
0.166667
0.100000
0
phy40008
0.909091
0.090909
0.166667
0.833333
0.727273
0.272727
0.033333
0.966667
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.333333
0.266667
0.266667
0.133333
0.000000
0
mus1139
bbs57549
0.909091
0.090909
0.266667
0.733333
0.727273
0.272727
0.000000
1.000000
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.433333
0.166667
0.300000
0.066667
0.033333
0
mus10142
0.909091
0.090909
0.900000
0.100000
0.727273
0.272727
0.500000
0.500000
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.666667
0.300000
0.033333
0.000000
0.000000
0
phy40008
0.909091
0.090909
0.266667
0.733333
0.727273
0.272727
0.000000
1.000000
0.545455
0.454545
...
0.058722
0.004517
0.000143
0.000001
0.566667
0.133333
0.166667
0.100000
0.033333
0
36 rows × 116 columns
Lakukan agregasi hasil dan tampilkan hasilnya.
In [4]:
df_agg = df.groupby(level='max_features').mean().T.unstack(level='result')
In [5]:
df_agg
Out[5]:
max_features
7
20
50
100
result
base
perf
base
perf
base
perf
base
perf
num_norm
num_oot
num_top
k
10
1
1
0
0.909091
0.840741
0.909091
0.651852
0.909091
0.496296
0.909091
0.414815
1
0.090909
0.159259
0.090909
0.348148
0.090909
0.503704
0.090909
0.585185
3
0
0.727273
0.633333
0.727273
0.559259
0.727273
0.211111
0.727273
0.077778
1
0.272727
0.366667
0.272727
0.440741
0.272727
0.788889
0.272727
0.922222
5
0
0.545455
0.555556
0.545455
0.451852
0.545455
0.170370
0.545455
0.022222
1
0.454545
0.444444
0.454545
0.548148
0.454545
0.829630
0.454545
0.977778
4
1
0
0.714286
0.614815
0.714286
0.433333
0.714286
0.348148
0.714286
0.329630
1
0.285714
0.385185
0.285714
0.566667
0.285714
0.651852
0.285714
0.670370
3
0
0.329670
0.388889
0.329670
0.177778
0.329670
0.077778
0.329670
0.025926
1
0.494505
0.259259
0.494505
0.255556
0.494505
0.248148
0.494505
0.244444
2
0.164835
0.285185
0.164835
0.418519
0.164835
0.511111
0.164835
0.500000
3
0.010989
0.066667
0.010989
0.148148
0.010989
0.162963
0.010989
0.229630
5
0
0.125874
0.307407
0.125874
0.111111
0.125874
0.048148
0.125874
0.007407
1
0.419580
0.203704
0.419580
0.237037
0.419580
0.133333
0.419580
0.085185
2
0.359640
0.218519
0.359640
0.211111
0.359640
0.270370
0.359640
0.203704
3
0.089910
0.140741
0.089910
0.307407
0.089910
0.381481
0.089910
0.348148
4
0.004995
0.129630
0.004995
0.133333
0.004995
0.166667
0.004995
0.355556
8
1
0
0.555556
0.714815
0.555556
0.485185
0.555556
0.355556
0.555556
0.385185
1
0.444444
0.285185
0.444444
0.514815
0.444444
0.644444
0.444444
0.614815
3
0
0.147059
0.266667
0.147059
0.222222
0.147059
0.129630
0.147059
0.025926
1
0.441176
0.248148
0.441176
0.225926
0.441176
0.225926
0.441176
0.288889
2
0.343137
0.337037
0.343137
0.340741
0.343137
0.381481
0.343137
0.477778
3
0.068627
0.148148
0.068627
0.211111
0.068627
0.262963
0.068627
0.207407
5
0
0.029412
0.166667
0.029412
0.088889
0.029412
0.040741
0.029412
0.018519
1
0.196078
0.144444
0.196078
0.140741
0.196078
0.155556
0.196078
0.092593
2
0.392157
0.207407
0.392157
0.237037
0.392157
0.188889
0.392157
0.174074
3
0.294118
0.211111
0.294118
0.188889
0.294118
0.274074
0.294118
0.288889
4
0.081699
0.225926
0.081699
0.259259
0.081699
0.262963
0.081699
0.340741
5
0.006536
0.044444
0.006536
0.085185
0.006536
0.077778
0.006536
0.085185
80
1
1
0
0.987654
1.000000
0.987654
0.996296
0.987654
0.996296
0.987654
0.959259
1
0.012346
0.000000
0.012346
0.003704
0.012346
0.003704
0.012346
0.040741
3
0
0.962963
1.000000
0.962963
0.996296
0.962963
0.951852
0.962963
0.907407
1
0.037037
0.000000
0.037037
0.003704
0.037037
0.048148
0.037037
0.092593
5
0
0.938272
1.000000
0.938272
0.996296
0.938272
0.874074
0.938272
0.762963
1
0.061728
0.000000
0.061728
0.003704
0.061728
0.125926
0.061728
0.237037
4
1
0
0.952381
1.000000
0.952381
0.996296
0.952381
0.977778
0.952381
0.848148
1
0.047619
0.000000
0.047619
0.003704
0.047619
0.022222
0.047619
0.151852
3
0
0.862264
1.000000
0.862264
0.996296
0.862264
0.855556
0.862264
0.648148
1
0.132656
0.000000
0.132656
0.003704
0.132656
0.122222
0.132656
0.270370
2
0.005038
0.000000
0.005038
0.000000
0.005038
0.022222
0.005038
0.070370
3
0.000042
0.000000
0.000042
0.000000
0.000042
0.000000
0.000042
0.011111
5
0
0.778699
1.000000
0.778699
0.996296
0.778699
0.811111
0.778699
0.481481
1
0.204921
0.000000
0.204921
0.003704
0.204921
0.148148
0.204921
0.251852
2
0.015968
0.000000
0.015968
0.000000
0.015968
0.025926
0.015968
0.222222
3
0.000409
0.000000
0.000409
0.000000
0.000409
0.014815
0.000409
0.040741
4
0.000003
0.000000
0.000003
0.000000
0.000003
0.000000
0.000003
0.003704
8
1
0
0.909091
1.000000
0.909091
1.000000
0.909091
0.940741
0.909091
0.837037
1
0.090909
0.000000
0.090909
0.000000
0.090909
0.059259
0.090909
0.162963
3
0
0.748706
1.000000
0.748706
1.000000
0.748706
0.825926
0.748706
0.481481
1
0.230371
0.000000
0.230371
0.000000
0.230371
0.107407
0.230371
0.351852
2
0.020413
0.000000
0.020413
0.000000
0.020413
0.066667
0.020413
0.140741
3
0.000510
0.000000
0.000510
0.000000
0.000510
0.000000
0.000510
0.025926
5
0
0.613645
1.000000
0.613645
0.988889
0.613645
0.818519
0.613645
0.366667
1
0.322971
0.000000
0.322971
0.011111
0.322971
0.070370
0.322971
0.170370
2
0.058722
0.000000
0.058722
0.000000
0.058722
0.048148
0.058722
0.244444
3
0.004517
0.000000
0.004517
0.000000
0.004517
0.033333
0.004517
0.177778
4
0.000143
0.000000
0.000143
0.000000
0.000143
0.029630
0.000143
0.040741
5
0.000001
0.000000
0.000001
0.000000
0.000001
0.000000
0.000001
0.000000
Selanjutnya, tabel di atas akan disajikan dalam bentuk grafik. Sebelumnya, buang dulu kolom yang tidak dibutuhkan/redundan.
In [6]:
df_plot = df_agg.copy()
del df_plot[(20,'base')]
del df_plot[(50,'base')]
del df_plot[(100,'base')]
In [7]:
df_plot
Out[7]:
max_features
7
20
50
100
result
base
perf
perf
perf
perf
num_norm
num_oot
num_top
k
10
1
1
0
0.909091
0.840741
0.651852
0.496296
0.414815
1
0.090909
0.159259
0.348148
0.503704
0.585185
3
0
0.727273
0.633333
0.559259
0.211111
0.077778
1
0.272727
0.366667
0.440741
0.788889
0.922222
5
0
0.545455
0.555556
0.451852
0.170370
0.022222
1
0.454545
0.444444
0.548148
0.829630
0.977778
4
1
0
0.714286
0.614815
0.433333
0.348148
0.329630
1
0.285714
0.385185
0.566667
0.651852
0.670370
3
0
0.329670
0.388889
0.177778
0.077778
0.025926
1
0.494505
0.259259
0.255556
0.248148
0.244444
2
0.164835
0.285185
0.418519
0.511111
0.500000
3
0.010989
0.066667
0.148148
0.162963
0.229630
5
0
0.125874
0.307407
0.111111
0.048148
0.007407
1
0.419580
0.203704
0.237037
0.133333
0.085185
2
0.359640
0.218519
0.211111
0.270370
0.203704
3
0.089910
0.140741
0.307407
0.381481
0.348148
4
0.004995
0.129630
0.133333
0.166667
0.355556
8
1
0
0.555556
0.714815
0.485185
0.355556
0.385185
1
0.444444
0.285185
0.514815
0.644444
0.614815
3
0
0.147059
0.266667
0.222222
0.129630
0.025926
1
0.441176
0.248148
0.225926
0.225926
0.288889
2
0.343137
0.337037
0.340741
0.381481
0.477778
3
0.068627
0.148148
0.211111
0.262963
0.207407
5
0
0.029412
0.166667
0.088889
0.040741
0.018519
1
0.196078
0.144444
0.140741
0.155556
0.092593
2
0.392157
0.207407
0.237037
0.188889
0.174074
3
0.294118
0.211111
0.188889
0.274074
0.288889
4
0.081699
0.225926
0.259259
0.262963
0.340741
5
0.006536
0.044444
0.085185
0.077778
0.085185
80
1
1
0
0.987654
1.000000
0.996296
0.996296
0.959259
1
0.012346
0.000000
0.003704
0.003704
0.040741
3
0
0.962963
1.000000
0.996296
0.951852
0.907407
1
0.037037
0.000000
0.003704
0.048148
0.092593
5
0
0.938272
1.000000
0.996296
0.874074
0.762963
1
0.061728
0.000000
0.003704
0.125926
0.237037
4
1
0
0.952381
1.000000
0.996296
0.977778
0.848148
1
0.047619
0.000000
0.003704
0.022222
0.151852
3
0
0.862264
1.000000
0.996296
0.855556
0.648148
1
0.132656
0.000000
0.003704
0.122222
0.270370
2
0.005038
0.000000
0.000000
0.022222
0.070370
3
0.000042
0.000000
0.000000
0.000000
0.011111
5
0
0.778699
1.000000
0.996296
0.811111
0.481481
1
0.204921
0.000000
0.003704
0.148148
0.251852
2
0.015968
0.000000
0.000000
0.025926
0.222222
3
0.000409
0.000000
0.000000
0.014815
0.040741
4
0.000003
0.000000
0.000000
0.000000
0.003704
8
1
0
0.909091
1.000000
1.000000
0.940741
0.837037
1
0.090909
0.000000
0.000000
0.059259
0.162963
3
0
0.748706
1.000000
1.000000
0.825926
0.481481
1
0.230371
0.000000
0.000000
0.107407
0.351852
2
0.020413
0.000000
0.000000
0.066667
0.140741
3
0.000510
0.000000
0.000000
0.000000
0.025926
5
0
0.613645
1.000000
0.988889
0.818519
0.366667
1
0.322971
0.000000
0.011111
0.070370
0.170370
2
0.058722
0.000000
0.000000
0.048148
0.244444
3
0.004517
0.000000
0.000000
0.033333
0.177778
4
0.000143
0.000000
0.000000
0.029630
0.040741
5
0.000001
0.000000
0.000000
0.000000
0.000000
Selanjutnya, sajikan tabel dalam bentuk grafik. Warna biru, hijau, merah, cyan, dan ungu masing-masing merepresentasikan baseline, 7 fitur, 20 fitur, 50 fitur, dan 100 fitur berturut-turut.
In [8]:
grouped = df_plot.groupby(level=['num_norm','num_oot','num_top'])
for name, group in grouped:
group.plot(kind='bar', use_index=False, legend=False, ylim=(0.,1.), title='num_norm={}, num_oot={}, num_top={}'.format(*name))
Selanjutnya, seperti biasa, akan dihitung expected value-nya.
In [9]:
ngroup = len(grouped)
data = np.empty((ngroup, 8))
index = []
for i, (name, _) in enumerate(grouped):
df_tmp = df_agg.loc[name]
prod = df_tmp.T * np.array(df_tmp.index)
exp_val = prod.sum(axis=1)
data[i, :] = exp_val
index.append(name)
In [10]:
index = pd.MultiIndex.from_tuples(index, names=['num_norm','num_oot','num_top'])
columns = df_agg.columns.copy()
In [11]:
result = pd.DataFrame(data, index=index, columns=columns)
In [12]:
result
Out[12]:
max_features
7
20
50
100
result
base
perf
base
perf
base
perf
base
perf
num_norm
num_oot
num_top
10
1
1
0.090909
0.159259
0.090909
0.348148
0.090909
0.503704
0.090909
0.585185
3
0.272727
0.366667
0.272727
0.440741
0.272727
0.788889
0.272727
0.922222
5
0.454545
0.444444
0.454545
0.548148
0.454545
0.829630
0.454545
0.977778
4
1
0.285714
0.385185
0.285714
0.566667
0.285714
0.651852
0.285714
0.670370
3
0.857143
1.029630
0.857143
1.537037
0.857143
1.759259
0.857143
1.933333
5
1.428571
1.581481
1.428571
2.114815
1.428571
2.485185
1.428571
2.959259
8
1
0.444444
0.285185
0.444444
0.514815
0.444444
0.644444
0.444444
0.614815
3
1.333333
1.366667
1.333333
1.540741
1.333333
1.777778
1.333333
1.866667
5
2.222222
2.318519
2.222222
2.644444
2.222222
2.796296
2.222222
3.096296
80
1
1
0.012346
0.000000
0.012346
0.003704
0.012346
0.003704
0.012346
0.040741
3
0.037037
0.000000
0.037037
0.003704
0.037037
0.048148
0.037037
0.092593
5
0.061728
0.000000
0.061728
0.003704
0.061728
0.125926
0.061728
0.237037
4
1
0.047619
0.000000
0.047619
0.003704
0.047619
0.022222
0.047619
0.151852
3
0.142857
0.000000
0.142857
0.003704
0.142857
0.166667
0.142857
0.444444
5
0.238095
0.000000
0.238095
0.003704
0.238095
0.244444
0.238095
0.833333
8
1
0.090909
0.000000
0.090909
0.000000
0.090909
0.059259
0.090909
0.162963
3
0.272727
0.000000
0.272727
0.000000
0.272727
0.240741
0.272727
0.711111
5
0.454545
0.000000
0.454545
0.011111
0.454545
0.385185
0.454545
1.355556
Dapat dilihat pada tabel di atas bahwa secara umum, pengurangan jumlah fitur akan berdampak sangat buruk terhadap performa metode, apalagi untuk 7 fitur dan 80 normal posts, nilai expected value-nya nol! Namun, lain halnya jika distance metric yang digunakan adalah euclidean
...
Content source: kemskems/otdet
Similar notebooks: