forked from wangbx66/contextual-bandit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
bleedtest.py
109 lines (96 loc) · 5.95 KB
/
bleedtest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import logging
logfile = logging.FileHandler('log')
logfile.setLevel(logging.INFO)
logconsole = logging.StreamHandler()
logconsole.setLevel(logging.DEBUG)
logging.basicConfig(format='%(name)s-%(levelname)s: %(message)s', level=logging.DEBUG, handlers=[logfile, logconsole])
logger = logging.getLogger('Main')
import time
seed = int(time.time() * 100) % 339
import numpy as np
np.random.seed(seed)
import random
random.seed(seed)
logger.info('===== Numpy/Python random seed = {0}'.format(seed))
import matplotlib.pyplot as plt
from agent import contextual_cascading_sherry
from agent import contextual_cascading_gsherry
from agent import contextual_cascading_monkey
from agent import contextual_full_monkey
from agent import contextual_full_lijing
from agent import absolute_cascading_ucb
from environment import contextual
from environment import c3synthetic_monkey_rng
from movielens import c3_movielens_rng
from isp import c3synthetic_isp_rng
from isp import c3synthetic_Zisp_rng
from isp import c3synthetic_Cisp_rng
def flowtest_monkey(T, **kw):
logger.info('Monkey flowtest')
logger.info('Require rng initialization')
logger.info('\n '.join(str(k) + ' ' + str(v) for k, v in kw.items()))
s = c3synthetic_monkey_rng(**kw)
reward, regret, similarity = contextual_cascading_sherry(contextual(s, cascade=True, rgamma=True, descend=False), T=T)
#reward, regret, similarity = contextual_cascading_sherry(contextual(s, cascade=True, rgamma=False, descend=False), T=T)
#reward, regret, similarity = contextual_cascading_sherry(contextual(s, cascade=True, rgamma=False, descend=True), T=T)
#reward, regret, similarity = contextual_full_lijing(contextual(s, cascade=False, rgamma=False, descend=False), T=T)
#reward, regret, similarity = absolute_cascading_ucb(contextual(s, cascade=True, rgamma=True, descend=False), T=T)
#reward, regret, similarity = absolute_cascading_ucb(contextual(s, cascade=True, rgamma=False, descend=False), T=T)
#reward, regret, similarity = absolute_cascading_ucb(contextual(s, cascade=True, rgamma=False, descend=True), T=T)
return reward, regret
def flowtest_movielens(T, **kw):
logger.info('Movielens flowtest')
logger.info('Require rng initialization')
logger.info('\n '.join(str(k) + ' ' + str(v) for k, v in kw.items()))
s = c3_movielens_rng(**kw)
reward, regret, similarity = contextual_cascading_sherry(contextual(s, cascade=True, rgamma=True, descend=False), T=T)
plt.plot(reward, 'r')
reward, regret, similarity = contextual_cascading_sherry(contextual(s, cascade=True, rgamma=True, descend=True), T=T)
plt.plot(reward, 'b')
reward, regret, similarity = contextual_full_lijing(contextual(s, cascade=False, rgamma=True, descend=False), T=T)
plt.plot(reward, 'g')
reward, regret, similarity = absolute_cascading_ucb(contextual(s, cascade=True, rgamma=True, descend=False), T=T)
plt.plot(reward, 'y')
#reward, regret, similarity = absolute_cascading_ucb(contextual(s, cascade=True, rgamma=True, descend=True), T=T)
return reward, regret
def flowtest_isp(T, **kw):
logger.info('ISP flowtest')
logger.info('Require rng initialization')
logger.info('\n '.join(str(k) + ' ' + str(v) for k, v in kw.items()))
s = c3synthetic_isp_rng(**kw)
reward, regret, similarity = contextual_cascading_sherry(contextual(s, cascade=True, rgamma=True), T=T)
reward, regret, similarity = contextual_cascading_sherry(contextual(s, cascade=True, rgamma=False), T=T)
reward, regret, similarity = contextual_full_lijing(contextual(s, cascade=False, rgamma=False), T=T)
reward, regret, similarity = absolute_cascading_ucb(contextual(s, cascade=True, rgamma=True), T=T)
reward, regret, similarity = absolute_cascading_ucb(contextual(s, cascade=True, rgamma=False), T=T)
def flowtest_gisp(T, **kw):
logger.info('Gamma ISP flowtest')
logger.info('Require rng initialization')
logger.info('\n '.join(str(k) + ' ' + str(v) for k, v in kw.items()))
s = c3synthetic_Zisp_rng(**kw)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=1.00)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=0.98)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=0.96)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=0.94)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=0.92)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=0.9)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=0.88)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=0.86)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=0.84)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=0.82)
reward, regret, similarity = contextual_cascading_gsherry(contextual(s, cascade=True, rgamma=True), T=T, gamma=0.80)
#kw = {'L':20, 'd':5, 'b':0, 'K':4, 'gamma':0.9, 'eps':0.1, 'v':0.35, 'disj':True}
#kw = {'L':100, 'd':10, 'b':0, 'K':10, 'gamma':0.95, 'eps':0.1, 'v':0.35, 'disj':False}
kw = {'L':200, 'd':20, 'b':0, 'K':2, 'gamma':0.95, 'eps':0.1, 'v':0.35, 'disj':False}
reward, regret = flowtest_monkey(500000, **kw)
plt.plot(regret)
plt.show()
#kw = {'n_movies':200, 'train_portion':0.7, 'd':10, 'K':2, 'baseline':(0.02, 0.04), 'gamma':1.00, 'disj':True}
#reward, regret = flowtest_movielens(7000, **kw)
plt.show()
#kw = {'isp':6461, 'd':5, 'v':0.35, 'k':10, 'gamma':0.90}
#flowtest_isp(1000, **kw)
#kw = {'isp':6461, 'd':5, 'v':0.35, 'k':10, 'gamma':0.90}
#flowtest_gisp(1000, **kw)
#plt.show()
logfile.close()