aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjeanpouget-abadie <jean.pougetabadie@gmail.com>2015-02-04 14:05:47 -0500
committerjeanpouget-abadie <jean.pougetabadie@gmail.com>2015-02-04 14:05:47 -0500
commit71cf5d890df71701d0fd60f1907a1cc63b508cbf (patch)
tree9acbdf7ee08d1ceba8b15e4eac169680ab77bb82
parenta819813ca6c310d84a52de51e7bc49ea8dd8a726 (diff)
downloadcascades-71cf5d890df71701d0fd60f1907a1cc63b508cbf.tar.gz
adding precision_recall curve
-rw-r--r--paper/figures/ROC_curve.pdfbin0 -> 13736 bytes
-rw-r--r--paper/sections/experiments.tex7
-rw-r--r--src/algorithms.py2
-rw-r--r--src/convex_optimization.py4
-rw-r--r--src/make_plots.py47
5 files changed, 36 insertions, 24 deletions
diff --git a/paper/figures/ROC_curve.pdf b/paper/figures/ROC_curve.pdf
new file mode 100644
index 0000000..27a8924
--- /dev/null
+++ b/paper/figures/ROC_curve.pdf
Binary files differ
diff --git a/paper/sections/experiments.tex b/paper/sections/experiments.tex
index 7b5d990..9580ef8 100644
--- a/paper/sections/experiments.tex
+++ b/paper/sections/experiments.tex
@@ -1,6 +1,11 @@
\begin{figure}
\includegraphics[scale=.4]{figures/watts_strogatz.pdf}
-\caption{Watts-Strogatz Model. 300 nodes, 20000 edges.}
+\caption{Precision-Recall curve Holme-Kim Model. 200 nodes, 16200 edges.}
+\end{figure}
+
+\begin{figure}
+\includegraphics[scale=.4]{figures/watts_strogatz.pdf}
+\caption{Watts-Strogatz Model. 200 nodes, 20000 edges.}
\end{figure}
diff --git a/src/algorithms.py b/src/algorithms.py
index fb0a37d..51f57bf 100644
--- a/src/algorithms.py
+++ b/src/algorithms.py
@@ -70,6 +70,7 @@ def correctness_measure(G, G_hat, print_values=True):
precision = 1. * tp / (tp + fp)
recall = 1. * tp / (tp + fn)
f1_score = 2.* tp / (2 * tp + fp + fn)
+ fall_out = 1. * fp / (fp + tn)
if print_values:
print("False Positives: {}".format(fp))
@@ -80,6 +81,7 @@ def correctness_measure(G, G_hat, print_values=True):
print("Precision: {}".format(precision))
print("Recall: {}".format(recall))
print("F1 score: {}".format(f1_score))
+ print("Fall Out: {}".format(fall_out))
return fp, fn, tp, tn
diff --git a/src/convex_optimization.py b/src/convex_optimization.py
index 0ff4521..e355bc6 100644
--- a/src/convex_optimization.py
+++ b/src/convex_optimization.py
@@ -80,7 +80,7 @@ def type_lasso(lbda, n_cascades):
return f_x, f_xz
-@timeout.timeout(70)
+@timeout.timeout(10)
def diff_and_opt(M_val, w_val, f_x, f_xz):
if M_val.dtype == bool:
@@ -90,7 +90,7 @@ def diff_and_opt(M_val, w_val, f_x, f_xz):
def F(x=None, z=None):
if x is None:
- return 0, cvxopt.matrix(-.1, (n,1))
+ return 0, cvxopt.matrix(-.001, (n,1))
elif z is None:
y, y_diff = f_x(x, M_val, w_val)
return cvxopt.matrix(float(y), (1, 1)),\
diff --git a/src/make_plots.py b/src/make_plots.py
index 9b0fc11..1b3a9df 100644
--- a/src/make_plots.py
+++ b/src/make_plots.py
@@ -78,26 +78,31 @@ def plot_ROC_curve(figure_name):
plot information in a pretty way
"""
plt.clf()
- fig = plt.figure(1)
- #labels = [0, .00002, .002, .02, .2, .5]
- x_sparse = [.57, .6, .61, .76, .9]
- y_sparse = [.41, .4, .37, .16, .03]
-
- x_lasso = [.55, .56, .66]
- y_lasso = [.5, .43, .25]
+ fig = plt.figure(2)
fig, ax = plt.subplots()
- plt.axis((np.log(45), np.log(5500), 0, 1))
- plt.xlabel("Number of Cascades")
- plt.ylabel("F1 score")
+ recall_sparse_200 = [.03, .16, .37, .4, .49]
+ precision_sparse_200 = [.9, .76, .61, .6, .63]
+
+ recall_lasso_200 = [.02, .11, .25, .43, .5, .54]
+ precision_lasso_200 = [.77, .77, .66, .56, .55, .51]
+
+ recall_sparse_50 = [.07, .13, .16, .58]
+ precision_sparse_50 = [.56, .53, .49, .37]
+
+ recall_lasso_50 = [.03, .18, .27, .82]
+ precision_lasso_50 = [.6, .47, .44, .24]
+
+ plt.xlabel("Recall")
+ plt.ylabel("Precision")
plt.grid(color="lightgrey")
- ax.plot(x_lasso, y_lasso, 'ko-', color="orange", label="Lasso")
- ax.plot(x_sparse, y_sparse, 'ko-', color="k", label="Our Method")
- plt.legend(loc="lower right")
- ax.set_xticks(x)
- ax.set_xticklabels(tuple(labels))
- plt.savefig("../paper/figures/"+figure_name)
+ ax.plot(recall_lasso_200, precision_lasso_200, 'ko-', color="lightseagreen", label="Lasso-200 cascades")
+ ax.plot(recall_sparse_200, precision_sparse_200, 'ko-', color="k", label="Our Method-200 cascades")
+ ax.plot(recall_lasso_50, precision_lasso_50, 'ko-', color="orange", label="Lasso-50 cascades")
+ ax.plot(recall_sparse_50, precision_sparse_50, 'ko-', color="cornflowerblue", label="Our Method-50 cascades")
+ plt.legend(loc="upper right")
+ plt.savefig("../paper/figures/"+"ROC_curve.pdf")
if __name__=="__main__":
@@ -107,13 +112,13 @@ if __name__=="__main__":
#convex_optimization.sparse_recovery)
#algorithms.greedy_prediction)
convex_optimization.sparse_recovery)
- if 0:
+ if 1:
compute_graph("../datasets/powerlaw_200_30_point3.txt",
- n_cascades=300, lbda=.002, passed_function=
- convex_optimization.sparse_recovery)
+ n_cascades=200, lbda=.01, passed_function=
+ #convex_optimization.sparse_recovery)
#algorithms.greedy_prediction)
- #convex_optimization.type_lasso)
- if 1:
+ convex_optimization.type_lasso)
+ if 0:
compute_graph("../datasets/barabasi_albert_300_30.txt",
n_cascades=100, lbda=.002, passed_function=
convex_optimization.sparse_recovery)