return -1 # construct forecaster eta = np.sqrt(2 * np.log(N) / T) F = EWAForecaster(N, eta) # we use the L2 loss def loss(p, y): return np.sqrt((p - y)**2) # run experiment e_losses = np.zeros((T, N)) F_losses = np.zeros(T, ) for t in xrange(T): e_losses[t, :] = np.array([expert(i, t) for i in xrange(N)]) F_losses[t] = F.predict(e_losses[t, :]) F.observe(e_losses[t, :]) # plot the losses for i in xrange(N): cum_loss = np.array([1 / float(t + 1) for t in xrange(T)]) * np.cumsum(e_losses[:, i]) plt.plot(range(T), cum_loss) cum_loss = np.array([1 / float(t + 1) for t in xrange(T)]) * np.cumsum(F_losses) plt.plot(range(T), cum_loss, color='black') plt.legend(['1', '2', '3', 'F']) plt.show()
eta = np.sqrt(2*np.log(N)/T) F = EWAForecaster(N, eta) # we use the L2 loss def loss(p, y): return np.sqrt((p-y)**2) # run experiment e_losses = np.zeros((T,N)) F_losses = np.zeros(T,) Y = np.zeros(T,) e_pred = np.zeros((T,N)) for t in xrange(T): e_t = np.array([expert(i) for i in xrange(N)]) e_pred[t,:] = e_t p_t = F.predict(e_t) y_t = np.random.binomial(1, p) Y[t] = y_t e_losses[t,:] = loss(e_t, 3*[y_t]) F_losses[t] = loss(p_t, y_t) F.observe(e_losses[t,:]) # plot the losses for i in xrange(N): cum_loss = np.array([1/float(t+1) for t in xrange(T)]) * np.cumsum(e_losses[:,i]) plt.plot(range(T), cum_loss) cum_loss = np.array([1/float(t+1) for t in xrange(T)]) * np.cumsum(F_losses) plt.plot(range(T), cum_loss, color='black')
if i == 0: return 1 elif i == 1: return 0 elif i == 2: return -1 # construct forecaster eta = np.sqrt(2*np.log(N)/T) F = EWAForecaster(N, eta) # we use the L2 loss def loss(p, y): return np.sqrt((p-y)**2) # run experiment e_losses = np.zeros((T,N)) F_losses = np.zeros(T,) for t in xrange(T): e_losses[t,:] = np.array([expert(i,t) for i in xrange(N)]) F_losses[t] = F.predict(e_losses[t,:]) F.observe(e_losses[t,:]) # plot the losses for i in xrange(N): cum_loss = np.array([1/float(t+1) for t in xrange(T)]) * np.cumsum(e_losses[:,i]) plt.plot(range(T), cum_loss) cum_loss = np.array([1/float(t+1) for t in xrange(T)]) * np.cumsum(F_losses) plt.plot(range(T), cum_loss, color='black') plt.legend(['1', '2', '3', 'F']) plt.show()
# we use the L2 loss def loss(p, y): return np.sqrt((p - y)**2) # run experiment e_losses = np.zeros((T, N)) F_losses = np.zeros(T, ) Y = np.zeros(T, ) e_pred = np.zeros((T, N)) for t in xrange(T): e_t = np.array([expert(i) for i in xrange(N)]) e_pred[t, :] = e_t p_t = F.predict(e_t) y_t = np.random.binomial(1, p) Y[t] = y_t e_losses[t, :] = loss(e_t, 3 * [y_t]) F_losses[t] = loss(p_t, y_t) F.observe(e_losses[t, :]) # plot the losses for i in xrange(N): cum_loss = np.array([1 / float(t + 1) for t in xrange(T)]) * np.cumsum(e_losses[:, i]) plt.plot(range(T), cum_loss) cum_loss = np.array([1 / float(t + 1)