title | author |
---|---|
Rank Aggregation from Pairwise Comparision |
Tao Jin |
Given a set of items and each of them have a score conceptually, which may or may not exist in reality. The score is denoted as
Let
In following methods, each kind of likelihood function corredponds to a model with various intentions.
btl
: Simple BT-model
We assume each user have a random noise
Since the number of comparisons can vary case by case, the actual likelihood is normalized by of total number of comparisons.
gbtl
: Generalized BT-model
Since each judge can have different judgement abilities, by adjusting the
By definition, the Gumble distribution must have
gbtl-negative
: the restrcition gbtl
.
Suppose a judge have good knowlege of the items, however he tends to provide ratings at the opposite direction to his best knowledge. In such adversarial setting, the fomula is quite similar to previous case. Assume
Ideally, this algorithm can handle those adversarial judges which know that
When
gbtl-inverse
: Let gbtl-negative
as a multiplier for easy optimization.
This is used to compensate the effect of previous method, so the good judge will have a very large
Instead of put initial value of each parameter randomly, the spectral method described in "Rank Centrality" is used to provide a near estimate of the true utility, so that the gradient descent algorithm may produce better result.
The data is generated according to the gbtl
model. All spacing
mechanism, adjacent items have the same ratio of
Count the number of times item
From these matrix, the ratio
Since
Consider the case when there is a perfect judge that will produce correct answer for each pair, however with btl
model, the judge must have a chance to produce error. Then it is possible to have two items have utilities that is against order with ground truth.
Compute the transition matrix
We want to study the relationship between three matrices, count probability and transition. First of all, how could the distribution of
Conceptually, the true value of
Compute the stationary distribution for matrix
For gbtl*
algorithms, we first solve for the stationary distribution
Multiply each side by the denominator (note the summation over
Let the subscripts start from
There are
A=
[[1-1/w_{1,k} 1. 1. .... 1. ]
[1. 1-1/w_{2,k} 1. .... 1. ]
[1. 1. 1-1/w_{3,k} .... 1. ]
....
[1. 1. 1. 1. 1-1/w_{n,k}]]
b = [0., 0., 0., ...., 0.]
Solve for
The above holds because all we have in comparison is pairwise difference. By fixing one value, it is possible to get other value.
Assume
A'=
[[1. 1. .... 1. ]
[1-1/w_{2,k} 1. .... 1. ]
[1. 1-1/w_{3,k} .... 1. ]
....
[1. 1. 1. 1-1/w_{n,k}]]
b' = [1/w_{1,k}-1, -1., -1., ...., -1.]
Solve for
A toy example for pratical understanding, for a specific judge with
the system
s = np.array([0.7,0.2,0.3,0.5])
print('s', s)
beta = 1.
w = np.exp(s/beta) / np.sum(np.exp(s/beta))
print('w', w)
A = np.ones(s.shape[0]-1) - np.diag(1. / w[1:])
b = np.array([-1.] * s.shape[0])
b[0] += 1. / w[0]
print('b', b)
A = np.vstack([np.ones((1, s.shape[0] -1)), A])
print('A', A)
u = np.matmul(np.matmul(np.linalg.inv(np.matmul(A.T, A)), A.T), b)
print('u', u)
print('\hat{s}', np.log(u))
s [0.7 0.2 0.3 0.5]
w [0.32304109 0.19593432 0.21654092 0.26448367]
b [ 2.09558146 -1. -1. -1. ]
A [[ 1. 1. 1. ]
[-4.103751 1. 1. ]
[ 1. -3.61806487 1. ]
[ 1. 1. -2.78095173]]
u [0.60653066 0.67032005 0.81873075]
\hat{s} [-0.5 -0.4 -0.2]
From previous step, we have estimated
First we want to check whether the first step above can provide precise estimation when
s = np.array([0.3, 0.7, 0.2, 0.5])
betas = np.array([1.0, 2.0, 0.5])
print('s', s)
qs = []
for beta in betas:
print(s/beta)
w = np.exp(s/beta) / np.sum(np.exp(s/beta))
print('w', w)
A = np.ones(s.shape[0]-1) - np.diag(1. / w[1:])
b = np.array([-1.] * s.shape[0])
b[0] += 1. / w[0]
print('b', b)
A = np.vstack([np.ones((1, s.shape[0] -1)), A])
print('A', A)
u = np.matmul(np.matmul(np.linalg.inv(np.matmul(A.T, A)), A.T), b)
print('u', u)
q = np.hstack([np.log(u)])
print('q=\hat{s/\\beta}', q)
print('-------------------')
qs.append(q)
qs = np.vstack(qs)
print(qs)
s [0.3 0.7 0.2 0.5]
[0.3 0.7 0.2 0.5]
w [0.21654092 0.32304109 0.19593432 0.26448367]
b [ 3.61806487 -1. -1. -1. ]
A [[ 1. 1. 1. ]
[-2.09558146 1. 1. ]
[ 1. -4.103751 1. ]
[ 1. 1. -2.78095173]]
u [1.4918247 0.90483742 1.22140276]
q=\hat{s/\beta} [ 0.4 -0.1 0.2]
-------------------
[0.15 0.35 0.1 0.25]
w [0.23376485 0.28552103 0.222364 0.25835011]
b [ 3.2778031 -1. -1. -1. ]
A [[ 1. 1. 1. ]
[-2.50236895 1. 1. ]
[ 1. -3.49713076 1. ]
[ 1. 1. -2.87071631]]
u [1.22140276 0.95122942 1.10517092]
q=\hat{s/\beta} [ 0.2 -0.05 0.1 ]
-------------------
[0.6 1.4 0.4 1. ]
w [0.18063269 0.40200545 0.14788954 0.26947231]
b [ 4.53609638 -1. -1. -1. ]
A [[ 1. 1. 1. ]
[-1.48752845 1. 1. ]
[ 1. -5.76180339 1. ]
[ 1. 1. -2.71095638]]
u [2.22554093 0.81873075 1.4918247 ]
q=\hat{s/\beta} [ 0.8 -0.2 0.4]
-------------------
[[ 0.4 -0.1 0.2 ]
[ 0.2 -0.05 0.1 ]
[ 0.8 -0.2 0.4 ]]
The result is promising, by looking at the
Next, assemble all these ratios and assume
n_items = s.shape[0] - 1
# we can either restrict beta_0 or not
n_judges = betas.shape[0]
A = np.zeros((n_items*n_judges, n_items+n_judges-1))
b = np.ones((n_items*n_judges,)) * 0.
for c_i in range(n_judges):
for s_i in range(n_items):
if c_i != 0:
A[n_items*c_i+s_i][n_items + c_i - 1] = -qs[c_i][s_i]
A[n_items*c_i+s_i][s_i] = 1
for s_i in range(n_items):
b[s_i] = qs[0][s_i]
u = np.matmul(np.matmul(np.linalg.inv(np.matmul(A.T, A)), A.T), b)
print(u)
import scipy.sparse.linalg
import pandas as pd
print(pd.DataFrame(A))
x = scipy.sparse.linalg.lsqr(A, b, show=True)[0]
print(x)
[ 0.4 -0.1 0.2 2. 0.5]
0 1 2 3 4
0 1.0 0.0 0.0 0.00 0.0
1 0.0 1.0 0.0 0.00 0.0
2 0.0 0.0 1.0 0.00 0.0
3 1.0 0.0 0.0 -0.20 0.0
4 0.0 1.0 0.0 0.05 0.0
5 0.0 0.0 1.0 -0.10 0.0
6 1.0 0.0 0.0 0.00 -0.8
7 0.0 1.0 0.0 0.00 0.2
8 0.0 0.0 1.0 0.00 -0.4
LSQR Least-squares solution of Ax = b
The matrix A has 9 rows and 5 cols
damp = 0.00000000000000e+00 calc_var = 0
atol = 1.00e-08 conlim = 1.00e+08
btol = 1.00e-08 iter_lim = 10
Itn x[0] r1norm r2norm Compatible LS Norm A Cond A
0 0.00000e+00 4.583e-01 4.583e-01 1.0e+00 2.2e+00
1 1.33333e-01 3.742e-01 3.742e-01 8.2e-01 2.2e-01 1.7e+00 1.0e+00
2 2.13278e-01 3.131e-01 3.131e-01 6.8e-01 8.8e-02 1.9e+00 3.1e+00
3 4.00000e-01 1.796e-14 1.796e-14 3.9e-14 9.0e-01 2.0e+00 1.3e+01
LSQR finished
Ax - b is small enough, given atol, btol
istop = 1 r1norm = 1.8e-14 anorm = 2.0e+00 arnorm = 3.2e-14
itn = 3 r2norm = 1.8e-14 acond = 1.3e+01 xnorm = 2.1e+00
[ 0.4 -0.1 0.2 2. 0.5]
Breakdown the last line of the output, which should read as s = [0.4 -0.1 0.2 ] \beta = [2. 0.5]
, which is exactly the ground truth.
This experiment showed that if the
Compute
-
$s$ is shifted to have minimum value to be 0.$\mathbf{s} = \mathbf{s} - \min{s_i}$ . -
$s$ is then rescaled to be summed to 1.$\mathbf{s} = \mathbf{s} / \sum{s_i}$ . -
$\beta$ is also rescaled accordingly with the same ratio as$s$ .
- Calculate the gradient using likelihood function mentioned above. Update
$s$ and$\beta$ simultaneously. It is also possible to do alternating update.
Because in the likelihood function, only difference between gbtl-*
model, consider we have fixed s
, but the
-
$s$ is shifted to have minimum value to be 0.$\mathbf{s} = \mathbf{s} - \min{s_i}$ . -
$\beta$ is scaled to prevent the change of likelihood for next step$\beta = \beta / \sum{s_i}$ . -
$s$ is then nomalized/scaled to be summed to 1.$\mathbf{s} = \mathbf{s} / \sum{s_i}$ .
main.py
will load the configuration and save running result in when done. One can setup comment/uncomment for different configurations in main.py and invoke the script sequentially. They can be run simultaneously, the saving process will have a lock to prevent each process writing over existing data.
Currently, the source code reflect three generations of changes.
- explicit loop for single element optimization, single pair. Code was removed because of inefficiency.
- explicit loop for single element optimization, counting pair.
opt_sparse = True
. - implicit loop using matrix computation, counting pair.
opt_spares = False
.
The third method can finish 800 iterations of tranining for 100 items in one second. However the second method would cost half an hour.
However, data is generated pair by pair, for some runs including more judges and more comparison for each individual judge, it will take serveral seconds to generate. This should be improved later. The model will be load into GPU once for each configuration, however, for each configuration, only data matrix is changed. It is possible to make the model persistent in memory to prevent this overhead.
Planned: share data generation result to prevent regenerate.
After the third revision of the code base is done. It is able to do more large scale computation. Each setup is runned over 12 predefined random seeds.
The final result of ranking is compared and provided using Spearman Dist. More comparison metric will be impletemented in the future.
The accuracy of estimated
random
: random initializations
spectral
: Using rank centrality to provide initialization\
do
: just output after initialization
mle
: use MLE, optimized by SGD to find result\
j
: number of judges
i
: number of items
p
: number of comparisons provided by a single judge
Subscripts i,j,k will be used for indexing first item in pair, second item in pair and specific judge repectively.
compare btl
and gbtl
with different gbtl
seems to be better.
we want to know what exactly the deviation from good judge and bad judge that our model performs well.
To make things simple, we assume half of the judges are good, half of them are bad.
It seems that
data | algo | acc |
---|---|---|
ma-b1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5-j8-i10-p800 | btl-spectral-mle | 0.8090909091 |
ma-b1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5-j8-i10-p800 | gbtl-spectral_all-mle | 0.8 |
ma-b1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5-j8-i100-p8000 | btl-spectral-mle | 0.1201350135 |
ma-b1.0,0.5,1.0,0.5,1.0,0.5,1.0,0.5-j8-i100-p8000 | gbtl-spectral_all-mle | 0.1292939294 |
ma-b1.0,0.5,1.0,0.5-j4-i10-p800 | btl-spectral-mle | 0.7686868687 |
ma-b1.0,0.5,1.0,0.5-j4-i10-p800 | gbtl-spectral_all-mle | 0.7727272727 |
ma-b1.0,0.5-j2-i10-p800 | btl-spectral-mle | 0.6838383838 |
ma-b1.0,0.5-j2-i10-p800 | gbtl-spectral_all-mle | 0.6878787879 |
data | algo | acc |
---|---|---|
ma-b1.0,0.1,1.0,0.1-j4-i10-p800 | btl-spectral-mle | 0.9353535354 |
ma-b1.0,0.1,1.0,0.1-j4-i10-p800 | gbtl-spectral_all-mle | 0.9525252525 |
ma-b1.0,0.1,1.0,0.1-j4-i100-p8000 | btl-spectral-mle | 0.2715981598 |
ma-b1.0,0.1,1.0,0.1-j4-i100-p8000 | gbtl-spectral_all-mle | 0.289009901 |
ma-b1.0,0.1,1.0,0.1-j4-i100-p80000 | btl-spectral-mle | 0.6671327133 |
ma-b1.0,0.1,1.0,0.1-j4-i100-p80000 | gbtl-spectral_all-mle | 0.6681918192 |
ma-b1.0,0.1-j2-i10-p800 | btl-spectral-mle | 0.9404040404 |
ma-b1.0,0.1-j2-i10-p800 | gbtl-spectral_all-mle | 0.9393939394 |
data | algo | acc |
---|---|---|
ma-b1.0,0.05,1.0,0.05,1.0,0.05,1.0,0.05-j8-i10-p800 | btl-spectral-mle | 0.9737373737 |
ma-b1.0,0.05,1.0,0.05,1.0,0.05,1.0,0.05-j8-i10-p800 | gbtl-spectral_all-mle | 0.9878787879 |
ma-b1.0,0.05,1.0,0.05-j4-i10-p800 | btl-spectral-mle | 0.9666666667 |
ma-b1.0,0.05,1.0,0.05-j4-i10-p800 | gbtl-spectral_all-mle | 0.9767676768 |
ma-b1.0,0.05-j2-i10-p800 | btl-spectral-mle | 0.9686868687 |
ma-b1.0,0.05-j2-i10-p800 | gbtl-spectral_all-mle | 0.9757575758 |
data | algo | acc |
---|---|---|
ma-b1.0,0.001,0,0.001-j4-i100-p8000 | btl-spectral-mle | 0.9955955596 |
ma-b1.0,0.001,0,0.001-j4-i100-p8000 | gbtl-spectral_all-mle | 0.5013961396 |
ma-b1.0,0.001,1.0,0.001,1.0,0.001,1.0,0.001-j8-i10-p200 | btl-spectral-mle | 0.9929292929 |
ma-b1.0,0.001,1.0,0.001,1.0,0.001,1.0,0.001-j8-i10-p200 | gbtl-spectral_all-mle | 0.4159779614 |
ma-b1.0,0.001,1.0,0.001,1.0,0.001,1.0,0.001-j8-i10-p800 | btl-spectral-mle | 1 |
ma-b1.0,0.001,1.0,0.001,1.0,0.001,1.0,0.001-j8-i10-p800 | gbtl-spectral_all-mle | 0.6151515152 |
ma-b1.0,0.001,1.0,0.001,1.0,0.001,1.0,0.001-j8-i100-p8000 | btl-spectral-mle | 0.9943934393 |
data | algo | acc |
---|---|---|
ma-b1.0,0.005,1.0,0.005,1.0,0.005,1.0,0.005-j8-i10-p800 | btl-spectral-mle | 0.996969697 |
ma-b1.0,0.005,1.0,0.005,1.0,0.005,1.0,0.005-j8-i10-p800 | gbtl-spectral_all-mle | 0.7444444444 |
ma-b1.0,0.005,1.0,0.005-j4-i10-p800 | btl-spectral-mle | 0.9919191919 |
ma-b1.0,0.005,1.0,0.005-j4-i10-p800 | gbtl-spectral_all-mle | 0.6585858586 |
ma-b1.0,0.005-j2-i10-p800 | btl-spectral-mle | 0.9888888889 |
ma-b1.0,0.005-j2-i10-p800 | gbtl-spectral_all-mle | 0.4981818182 |
For different size of repeated comparisons
data | algo | acc |
---|---|---|
ma-b1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1-j8-i10-p800 | btl-spectral-mle | 0.9575757576 |
ma-b1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1-j8-i10-p800 | gbtl-spectral_all-mle | 0.9696969697 |
ma-b1.0,0.1,1.0,0.1-j4-i10-p800 | btl-spectral-mle | 0.9353535354 |
ma-b1.0,0.1,1.0,0.1-j4-i10-p800 | gbtl-spectral_all-mle | 0.9525252525 |
ma-b1.0,0.1-j2-i10-p800 | btl-spectral-mle | 0.9404040404 |
ma-b1.0,0.1-j2-i10-p800 | gbtl-spectral_all-mle | 0.9393939394 |
data | algo | acc |
---|---|---|
ma-b1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1-j16-i100-p8000 | btl-spectral-mle | 0.4824192419 |
ma-b1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1-j16-i100-p8000 | gbtl-spectral_all-mle | 0.4846394639 |
ma-b1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1-j8-i100-p8000 | btl-spectral-mle | 0.3701830183 |
ma-b1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1-j8-i100-p8000 | gbtl-spectral_all-mle | 0.3776047605 |
ma-b1.0,0.1,1.0,0.1-j4-i100-p8000 | btl-spectral-mle | 0.2715981598 |
ma-b1.0,0.1,1.0,0.1-j4-i100-p8000 | gbtl-spectral_all-mle | 0.289009901 |
data | algo | acc |
---|---|---|
ma-b1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1-j16-i100-p80000 | btl-spectral-mle | 0.8575687569 |
ma-b1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1-j16-i100-p80000 | gbtl-spectral_all-mle | 0.8588678868 |
ma-b1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1-j8-i100-p80000 | btl-spectral-mle | 0.7859305931 |
ma-b1.0,0.1,1.0,0.1,1.0,0.1,1.0,0.1-j8-i100-p80000 | gbtl-spectral_all-mle | 0.7851465147 |
ma-b1.0,0.1,1.0,0.1-j4-i100-p80000 | btl-spectral-mle | 0.6671327133 |
ma-b1.0,0.1,1.0,0.1-j4-i100-p80000 | gbtl-spectral_all-mle | 0.6681918192 |
This is trying to replicate result from "Pair wise comparison for crowd sourcing"
For almost noisy judge data, replicate the beta(0.5, 0.5) setting in paper.
data | algo | acc |
---|---|---|
be-b1,1-j8-i100-p800 | btl-spectral-mle | 0.08789578958 |
be-b1,1-j8-i100-p800 | gbtl-spectral_all-mle | 0.08652965297 |
be-b1,1-j8-i100-p8000 | btl-spectral-mle | 0.3267266727 |
be-b1,1-j8-i100-p8000 | gbtl-spectral_all-mle | 0.3415711571 |
be-b1,1-j8-i100-p80000 | btl-spectral-mle | 0.6691479148 |
be-b1,1-j8-i100-p80000 | gbtl-spectral_all-mle | 0.6653045305 |
Most of the judges are good judge, test the effect of increasing number of comparisons.
data | algo | acc |
---|---|---|
be-b1,10-j8-i100-p800 | btl-spectral-mle | 0.5451905191 |
be-b1,10-j8-i100-p800 | gbtl-spectral_all-mle | 0.464360436 |
be-b1,10-j8-i100-p8000 | btl-spectral-mle | 0.8952985299 |
be-b1,10-j8-i100-p8000 | gbtl-spectral_all-mle | 0.8870107011 |
be-b1,10-j8-i100-p80000 | btl-spectral-mle | 0.9789818982 |
be-b1,10-j8-i100-p80000 | gbtl-spectral_all-mle | 0.9818841884 |
be-b10,100-j8-i100-p800 | btl-spectral-mle | 0.2448734873 |
be-b10,100-j8-i100-p800 | gbtl-spectral_all-mle | 0.2081188119 |
be-b10,100-j8-i100-p8000 | btl-spectral-mle | 0.6454565457 |
be-b10,100-j8-i100-p8000 | gbtl-spectral_all-mle | 0.6555425543 |
be-b10,100-j8-i100-p80000 | btl-spectral-mle | 0.9328562856 |
be-b10,100-j8-i100-p80000 | gbtl-spectral_all-mle | 0.933360336 |
============ progress 0.075 ETA 279.58250617980957 Elpased 22.66885280609131
ground truth s [0. 0.00020163 0.00041065 0.00062733 0.00085195 0.00108479
0.00132616 0.00157638 0.00183576 0.00210464 0.00238337 0.00267232
0.00297184 0.00328235 0.00360422 0.00393789 0.00428378 0.00464234
0.00501404 0.00539935 0.00579878 0.00621284 0.00664206 0.00708702
0.00754827 0.00802642 0.00852208 0.0090359 0.00956855 0.01012071
0.01069309 0.01128644 0.01190153 0.01253915 0.01320013 0.01388533
0.01459562 0.01533194 0.01609522 0.01688647 0.01770671 0.01855699
0.01943842 0.02035214 0.02129933 0.02228122 0.02329908 0.02435423
0.02544803 0.0265819 0.0277573 0.02897577 0.03023887 0.03154824
0.03290558 0.03431264 0.03577125 0.03728329 0.03885072 0.04047557
0.04215994 0.04390601 0.04571605 0.0475924 ]
ground truth beta [ 0.01 0.01 0.01 -0.01]
initial ranking result [ 3 7 6 5 8 10 0 11 4 12 2 13 1 19 14 16 9 15 18 17 29 23 21 22
25 24 20 28 32 27 26 31 33 34 36 37 30 35 38 41 45 39 40 43 44 42 47 49
46 52 48 50 53 57 51 55 56 54 60 58 61 59 63 62]
initial: s, beta [-5.2720213 -5.1716332 -5.2129464 -5.444453 -5.2164335 -5.368752
-5.3729267 -5.3734903 -5.3445864 -5.135718 -5.335087 -5.2179203
-5.214886 -5.1861053 -5.146576 -5.1004915 -5.1431556 -4.987467
-5.0673037 -5.15859 -4.80821 -4.872526 -4.863924 -4.908108
-4.8143506 -4.857876 -4.7040515 -4.7425213 -4.761551 -4.9777923
-4.4764986 -4.692269 -4.744742 -4.682644 -4.6659007 -4.46313
-4.625089 -4.616323 -4.4551554 -4.363563 -4.328222 -4.4227347
-4.272601 -4.327117 -4.2889585 -4.388178 -4.1075854 -4.176772
-4.0739956 -4.1465154 -4.040415 -3.9391983 -4.094847 -3.9865823
-3.8557765 -3.9005246 -3.891471 -3.9393566 -3.7179568 -3.6568007
-3.7950552 -3.6620479 -3.5163724 -3.6215727] [1. 1.0002658 0.9995459 1.1390154]
{'res_s': array([0.00124053, 0.00040423, 0.00151192, 0.00128391, 0.00158678,
0.00082832, 0. , 0.00318954, 0.00109345, 0.00241894,
0.00208388, 0.00181347, 0.00263239, 0.0033853 , 0.00300745,
0.00432503, 0.00486559, 0.00475302, 0.00503233, 0.00445427,
0.00703741, 0.00695946, 0.00651139, 0.00769732, 0.00819746,
0.00874015, 0.00946085, 0.00893357, 0.01014537, 0.00983707,
0.01191817, 0.01097003, 0.01102478, 0.01298092, 0.01320732,
0.01593317, 0.01443559, 0.01500799, 0.01573041, 0.01768097,
0.01755599, 0.01891693, 0.01924198, 0.02010392, 0.01983309,
0.02065322, 0.02342728, 0.02284312, 0.02449871, 0.0255978 ,
0.02778998, 0.0287823 , 0.02884273, 0.03269271, 0.03338232,
0.03350034, 0.03440319, 0.03572588, 0.03953067, 0.04090979,
0.04199352, 0.04351607, 0.04731778, 0.04662086], dtype=float32), 'res_beta': array([0.01293905, 0.01244986, 0.01229717, 0.28041995], dtype=float32)}
ne-b0.01-j4-i64-p12800+gbtlneg-spectral_all-mle 0.9949633699633698
481 be-b1,1-j8-i100-p800 btl-spectral-mle 0.235675
489 be-b1,1-j8-i100-p800 gbtlneg-disturb-mle 0.252450
491 be-b1,1-j8-i100-p8000 btl-spectral-mle 0.578940
499 be-b1,1-j8-i100-p8000 gbtlneg-disturb-mle 0.731426
501 be-b1,1-j8-i100-p80000 btl-spectral-mle 0.875639
509 be-b1,1-j8-i100-p80000 gbtlneg-disturb-mle 0.958753
*511 be-b1,10-j8-i100-p800 btl-spectral-mle 0.799607
*519 be-b1,10-j8-i100-p800 gbtlneg-disturb-mle 0.651792
*521 be-b1,10-j8-i100-p8000 btl-spectral-mle 0.966131
*529 be-b1,10-j8-i100-p8000 gbtlneg-disturb-mle 0.947896
531 be-b1,10-j8-i100-p80000 btl-spectral-mle 0.994547
539 be-b1,10-j8-i100-p80000 gbtlneg-disturb-mle 0.992609
*311 be-b10,100-j4-i100-p800 btl-spectral-mle 0.313435
*319 be-b10,100-j4-i100-p800 gbtlneg-disturb-mle 0.294446
321 be-b10,100-j4-i15-p200 btl-spectral-mle 0.916964
329 be-b10,100-j4-i15-p200 gbtlneg-disturb-mle 0.924702
*541 be-b10,100-j8-i100-p800 btl-spectral-mle 0.460158
*549 be-b10,100-j8-i100-p800 gbtlneg-disturb-mle 0.421968
551 be-b10,100-j8-i100-p8000 btl-spectral-mle 0.842468
559 be-b10,100-j8-i100-p8000 gbtlneg-disturb-mle 0.850073
561 be-b10,100-j8-i100-p80000 btl-spectral-mle 0.973359
569 be-b10,100-j8-i100-p80000 gbtlneg-disturb-mle 0.974697
331 be-b10,100-j8-i15-p400 btl-spectral-mle 0.976488
339 be-b10,100-j8-i15-p400 gbtlneg-disturb-mle 0.977976
341 be-b2,10-j4-i15-p800 btl-spectral-mle 0.945833
349 be-b2,10-j4-i15-p800 gbtlneg-disturb-mle 0.965584
351 be-b3,20-j4-i15-p800 btl-spectral-mle 0.971131
359 be-b3,20-j4-i15-p800 gbtlneg-disturb-mle 0.975893
361 be-b5,100-j4-i15-p800 btl-spectral-mle 0.989286
369 be-b5,100-j4-i15-p800 gbtlneg-disturb-mle 0.991369
result of spectral method followed by 2-step solving method.
Some successful result is shown below.
data_name algo_name acc
0 be-b1,10-j8-i100-p800 btl-spectral-mle 0.8424
1 be-b1,10-j8-i100-p800 gbtl-spectral_all-do 0.3339
2 be-b1,10-j8-i100-p800 gbtl-spectral_all-mle 0.9160
4 be-b1,10-j8-i100-p800 gbtlinv-spectral_all-mle 0.3811
3 be-b1,10-j8-i100-p800 gbtlneg-spectral_all-mle 0.3969
5 be-b1,10-j8-i100-p8000 btl-spectral-mle 0.9790
6 be-b1,10-j8-i100-p8000 gbtl-spectral_all-do 0.6665
7 be-b1,10-j8-i100-p8000 gbtl-spectral_all-mle 0.9639
9 be-b1,10-j8-i100-p8000 gbtlinv-spectral_all-mle 0.5813
8 be-b1,10-j8-i100-p8000 gbtlneg-spectral_all-mle 0.5814
Some times, gbtl
will give initialization point which is in reverse order.
data_name algo_name acc
0 po-b5-j4-i10-p800 btl-spectral-mle 1.0000
1 po-b5-j4-i10-p800 gbtl-spectral_all-do 0.9212
2 po-b5-j4-i10-p800 gbtl-spectral_all-mle 1.0000
6 po-b5-j4-i10-p800 gbtlinv-disturb-mle 1.0000
4 po-b5-j4-i10-p800 gbtlinv-spectral_all-mle 1.0000
5 po-b5-j4-i10-p800 gbtlneg-disturb-mle 1.0000
3 po-b5-j4-i10-p800 gbtlneg-spectral_all-mle 1.0000
7 po-b5-j4-i100-p8000 btl-spectral-mle 0.9224
8 po-b5-j4-i100-p8000 gbtl-spectral_all-do -0.2044
9 po-b5-j4-i100-p8000 gbtl-spectral_all-mle nan
13 po-b5-j4-i100-p8000 gbtlinv-disturb-mle 0.9837
11 po-b5-j4-i100-p8000 gbtlinv-spectral_all-mle -0.6483
12 po-b5-j4-i100-p8000 gbtlneg-disturb-mle 0.9833
10 po-b5-j4-i100-p8000 gbtlneg-spectral_all-mle -0.6499
14 po-b5-j4-i100-p80000 btl-spectral-mle 0.9920
15 po-b5-j4-i100-p80000 gbtl-spectral_all-do -0.1351
16 po-b5-j4-i100-p80000 gbtl-spectral_all-mle nan
20 po-b5-j4-i100-p80000 gbtlinv-disturb-mle 0.9985
18 po-b5-j4-i100-p80000 gbtlinv-spectral_all-mle -0.6650
19 po-b5-j4-i100-p80000 gbtlneg-disturb-mle 0.9984
17 po-b5-j4-i100-p80000 gbtlneg-spectral_all-mle -0.4681
To fix this, in addition to seperate transition matrix for each judge, a grand total transition matrix is added while performing the "Two step" initialization described above.
data_name algo_name acc
5 be-b1,10-j8-i100-p800 btl-spectral-mle 0.8317
6 be-b1,10-j8-i100-p800 gbtl-spectral_all-do 0.8269
7 be-b1,10-j8-i100-p800 gbtl-spectral_all-mle 0.9044
9 be-b1,10-j8-i100-p800 gbtlinv-spectral_all-mle 0.8342
8 be-b1,10-j8-i100-p800 gbtlneg-spectral_all-mle 0.8304
10 be-b1,10-j8-i100-p8000 btl-spectral-mle 0.9780
11 be-b1,10-j8-i100-p8000 gbtl-spectral_all-do 0.9602
12 be-b1,10-j8-i100-p8000 gbtl-spectral_all-mle 0.9657
14 be-b1,10-j8-i100-p8000 gbtlinv-spectral_all-mle 0.5779
13 be-b1,10-j8-i100-p8000 gbtlneg-spectral_all-mle 0.5779
0 be-b5,100-j4-i15-p800 btl-spectral-mle 0.9923
1 be-b5,100-j4-i15-p800 gbtl-spectral_all-do 0.9899
2 be-b5,100-j4-i15-p800 gbtl-spectral_all-mle 0.9940
4 be-b5,100-j4-i15-p800 gbtlinv-spectral_all-mle 0.9952
3 be-b5,100-j4-i15-p800 gbtlneg-spectral_all-mle 0.9952
0 po-b5-j4-i10-p800 btl-spectral-mle 1.0000
1 po-b5-j4-i10-p800 gbtl-spectral_all-do 0.9899
2 po-b5-j4-i10-p800 gbtl-spectral_all-mle 1.0000
4 po-b5-j4-i10-p800 gbtlinv-spectral_all-mle 1.0000
3 po-b5-j4-i10-p800 gbtlneg-spectral_all-mle 1.0000
5 po-b5-j4-i100-p8000 btl-spectral-mle 0.9190
6 po-b5-j4-i100-p8000 gbtl-spectral_all-do 0.9080
7 po-b5-j4-i100-p8000 gbtl-spectral_all-mle nan
9 po-b5-j4-i100-p8000 gbtlinv-spectral_all-mle -0.3160
8 po-b5-j4-i100-p8000 gbtlneg-spectral_all-mle -0.3190
10 po-b5-j4-i100-p80000 btl-spectral-mle 0.9920
11 po-b5-j4-i100-p80000 gbtl-spectral_all-do 0.9734
12 po-b5-j4-i100-p80000 gbtl-spectral_all-mle nan
14 po-b5-j4-i100-p80000 gbtlinv-spectral_all-mle -0.6623
13 po-b5-j4-i100-p80000 gbtlneg-spectral_all-mle -0.6625
For 3 good judge 1 adversarial judge
10 ne-b0.005-j4-i16-p12800 btl-spectral-mle 1.0000
11 ne-b0.005-j4-i16-p12800 gbtl-spectral_all-do 0.9613
12 ne-b0.005-j4-i16-p12800 gbtl-spectral_all-mle nan
14 ne-b0.005-j4-i16-p12800 gbtlinv-spectral_all-mle -0.0132
13 ne-b0.005-j4-i16-p12800 gbtlneg-spectral_all-mle -0.0020
5 ne-b0.005-j4-i16-p800 btl-spectral-mle 0.9824
6 ne-b0.005-j4-i16-p800 gbtl-spectral_all-do 0.9926
7 ne-b0.005-j4-i16-p800 gbtl-spectral_all-mle nan
9 ne-b0.005-j4-i16-p800 gbtlinv-spectral_all-mle 0.6637
8 ne-b0.005-j4-i16-p800 gbtlneg-spectral_all-mle 0.9961
0 ne-b0.005-j4-i4-p800 btl-spectral-mle 1.0000
1 ne-b0.005-j4-i4-p800 gbtl-spectral_all-do 1.0000
2 ne-b0.005-j4-i4-p800 gbtl-spectral_all-mle nan
4 ne-b0.005-j4-i4-p800 gbtlinv-spectral_all-mle 1.0000
3 ne-b0.005-j4-i4-p800 gbtlneg-spectral_all-mle 1.0000
20 ne-b0.01-j4-i64-p12800 btl-spectral-mle 0.9900
21 ne-b0.01-j4-i64-p12800 gbtl-spectral_all-do 0.9966
22 ne-b0.01-j4-i64-p12800 gbtl-spectral_all-mle nan
24 ne-b0.01-j4-i64-p12800 gbtlinv-spectral_all-mle 0.9967
23 ne-b0.01-j4-i64-p12800 gbtlneg-spectral_all-mle 0.9967
15 ne-b0.01-j4-i64-p800 btl-spectral-mle 0.8504
16 ne-b0.01-j4-i64-p800 gbtl-spectral_all-do 0.9380
17 ne-b0.01-j4-i64-p800 gbtl-spectral_all-mle nan
19 ne-b0.01-j4-i64-p800 gbtlinv-spectral_all-mle 0.9402
18 ne-b0.01-j4-i64-p800 gbtlneg-spectral_all-mle 0.9402
More Settings using popular information
data_name algo_name acc
4 be-b10,100-j4-i100-p800 btl-spectral-do 0.2923
5 be-b10,100-j4-i100-p800 gbtl-spectral_all-do 0.2494
6 be-b10,100-j4-i100-p800 gbtl-spectral_all-mle nan
7 be-b10,100-j4-i100-p800 gbtlneg-spectral_all-mle 0.2509
8 be-b3,20-j4-i100-p800 btl-spectral-do 0.4829
9 be-b3,20-j4-i100-p800 gbtl-spectral_all-do 0.4599
10 be-b3,20-j4-i100-p800 gbtl-spectral_all-mle nan
11 be-b3,20-j4-i100-p800 gbtlneg-spectral_all-mle 0.4655
one judege, see if we can recover beta. fix s, only optimize beta.
inspect why sometimes gbtl fails, likelihood should be similar gbtl-neg/gamma. For example
36 be-b1,10-j8-i100-p8000 btl-spectral-do 0.9786
41 be-b1,10-j8-i100-p8000 gbtl-disturb-mle 0.9999
37 be-b1,10-j8-i100-p8000 gbtl-spectral_all-do 0.9625
38 be-b1,10-j8-i100-p8000 gbtl-spectral_all-mle 0.9666
40 be-b1,10-j8-i100-p8000 gbtlinv-spectral_all-mle 0.3240
39 be-b1,10-j8-i100-p8000 gbtlneg-spectral_all-mle 0.3236
Multiple judges with same beta, some are adversarial.
Ground truth is beta [ 1. 1. 1. 1. 1. 1. -1. -1.]
. Learning rate fixed to 1e-3
.
It seems to recover beta with trouble.
'res_beta': array([1.7470684, 0.8957187, 0.8417263, 0.9862341, 0.8872848, 1.4380397,
1.9282099, 1.9390941], dtype=float32)}
ne-b0.01-j8-i64-p800+gbtlneg-disturb_random_b_fix^s-mle 0.9999999999999998
'res_beta': array([0.8853454 , 4.273605 , 0.9111028 , 0.875287 , 0.8703403 ,
0.87689376, 2.0510824 , 7.044995 ], dtype=float32)}
ne-b0.01-j8-i64-p1600+gbtlneg-disturb_random_b_fix^s-mle 0.9999999999999998
'res_beta': array([0.03185409, 0.03961577, 0.0046634 , 0.00186974, 0.03982973,
0.02476502, 0.04063753, 0.02269254], dtype=float32)}
ne-b0.01-j8-i64-p1600+gbtlinv-disturb_random_b-fix^s-mle 0.9999999999999998
'res_beta': array([0.29575065, 0.29462597, 0.2800438 , 0.25666076], dtype=float32)}
be-b10,100-j4-i100-p8000+gbtlneg-disturb_random_b_fix^s-mle 0.9999999999999999
First line shows the learning rate, followed by three brackets (gbtl
, gbtlneg
, gbtlinv
respectively). In each bracket, each number is the estimate of 8 different magnitude of beta in increasing order. Initial [0.001, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.]
. For easy comparision, 1
.
One thing I cannot understand is that the learning curve (likelihood) for these experiments are mostly 45 degree upwards, regardless they overshoot the estimate of beta or underestimate it. Charts are attached as additional zip file.
Some thoughts about this result. Firstly, there exists one learning rate that can recover its corresponding gbtlinv
set of experiment, only large learning rate can make progress.
5e-4
[array([0.7787109], dtype=float32),
array([9.990575], dtype=float32),
array([12.694106], dtype=float32),
array([6.20445], dtype=float32),
array([2.5426757], dtype=float32),
array([0.8015833], dtype=float32),
array([0.2502458], dtype=float32),
array([0.15118523], dtype=float32)]
[array([0.64776593], dtype=float32),
array([2.3180993], dtype=float32),
array([2.6304095], dtype=float32),
array([1.8435811], dtype=float32),
array([1.1795928], dtype=float32),
array([0.6552971], dtype=float32),
array([0.31106076], dtype=float32),
array([0.19316907], dtype=float32)]
[array([0.02784825], dtype=float32),
array([0.02807491], dtype=float32),
array([0.02809899], dtype=float32),
array([0.02801491], dtype=float32),
array([0.02793133], dtype=float32),
array([0.02787193], dtype=float32),
array([0.0278246], dtype=float32),
array([0.02781279], dtype=float32)]
1e-3
[array([1.3846128], dtype=float32),
array([41.444874], dtype=float32),
array([50.904438], dtype=float32),
array([24.744034], dtype=float32),
array([10.088883], dtype=float32),
array([3.1006026], dtype=float32),
array([0.62354225], dtype=float32),
array([0.22420403], dtype=float32)]
[array([0.9827368], dtype=float32),
array([4.7528925], dtype=float32),
array([5.326069], dtype=float32),
array([3.7147434], dtype=float32),
array([2.3646145], dtype=float32),
array([1.2987756], dtype=float32),
array([0.56297106], dtype=float32),
array([0.29207832], dtype=float32)]
[array([0.02790754], dtype=float32),
array([0.02835429], dtype=float32),
array([0.02841576], dtype=float32),
array([0.02821998], dtype=float32),
array([0.02806289], dtype=float32),
array([0.02793133], dtype=float32),
array([0.02784825], dtype=float32),
array([0.02781279], dtype=float32)]
5e-3
[array([21.10289], dtype=float32),
array([1034.4423], dtype=float32),
array([1264.5232], dtype=float32),
array([612.49384], dtype=float32),
array([248.17784], dtype=float32),
array([75.52871], dtype=float32),
array([14.379489], dtype=float32),
array([3.8281097], dtype=float32)]
[array([4.1067114], dtype=float32),
array([24.201225], dtype=float32),
array([26.7861], dtype=float32),
array([18.632616], dtype=float32),
array([11.847648], dtype=float32),
array([6.508442], dtype=float32),
array([2.77821], dtype=float32),
array([1.3497801], dtype=float32)]
[array([0.02831753], dtype=float32),
array([0.03080675], dtype=float32),
array([0.03115827], dtype=float32),
array([0.03003034], dtype=float32),
array([0.02916177], dtype=float32),
array([0.02848987], dtype=float32),
array([0.02803371], dtype=float32),
array([0.02788379], dtype=float32)]
1e-2
[array([134.44835], dtype=float32),
array([4132.892], dtype=float32),
array([5052.7007], dtype=float32),
array([2446.2231], dtype=float32),
array([990.3233], dtype=float32),
array([300.79807], dtype=float32),
array([56.973015], dtype=float32),
array([15.031897], dtype=float32)]
[array([8.324551], dtype=float32),
array([48.442204], dtype=float32),
array([53.581444], dtype=float32),
array([37.274475], dtype=float32),
array([23.69691], dtype=float32),
array([13.014685], dtype=float32),
array([5.5523143], dtype=float32),
array([2.6954546], dtype=float32)]
[array([0.02885363], dtype=float32),
array([0.03452305], dtype=float32),
array([0.03541843], dtype=float32),
array([0.03265775], dtype=float32),
array([0.03065244], dtype=float32),
array([0.02921683], dtype=float32),
array([0.02826867], dtype=float32),
array([0.02795516], dtype=float32)]
5e-2
[array([3613.4836], dtype=float32),
array([103224.836], dtype=float32),
array([126209.74], dtype=float32),
array([61080.594], dtype=float32),
array([24710.375], dtype=float32),
array([7493.67], dtype=float32),
array([1412.9], dtype=float32),
array([369.93982], dtype=float32)]
[array([44.609905], dtype=float32),
array([242.26326], dtype=float32),
array([267.88318], dtype=float32),
array([186.34833], dtype=float32),
array([118.46051], dtype=float32),
array([65.04938], dtype=float32),
array([27.747059], dtype=float32),
array([13.457992], dtype=float32)]
[array([0.03398943], dtype=float32),
array([0.5710917], dtype=float32),
array([0.8801918], dtype=float32),
array([0.10303641], dtype=float32),
array([0.05127094], dtype=float32),
array([0.03649474], dtype=float32),
array([0.03025967], dtype=float32),
array([0.02858927], dtype=float32)]
In previous experiment, popular
fix turned out to be a useful trick when it comes to make good initialization point.
The following experiemnts shows using popluation fix, focus on this one setting, tune the learning rate.
For be-b1,10-j8-i100-p800
, with 1e-3
learning rate, these are the result from last week.
54 po-b2-j4-i100-p80000 btl-spectral-do 0.7129
59 po-b2-j4-i100-p80000 gbtl-disturb-mle 0.9999
55 po-b2-j4-i100-p80000 gbtl-spectral_all-do 0.7231
56 po-b2-j4-i100-p80000 gbtl-spectral_all-mle 0.7228
58 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle 0.2216
57 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle 0.2215
By traversing the learning rate, and also give a abs
before sqrt
initial
In the following line up, numbers after mle
is the learning rate.
0 po-b2-j4-i100-p80000 btl-spectral-do 0.7199
1 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-0.0005 0.7529
6 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-0.001 0.7494
11 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-0.002 0.7480
16 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-0.005 0.7384
21 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-0.01 0.7276
26 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-0.02 0.7011
31 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-0.05 0.6399
36 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-0.1 0.6387
41 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-0.2 0.6962
46 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-0.5 0.7621
51 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-1.0 0.7610
56 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-1.5 0.7581
61 po-b2-j4-i100-p80000 gbtl-spectral_all-mle-2.0 0.7577
3 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-0.0005 -0.1092
8 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-0.001 0.0936
13 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-0.002 0.1232
18 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-0.005 0.6513
23 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-0.01 0.2291
28 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-0.02 0.3464
33 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-0.05 0.6828
38 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-0.1 0.7108
43 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-0.2 nan
48 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-0.5 0.7279
53 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-1.0 nan
58 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-1.5 nan
63 po-b2-j4-i100-p80000 gbtlinv-random_all-mle-2.0 nan
5 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-0.0005 -0.7518
10 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-0.001 -0.7514
15 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-0.002 -0.7515
20 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-0.005 -0.7546
25 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-0.01 -0.7572
30 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-0.02 -0.7446
35 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-0.05 -0.6361
40 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-0.1 -0.5531
45 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-0.2 -0.5600
50 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-0.5 -0.3868
55 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-1.0 0.7095
60 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-1.5 0.7443
65 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle-2.0 0.7479
2 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-0.0005 0.1029
7 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-0.001 0.1938
12 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-0.002 0.0872
17 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-0.005 0.6337
22 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-0.01 0.7605
27 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-0.02 0.6891
32 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-0.05 0.6530
37 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-0.1 0.5409
42 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-0.2 0.7538
47 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-0.5 0.7314
52 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-1.0 0.7305
57 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-1.5 0.7362
62 po-b2-j4-i100-p80000 gbtlneg-random_all-mle-2.0 0.7299
4 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-0.0005 -0.7518
9 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-0.001 -0.7514
14 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-0.002 -0.7515
19 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-0.005 -0.7534
24 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-0.01 -0.7580
29 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-0.02 -0.7430
34 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-0.05 -0.6222
39 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-0.1 -0.5909
44 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-0.2 -0.6711
49 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-0.5 -0.7351
54 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-1.0 -0.7441
59 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-1.5 -0.7445
64 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle-2.0 -0.7440
data_name algo_name acc
30 be-b1,10-j8-i100-p800 btl-spectral-do 0.8512
35 be-b1,10-j8-i100-p800 gbtl-disturb-mle 0.9993
31 be-b1,10-j8-i100-p800 gbtl-spectral_all-do 0.8606
32 be-b1,10-j8-i100-p800 gbtl-spectral_all-mle **0.9032
34 be-b1,10-j8-i100-p800 gbtlinv-spectral_all-mle 0.8530
33 be-b1,10-j8-i100-p800 gbtlneg-spectral_all-mle 0.8608
36 be-b1,10-j8-i100-p8000 btl-spectral-do 0.9786
41 be-b1,10-j8-i100-p8000 gbtl-disturb-mle 0.9999
37 be-b1,10-j8-i100-p8000 gbtl-spectral_all-do 0.9625
38 be-b1,10-j8-i100-p8000 gbtl-spectral_all-mle **0.9848
40 be-b1,10-j8-i100-p8000 gbtlinv-spectral_all-mle 0.3240
39 be-b1,10-j8-i100-p8000 gbtlneg-spectral_all-mle 0.3236
6 be-b10,100-j4-i100-p800 btl-spectral-do 0.1288
11 be-b10,100-j4-i100-p800 gbtl-disturb-mle 1.0000
7 be-b10,100-j4-i100-p800 gbtl-spectral_all-do 0.1296
8 be-b10,100-j4-i100-p800 gbtl-spectral_all-mle **0.1326
10 be-b10,100-j4-i100-p800 gbtlinv-spectral_all-mle 0.1301
9 be-b10,100-j4-i100-p800 gbtlneg-spectral_all-mle 0.1320
0 be-b10,100-j4-i100-p8000 btl-spectral-do 0.6115
5 be-b10,100-j4-i100-p8000 gbtl-disturb-mle 1.0000
1 be-b10,100-j4-i100-p8000 gbtl-spectral_all-do 0.6236
2 be-b10,100-j4-i100-p8000 gbtl-spectral_all-mle **0.6316
4 be-b10,100-j4-i100-p8000 gbtlinv-spectral_all-mle -0.1615
3 be-b10,100-j4-i100-p8000 gbtlneg-spectral_all-mle -0.1615
12 be-b5,20-j4-i100-p1600 btl-spectral-do 0.1782
17 be-b5,20-j4-i100-p1600 gbtl-disturb-mle 0.9999
13 be-b5,20-j4-i100-p1600 gbtl-spectral_all-do 0.1733
14 be-b5,20-j4-i100-p1600 gbtl-spectral_all-mle **0.1652
16 be-b5,20-j4-i100-p1600 gbtlinv-spectral_all-mle 0.1671
15 be-b5,20-j4-i100-p1600 gbtlneg-spectral_all-mle 0.1682
18 be-b5,20-j4-i15-p1600 btl-spectral-do 0.9333
23 be-b5,20-j4-i15-p1600 gbtl-disturb-mle 1.0000
19 be-b5,20-j4-i15-p1600 gbtl-spectral_all-do 0.9262
20 be-b5,20-j4-i15-p1600 gbtl-spectral_all-mle **0.9357
22 be-b5,20-j4-i15-p1600 gbtlinv-spectral_all-mle 0.9357
21 be-b5,20-j4-i15-p1600 gbtlneg-spectral_all-mle 0.9357
24 be-b5,20-j4-i8-p1600 btl-spectral-do 1.0000
29 be-b5,20-j4-i8-p1600 gbtl-disturb-mle 1.0000
25 be-b5,20-j4-i8-p1600 gbtl-spectral_all-do 0.9921
26 be-b5,20-j4-i8-p1600 gbtl-spectral_all-mle **1.0000
28 be-b5,20-j4-i8-p1600 gbtlinv-spectral_all-mle 1.0000
27 be-b5,20-j4-i8-p1600 gbtlneg-spectral_all-mle 1.0000
42 po-b2-j4-i10-p800 btl-spectral-do 0.9838
47 po-b2-j4-i10-p800 gbtl-disturb-mle 1.0000
43 po-b2-j4-i10-p800 gbtl-spectral_all-do 0.9475
44 po-b2-j4-i10-p800 gbtl-spectral_all-mle **0.9798
46 po-b2-j4-i10-p800 gbtlinv-spectral_all-mle 0.9152
45 po-b2-j4-i10-p800 gbtlneg-spectral_all-mle 0.9717
48 po-b2-j4-i100-p8000 btl-spectral-do 0.2851
53 po-b2-j4-i100-p8000 gbtl-disturb-mle 0.9989
49 po-b2-j4-i100-p8000 gbtl-spectral_all-do 0.3277
50 po-b2-j4-i100-p8000 gbtl-spectral_all-mle **0.3257
52 po-b2-j4-i100-p8000 gbtlinv-spectral_all-mle -0.1817
51 po-b2-j4-i100-p8000 gbtlneg-spectral_all-mle -0.1506
54 po-b2-j4-i100-p80000 btl-spectral-do 0.7129
59 po-b2-j4-i100-p80000 gbtl-disturb-mle 0.9999
55 po-b2-j4-i100-p80000 gbtl-spectral_all-do 0.7231
56 po-b2-j4-i100-p80000 gbtl-spectral_all-mle **0.7228
58 po-b2-j4-i100-p80000 gbtlinv-spectral_all-mle 0.2216
57 po-b2-j4-i100-p80000 gbtlneg-spectral_all-mle 0.2215