Exemplo n.º 1
0
def experiment_anomaly_detection(train, test, comb, num_train, anom_prob, labels):
	phi = calc_feature_vecs(comb.X)
	print phi.size

	# bayes classifier
	(DIMS, N) = phi.size
	w_bayes = co.matrix(1.0, (DIMS, 1))
	pred = w_bayes.trans()*phi[:,num_train:]
	(fpr, tpr, thres) = metric.roc_curve(labels[num_train:], pred.trans())
	bayes_auc = metric.auc(fpr, tpr)

	# train one-class svm
	kern = Kernel.get_kernel(phi[:,0:num_train], phi[:,0:num_train])
	ocsvm = OCSVM(kern, C=1.0/(num_train*anom_prob))
	ocsvm.train_dual()
	kern = Kernel.get_kernel(phi, phi)
	(oc_as, foo) = ocsvm.apply_dual(kern[num_train:,ocsvm.get_support_dual()])
	(fpr, tpr, thres) = metric.roc_curve(labels[num_train:], oc_as)
	base_auc = metric.auc(fpr, tpr)
	if (base_auc<0.5):
	    base_auc = 1.0-base_auc

	# train structured anomaly detection
	#sad = StructuredOCSVM(train, C=1.0/(num_train*anom_prob))
	sad = StructuredOCSVM(train, C=1.0/(num_train*0.5))
	(lsol, lats, thres) = sad.train_dc(max_iter=50)
	(pred_vals, pred_lats) = sad.apply(test)
	(fpr, tpr, thres) = metric.roc_curve(labels[num_train:], pred_vals)
	auc = metric.auc(fpr, tpr)
	if (auc<0.5):
	    auc = 1.0-auc

	return (auc, base_auc, bayes_auc)
Exemplo n.º 2
0
def experiment_anomaly_detection(train, test, comb, num_train, anom_prob, labels):
	# train one-class svm
	phi = calc_feature_vecs(comb.X)
	kern = Kernel.get_kernel(phi[:,0:num_train], phi[:,0:num_train])
	ocsvm = OCSVM(kern, C=1.0/(num_train*anom_prob))
	ocsvm.train_dual()
	kern = Kernel.get_kernel(phi, phi)
	(oc_as, foo) = ocsvm.apply_dual(kern[num_train:,ocsvm.get_support_dual()])
	(fpr, tpr, thres) = metric.roc_curve(labels[num_train:], oc_as)
	base_auc = metric.auc(fpr, tpr)

	# train structured anomaly detection
	sad = StructuredOCSVM(train, C=1.0/(num_train*anom_prob))
	(lsol, lats, thres) = sad.train_dc(max_iter=40)
	(pred_vals, pred_lats) = sad.apply(test)
	(fpr, tpr, thres) = metric.roc_curve(labels[num_train:], pred_vals)
	auc = metric.auc(fpr, tpr)

	return (auc, base_auc)
Exemplo n.º 3
0
def experiment_anomaly_detection(train, test, comb, num_train, anom_prob,
                                 labels):
    # train one-class svm
    phi = calc_feature_vecs(comb.X)
    kern = Kernel.get_kernel(phi[:, 0:num_train], phi[:, 0:num_train])
    ocsvm = OCSVM(kern, C=1.0 / (num_train * anom_prob))
    ocsvm.train_dual()
    kern = Kernel.get_kernel(phi, phi)
    (oc_as, foo) = ocsvm.apply_dual(kern[num_train:, ocsvm.get_support_dual()])
    (fpr, tpr, thres) = metric.roc_curve(labels[num_train:], oc_as)
    base_auc = metric.auc(fpr, tpr)

    # train structured anomaly detection
    sad = StructuredOCSVM(train, C=1.0 / (num_train * anom_prob))
    (lsol, lats, thres) = sad.train_dc(max_iter=40)
    (pred_vals, pred_lats) = sad.apply(test)
    (fpr, tpr, thres) = metric.roc_curve(labels[num_train:], pred_vals)
    auc = metric.auc(fpr, tpr)

    return (auc, base_auc)
Exemplo n.º 4
0
	fig = plt.figure()
	for i in xrange(4):
		plt.subplot(2,4,i+1)
		
		if i==0:
			plt.title("LatentSVDD")
			lsvdd.train_dc()
			(scores,lats) = lsvdd.apply(predsobj)
		if i==1:
			plt.title("StructPCA")
			spca.train_dc()
			(scores,lats) = spca.apply(predsobj)
		if i==2:
			plt.title("StructOCSVM")
			socsvm.train_dc()
			(scores,lats) = socsvm.apply(predsobj)
		if i==3:
			plt.title("SSVM")
			ssvm.train()
			(scores,lats) = ssvm.apply(predsobj)

		# plot scores
		Z = np.reshape(scores,(sx,sy))
		plt.contourf(X, Y, Z)
		plt.scatter(Dtrain[0,:],Dtrain[1,:],10)

		# plot latent variable
		Z = np.reshape(lats,(sx,sy))
		plt.subplot(2,4,i+4+1)
		plt.contourf(X, Y, Z)
		plt.scatter(Dtrain[0,:],Dtrain[1,:],10)
Exemplo n.º 5
0
    fig = plt.figure()
    for i in xrange(4):
        plt.subplot(2, 4, i + 1)

        if i == 0:
            plt.title("LatentSVDD")
            lsvdd.train_dc()
            (scores, lats) = lsvdd.apply(predsobj)
        if i == 1:
            plt.title("StructPCA")
            spca.train_dc()
            (scores, lats) = spca.apply(predsobj)
        if i == 2:
            plt.title("StructOCSVM")
            socsvm.train_dc()
            (scores, lats) = socsvm.apply(predsobj)
        if i == 3:
            plt.title("SSVM")
            ssvm.train()
            (scores, lats) = ssvm.apply(predsobj)

        # plot scores
        Z = np.reshape(scores, (sx, sy))
        plt.contourf(X, Y, Z)
        plt.scatter(Dtrain[0, :], Dtrain[1, :], 10)

        # plot latent variable
        Z = np.reshape(lats, (sx, sy))
        plt.subplot(2, 4, i + 4 + 1)
        plt.contourf(X, Y, Z)
        plt.scatter(Dtrain[0, :], Dtrain[1, :], 10)