📜  被动攻击分类器

📅  最后修改于: 2022-05-13 01:54:46.814000             🧑  作者: Mango

被动攻击分类器

被动攻击算法是一系列机器学习算法,初学者甚至中级机器学习爱好者都不太了解。但是,它们对于某些应用程序可能非常有用和高效。

注意:这是算法的高级概述,解释了它是如何工作的以及何时使用它。它没有深入研究其工作原理的数学。
被动攻击算法通常用于大规模学习。它是为数不多的“在线学习算法”之一。在在线机器学习算法中,输入数据是按顺序出现的,机器学习模型是逐步更新的,这与批量学习相反,批量学习一次使用整个训练数据集。这在有大量数据并且由于数据的庞大规模而无法训练整个数据集的情况下非常有用。我们可以简单地说,一个在线学习算法会得到一个训练样本,更新分类器,然后扔掉这个样本。

一个很好的例子是在 Twitter 等社交媒体网站上检测假新闻,每秒钟都在添加新数据。如果要从 Twitter 动态连续读取数据,数据量会很大,使用在线学习算法将是理想的选择。

被动攻击算法有点类似于感知器模型,因为它们不需要学习率。但是,它们确实包含正则化参数。

被动攻击算法的工作原理:
被动攻击算法之所以被称为是因为:

  • 被动:如果预测正确,保留模型,不做任何更改。即,示例中的数据不足以导致模型发生任何变化。
  • 激进:如果预测不正确,则对模型进行更改。即,对模型进行一些更改可能会纠正它。

理解这个算法背后的数学并不是很简单,超出了一篇文章的范围。本文仅提供算法的概述及其简单实现。要了解有关此算法背后的数学的更多信息,我建议观看 Victor Lavrenko 博士关于算法工作的精彩视频。

重要参数:

  • C:这是正则化参数,表示模型对不正确预测的惩罚
  • max_iter :模型对训练数据进行的最大迭代次数。
  • tol :停止标准。如果设置为 None,模型将在 ( loss > previous_loss – tol ) 时停止。默认情况下,它设置为 1e-3。

Python3中的简单实现
虽然这个算法的实际使用需要大量的数据流,但是为了这个例子,我们将使用流行的 iris 数据集。要了解有关此数据集的更多信息,您可以使用转到此链接。

代码:Python 的被动攻击分类器的 scikit-learn 库实现。

# Importing modules
from sklearn.datasets import load_iris
from sklearn.linear_model import PassiveAggressiveClassifier
from sklearn.metrics import classification_report, accuracy_score
from sklearn.model_selection import train_test_split
  
# Loading dataset
dataset = load_iris()
X = dataset.data
y = dataset.target
  
# Splitting iris dataset into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.1, random_state = 13)
  
# Creating model
model = PassiveAggressiveClassifier(C = 0.5, random_state = 5)
  
# Fitting model 
model.fit(X_train, y_train)
  
# Making prediction on test set
test_pred = model.predict(X_test)
  
# Model evaluation
print(f"Test Set Accuracy : {accuracy_score(y_test, test_pred) * 100} %\n\n")  
  
print(f"Classification Report : \n\n{classification_report(y_test, test_pred)}")

我们已经使用将正则化参数“C”设置为 0.5。现在让我们看看输出。
输出:

Test Set Accuracy : 93.33333333333333 %


Classification Report : 

              precision    recall  f1-score   support

           0       1.00      1.00      1.00         4
           1       1.00      0.75      0.86         4
           2       0.88      1.00      0.93         7

    accuracy                           0.93        15
   macro avg       0.96      0.92      0.93        15
weighted avg       0.94      0.93      0.93        15

我们已经达到了 93.33% 的测试集准确率。
结论:
如果你想处理大数据,这是一个非常重要的分类器,我鼓励你继续尝试使用这个分类器构建一个项目,并使用来自 Twitter 等社交媒体网站的实时数据作为输入。每秒都会有大量数据进入,这个分类器将能够处理这种大小的数据。