Skip to content

Latest commit

 

History

History
316 lines (182 loc) · 10.9 KB

File metadata and controls

316 lines (182 loc) · 10.9 KB

十一、答案

第 1 章-Pentesting 中的机器学习介绍

  1. 尽管机器学习是一个有趣的概念,但在有限的商业应用中它是有用的。

错误的

  1. 机器学习应用程序太复杂,无法在云中运行。

错误的

  1. 对于两次 k-均值聚类,是否期望得到相同的聚类 结果?

  1. 具有离散值目标属性的预测模型可称为:

分类模型

  1. 以下哪种技术执行类似于 神经网络中的退出操作?

装袋

  1. 哪种神经网络结构最适合解决图像识别问题?

卷积神经网络

  1. 深度学习与传统机器学习有何不同?

深度学习算法可以处理更多的数据,在数据科学家较少的监督下运行。

  1. 以下哪项是机器学习项目中经常使用的技术?

所有这些

第 2 章-钓鱼域名检测

  1. 以下是要执行的一些文本清理任务:
    • 清除文本中的停止词、数字和标点符号。
    • 进行柠檬化。
  2. 创建一个单词词典,包括它们的频率。
  3. 从字典中删除非单词。
  4. 从数据中提取特征。

检查Chapter2-Practice文件夹中的答案:https://github.com/PacktPublishing/Mastering-Machine-Learning-for-Penetration-Testing/tree/master/Chapter%202/Chaptre2-练习

  1. 准备特征向量及其标签。
train_labels = np.zeros(702)
train_labels[351:701] = 1
train_matrix = extract_features(train_dir)
  1. 使用线性支持向量机分类器对模型进行训练。
model = LinearSVC()
model.fit(train_matrix,train_labels)
  1. 打印出模型的混淆矩阵。
result = model.predict(test_matrix)
print (confusion_matrix(test_labels,result))

第 3 章-使用 API 调用和 PE 头进行恶意软件检测

  1. 使用 pandas python 库加载数据集,这次添加 low_memory=False 参数。搜索该参数的作用。
df = pd.read_csv(file_name, low_memory=False)
  1. 准备将用于培训的数据。
original_headers = list(df.columns.values)
total_data = df[original_headers[:-1]]
total_data = total_data.as_matrix()
target_strings = df[original_headers[-1]]
  1. 使用test_size=0.33参数拆分数据。
train, test, target_train, target_test = train_test_split(total_data, target_strings, test_size=0.33, random_state=int(time.time()))
  1. 创建一组包含DecisionTreeClassifier()RandomForestClassifier(n_estimators=100)AdaBoostClassifier()的分类器:
classifiers = [
RandomForestClassifier(n_estimators=100),
DecisionTreeClassifier(),
AdaBoostClassifier()] 
  1. 什么是AdaBoostClassifier()

AdaBoost 分类器是一种元估计器,它首先在原始数据集上拟合分类器,然后在同一数据集上拟合分类器的其他副本。

  1. 使用三个分类器训练模型,并打印出每个分类器的度量。

检查Chapter3-Practice文件夹中的解决方案:https://github.com/PacktPublishing/Mastering-Machine-Learning-for-Penetration-Testing/tree/master/Chapter%203/Chapter3-练习。

第 4 章-利用深度学习进行恶意软件检测

  1. MLP 网络和深度学习网络的区别是什么?

深度网络已经是多层感知器网络,但至少有三个隐藏层。

  1. 为什么 DL 最近正在起飞?

因为我们可以获得更多的计算能力和数据。

  1. 为什么我们需要在不同的模型中迭代多次?

因为没有人总是能在没有迭代的情况下找到最佳模型或超参数。

  1. 将英语翻译成法语需要什么类型的 DL?

递归神经网络(RNN)

  1. 为什么恶意软件可视化是对恶意软件进行分类的好方法?

因为我们可以使用最先进的图像识别技术来构建恶意软件分类器。

  1. 激活功能的作用是什么?

它定义给定节点的输出。换句话说,它将 a-NN 中节点的输入信号转换为输出信号。

  1. 你能提到三种 DL 架构吗?

    • 卷积神经网络CNNs
    • 递归神经网络RNNs
    • 长/短期记忆网络LSTMs

第 5 章-机器学习僵尸网络检测

正如我们在每一章之后所做的那样,我们将给你机会练习你所学到的知识并评估你的技能。本章的 GitHub 存储库包含指向实践文件夹中僵尸网络流量数据集的链接 https://github.com/PacktPublishing/Mastering-Machine-Learning-for-Penetration-Testing/tree/master/Chapter5

  1. 下载数据集并将其与 pandas 库一起加载
  2. 选择合适的功能
  3. 识别培训和测试集,然后将其导出到.pickle文件中
  4. 加载.pickle文件
  5. 使用与第 5 章僵尸网络检测和机器学习相同的代码块。

导入支持向量机分类器:

from sklearn.svm import *

训练 SVM 模型:

clf= SVC(kernel='rbf')
clf.fit(Xdata, Ydata)

打印出构建模型的精度:

Score = clf.score(XdataT,YdataT)
print (“The Score of the SVM Classifier is”, Score * 100)

第 6 章-异常检测系统中的机器学习

  1. 什么是异常?

异常是指偏离标准、正常或预期的事物。

  1. 什么是马尔可夫链?

马尔可夫链,或者我们称之为马尔可夫过程,是用于任何随机系统的随机模型,该系统根据固定概率改变其状态。

  1. 什么是隐马尔可夫模型?

隐马尔可夫模型是一个马尔可夫过程,我们无法直接观察系统的状态。每个状态都有一个固定的发射的概率。HMM 模型或分类器的主要目标是为序列族指定一个标签,这意味着将一个观察序列链接到一个标签序列。

  1. 我们如何用隐马尔可夫模型检测异常?

根据隐马尔可夫模型的定义,我们可以用它来区分网络流量的正常和异常行为。

  1. 时间序列异常检测和其他类型的异常检测有什么区别?

时间序列是在连续时间获得的值,它们之间的间隔通常相等。在时间序列异常检测中,我们检测特定时间记录的数据点序列中的异常。在大多数其他检测方法中,我们使用的是基于图形的技术。

  1. 有监督和无监督机器学习异常检测之间有什么区别?

这两种模型之间的差异是基于所使用的机器学习算法。例如,在有监督机器学习异常检测中,我们可以使用分类;而在无监督机器学习异常检测中,我们可以使用聚类。

第 7 章-检测高级持续威胁

  1. 以下哪项不是网络杀戮链中的一步?

(a) 扫描

  1. 以下哪个选项不是入侵 分析菱形模型的节点?

(c) 程序

  1. 一个 Logstash 配置文件需要多少部件?

(b) 三,

  1. 在 ElasticSearch 中,什么是索引?

(a) 在索引中存储数据的过程

  1. 在 Elasticsearch 中,什么是节点?

(a) Elasticsearch 的一个实例

  1. 在 Elasticsearch 中,什么是碎片?

(c) 共享资源(RAM、vCPU)

  1. Elasticsearch 是否有模式?

(a) 对

第 8 章-使用对抗式机器学习绕过入侵检测系统

  1. 你能简单地解释一下为什么过度训练机器学习模式不是一个好主意吗?

通过过度训练机器学习模型来训练数据,我们训练模型的方式会对模型在新数据上的性能产生负面影响。也称为过盈

  1. 过盈和过盈的区别是什么?

过度拟合是指过度训练模型,而欠拟合是指既不能对训练数据建模,也不能推广到新数据的模型。

  1. 逃避攻击和中毒攻击有什么区别?

在绕过对抗性攻击中,攻击者尝试许多不同的样本,以确定绕过它的学习模式;在毒害攻击中,攻击者在训练阶段毒害模型。

  1. 对抗式集群是如何工作的?

当攻击者操纵输入数据(添加一小部分攻击样本)以便新添加的样本可以隐藏在现有集群中时,就会发生对抗性集群。

  1. 使用何种类型的对抗性攻击来避免入侵检测系统?

演示中使用的攻击称为基于雅可比显著图的攻击。

  1. 前一次攻击是逃避攻击还是中毒攻击?

这是一种致命的对抗性攻击。

第 9 章-绕过机器学习恶意软件检测器

  1. 生成性对抗网络的组成部分是什么?

生成性对抗网络的两个主要组成部分是生成器和鉴别器。

  1. 发生器和鉴别器之间的区别是什么?

生成器将潜在样本作为输入。它们是随机生成的数字,并经过训练以生成图像,而鉴别器只是一个分类器,通过监督学习技术进行训练,以检查图像是真实的(1)还是虚假的(0)。

  1. 当我们生成恶意软件对抗性样本时,如何确保它们仍然有效?

为了避免无效样本,我们可以使用沙盒/Oracle。

  1. 做一点研究,然后简要说明如何检测对抗性样本

为了检测对抗性样本,我们可以使用二值阈值来去除噪声。

  1. 强化学习与深度学习的区别是什么?

强化学习通过探索特定状态下可用的行为来学习如何最大化奖励函数,而深度学习则从已展示的示例中学习。

  1. 监督学习和强化学习有什么区别?

在监督学习中,给定输入数据X和标签Y我们正在学习函数f:X→ YX映射到Y。在强化学习中,经过多次体验后,代理变得越来越聪明。

  1. 代理如何在强化学习中学习?

在强化学习中,agent 通过与基于奖励函数的环境交互来优化其性能。

第 10 章-机器学习和特征工程的最佳实践

  1. 特征工程和特征选择之间的区别是什么?

特征选择是特征工程的一部分。

  1. 主成分分析****主成分分析与特征选择有什么区别?

特征选择采用数据集并提供最佳特征集,而 PCA 是一种降维方法。

  1. 我们如何对日期和时间等功能进行编码?

其中一种技术是添加时间变量的(正弦、余弦)变换。

  1. 为什么打印培训和测试准确度有用?

通过比较这两个度量来检测过拟合是很有用的。

  1. 我们如何部署机器学习模型并在产品中使用它?

有许多方法可以将机器学习模型用于生产,例如 web 服务和容器化,具体取决于您的模型(在线、离线?深度学习、SVM、朴素贝叶斯?)。

  1. 为什么特征工程比其他步骤花费更多的时间?

因为分析、清理和处理特征比构建模型花费更多的时间。

  1. 虚拟变量的作用是什么?

虚拟变量是用于回归分析的数值变量,用于表示研究中样本的子组。在研究设计中,通常使用虚拟变量来区分不同的治疗组。