From 8e09ca6ca68c71bdab65525b529e2adfa281823c Mon Sep 17 00:00:00 2001 From: Ben Green Date: Wed, 1 Jul 2015 00:49:23 -0400 Subject: Got predict-victims running in parallel, drastically reducing the time for each test. Also changed how we get the rankings of infected individuals each day. --- R Scripts/find-parents.R | 15 ++- R Scripts/generate-network.R | 40 +++--- R Scripts/predict-victims-plots.R | 9 +- R Scripts/predict-victims.R | 39 +++--- experiments/build_network.py | 3 +- experiments/ml2.so | Bin 123652 -> 123652 bytes experiments/out.log | 255 +++++--------------------------------- experiments/process.py | 42 +++---- 8 files changed, 113 insertions(+), 290 deletions(-) diff --git a/R Scripts/find-parents.R b/R Scripts/find-parents.R index 3ec8809..023d7ba 100644 --- a/R Scripts/find-parents.R +++ b/R Scripts/find-parents.R @@ -6,8 +6,8 @@ # source('criminal_cascades/R Scripts/structural.R') ##### Initialize parameters based on what ml2 found -alpha = 0.061 -delta = 0.082 +alpha = 0.18 +delta = 0.09 ##### Get weights edges = dag_dat_test[!is.na(dag_dat_test$t2),] @@ -21,20 +21,27 @@ weights = p/p_tilde edges$weight = weights ##### Find most likely parents -parents = data.frame(vic=0,Npars=0,par_rank=0) +parents = data.frame(vic=0,Npars=0,par_rank=0,rand_rank=0) vics = setdiff(vic_ids,seeds) +print(length(vics)) for (u in vics){ + if(which(vics==u) %% 500 == 0) print(which(vics==u)) u_parents = edges[edges$to==u,] u_parents = u_parents[order(u_parents$weight,decreasing=T),] Nparents = dim(u_parents)[1] infector = V(g)$infector[u] infectorID = which(u_parents$from==infector) - parents[which(vics==u),] = c(u, Nparents, infectorID) + randID = sample(1:Nparents,1) + parents[which(vics==u),] = c(u, Nparents, infectorID, randID) } ##### Get some summary statistics on how well +mean(parents$par_rank==1) median(parents$par_rank[parents$Npars>9]) median(parents$par_rank[parents$Npars>99]) +edges[edges$to==2847,] +## baseline alg +# for each vic, find potential parents, pick one at random diff --git a/R Scripts/generate-network.R b/R Scripts/generate-network.R index 3b40969..dab81a4 100644 --- a/R Scripts/generate-network.R +++ b/R Scripts/generate-network.R @@ -3,20 +3,20 @@ setwd("~/Documents/Cascade Project/") source('criminal_cascades/R Scripts/temporal.R') source('criminal_cascades/R Scripts/structural.R') -alpha = 1/100 -beta = 0.02 -delta = 0.15 +alpha = 1/10 +beta = 0.01 +delta = 0.25 # lmbda = 1/10 t_max = 1000 N = 5000 g = forest.fire.game(nodes=N, fw.prob=0.3, ambs=1, directed=F) -plot(g, vertex.size=5, vertex.label=NA) +plot(g, vertex.size=3, vertex.label=NA) V(g)$seed = runif(vcount(g))".format(sys.argv[0])) root_victims, victims, non_victims, age = load(open(sys.argv[1])) - # alphas = np.arange(1e-3, 1e-2, 8e-4) # parameter of the time component - alphas = np.logspace(-4,-1,num=15) - # deltas = np.arange(0.001, 0.3, 0.008) # parameter of the structural component - deltas = np.logspace(-4,-1.7,num=15) - with open("out.log", "w") as fh: - for alpha, delta in product(alphas, deltas): - beta, roots, ll = ml3(root_victims, victims, non_victims, age, alpha, delta) - print "\t".join(map(str, [alpha, delta, beta, roots, ll])) - fh.write("\t".join(map(str, [alpha, delta, beta, roots, ll])) + "\n") - fh.flush() - - # alphas = np.arange(.04, .075, .003) # parameter of the time component - # # alphas = np.logspace(-4,-1,num=20) - # deltas = np.arange(.07, .11, .003) # parameter of the structural component - # # deltas = np.logspace(-2,-.5,num=20) - # lmbda = 0.10#np.logspace(-12,-3,num=10) + # # alphas = np.arange(1e-3, 1e-2, 8e-4) # parameter of the time component + # alphas = np.logspace(-4,-1,num=15) + # # deltas = np.arange(0.001, 0.3, 0.008) # parameter of the structural component + # deltas = np.logspace(-4,-1.7,num=15) # with open("out.log", "w") as fh: # for alpha, delta in product(alphas, deltas): - # lmbda, roots, ll = ml2(root_victims, victims, non_victims, alpha, delta, lmbda) - # print "\t".join(map(str, [alpha, delta, lmbda, roots, ll])) - # fh.write("\t".join(map(str, [alpha, delta, lmbda, roots, ll])) + "\n") + # beta, roots, ll = ml3(root_victims, victims, non_victims, age, alpha, delta) + # print "\t".join(map(str, [alpha, delta, beta, roots, ll])) + # fh.write("\t".join(map(str, [alpha, delta, beta, roots, ll])) + "\n") # fh.flush() - # alpha = 0.061 - # delta = 0.082 + alphas = np.arange(.15, .25, .01) # parameter of the time component + # alphas = np.logspace(-4,-.5,num=15) + deltas = np.arange(.08, .1, .01) # parameter of the structural component + # deltas = np.logspace(-2,-.1,num=15) + lmbda = 0.10#np.logspace(-12,-3,num=10) + with open("out.log", "w") as fh: + for alpha, delta in product(alphas, deltas): + lmbda, roots, ll = ml2(root_victims, victims, non_victims, alpha, delta, lmbda) + print "\t".join(map(str, [alpha, delta, lmbda, roots, ll])) + fh.write("\t".join(map(str, [alpha, delta, lmbda, roots, ll])) + "\n") + fh.flush() + + # alpha = .016 + # delta = 0.077 # beta, roots, ll = ml2(root_victims, victims, non_victims, alpha, delta, 1.) # print "\t".join(map(str, [alpha, delta, beta, roots, ll])) \ No newline at end of file -- cgit v1.2.3-70-g09d2