机器学习探索之旅:开启智能预测的新篇章!!! 笔记 ! ! !)

目录

一 . 机器学习基础:

1. 什么是机器学习:

Langley(1996)的定义:

Tom Mitchell(1997)的定义:

冷雨泉(等)的观点:

2. 机器学习与人工智能的关系是什么

3.机器学习与数据库,数据挖掘的关系:

4.机器学习的范围:

5.机器学习的应用

6.机器学习的核心要素三点:

7.机器学习的主要类型: 

8. 常见的机器学习的关键术语

9. 机器学习(Machine Learning, ML)的实现流程通常包括以下步骤:

10. 机器学习的背景知识

1. 希腊字母

2. 数学基础 

2.1. 高等数学

2.2 线性代数

2.3. 概率论与数理统计

11. 数据预处理及距离度量

一、数据预处理

1. 定义与重要性

2. 具体方法

3. 实现流程:

4. 实际应用

二、距离度量

1. 定义与重要性

2. 常见类型

曼哈顿距离(Manhattan Distance)

欧氏距离(Euclidean Distance)

切比雪夫距离 ( Chebyshev Distance )

​编辑

闵可夫斯基距离(Minkowski Distance)

3. 应用场景

参考文献:

二. 核心算法详解

 一. K近邻算法—KNN

        1. 算法原理:

2.算法三要素:

 2.1 . 距离度量

 2.2 . K值的选择

 2.3.  分类决策规则 

3.算法性能度量:

4.算法优缺点及改进:

 二. 决策树:

1. 决策树原理

2. ID3算法

3. C4.5算法

4. CART算法

三、回归分析——Linear Regression(线性回归)

一、线性回归的基本原理

二、损失函数

三、最小二乘法

四、总结

四. 基于密度的聚类—DBSCAN

一、基本概念

密度的定义

点的分类

点之间的连接 

二、算法优缺点

三、应用场景

五:K-means算法

1. K-means算法原理

2. K-means算法优点

3. K-means算法缺点

4. K-means算法改进——K值大小选择

5. K-means算法改进——K个初始点分布

6. K-means++算法改进

7. K-medoids算法改进

8. K-means与K-medoids算法对比

9. Mini Batch K-Means算法改进

三. 集成学习总结

1. 集成学习方法概述

2. Bagging和随机森林算法

3. Boosting和Adboost

4. GBDT、XGBoost和LightGBM

5. Stacking

6. 弱学习器与强学习器

7. Bagging与Boosting的对比

 8.决策树与这些算法框架进行结合所得到的新的算法:

9. 类不平衡的问题

四: 结尾


引言:

        最近需要记录机器笔记,So,我就打算记录在博客上,这样子也方便自己随时查看 !!! Ok!! 开始把 ! ! ! 


一 . 机器学习基础:

     1. 什么是机器学习:

        关于机器学习的定义,这里列举一些不同时段的佬的给的一些描述:但核心思想是一致

  1. Langley(1996)的定义

    • 机器学习是一门人工智能的科学。
    • 该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。
  2. Tom Mitchell(1997)的定义

    • 机器学习是对能通过经验自动改进的计算机算法的研究。
  3. Alpaydin(2004)的定义

    • 机器学习是用数据或以往的经验来优化计算机程序的性能标准。
  4. 冷雨泉(等)的观点:

    • 机器学习是一门研究机器获取新知识和新技能,并识别现有知识的学问。

 总结概括:

机器学习是实现人工智能的一个核心技术,它让计算机能够自动地从数据中学习并改进其性能,从而在各种应用场景中发挥出巨大的潜力。 

 2. 机器学习与人工智能的关系是什么

      一张图片可以概述他们之间包含的关系:

  

人工智能:是一门研究如何使计算机具备人类智能的学科,它涵盖了感知、认知、学习、推理、决策等多个方面。

机器学习:是人工智能的一个分支,专注于开发算法和技术,使计算机系统能够从数据中学习并改进其性能。

深度学习:是机器学习的一种特殊形式,它利用神经网络模型进行复杂任务的自动建模和学习。深度学习模型通常包含多个隐藏层,能够学习和提取数据中的高级特征。

 总结概述:

机器学习人工智能深度学习之间存在紧密且独特的关系。机器学习是人工智能的一个核心领域,而深度学习则是机器学习中使用神经网络模型进行高级数据处理的一种技术。这三者共同推动着人工智能技术的不断发展和创新。

 3.机器学习与数据库,数据挖掘的关系:

机器学习与数据库:

1. 在数据处理与存储上 

数据库是存储和管理大量数据的基础设施,为机器学习提供了丰富的数据源。机器学习算法需要依赖大量的数据来进行训练和测试,而数据库则提供了高效的数据存储和检索机制,使得机器学习算法能够方便地获取所需的数据。

 机器学习与数据挖掘:

  1. 共同目标

    数据挖掘和机器学习都致力于从数据中发现有价值的知识、模式和规律。它们的目标是让计算机能够像人类一样进行智能决策和预测,从而实现自主化和智能化。
  2. 方法与技术重叠

    数据挖掘和机器学习在方法和技术上存在一定的重叠。例如,决策树、神经网络、支持向量机等算法在数据挖掘和机器学习中都有广泛的应用。这些算法能够从数据中提取特征、构建模型,并进行预测和分类。
  3. 相互促进

    数据挖掘为机器学习提供了丰富的数据源和预处理技术。通过数据挖掘技术,可以从原始数据中提取出有用的特征和模式,为机器学习算法的训练和测试提供高质量的输入数据。同时,机器学习算法也为数据挖掘提供了强大的分析工具和方法,使得数据挖掘任务能够更加高效和准确地完成。        

    4. 区别:

  1.  数据挖掘更侧重于从大量数据中发现有用的模式和规律,以便支持决策和预测。
  2.  机器学习则更侧重于算法和模型的学习过程,通过学习从数据中提取特征来进行预测和决策。

总概:

  • 机器学习为数据挖掘提供了强大的分析工具和方法,而数据库则为数据挖掘提供了丰富的数据源和数据处理技术。
  • 这三者共同构成了大数据分析的核心内容,为数据的处理、分析、挖掘和预测提供了强大的技术支持和工具。

 现如今 人工智能火的飞起:一些国内外知名人工企业榜单:

 4.机器学习的范围:

机器学习的范围广泛。也涉及多个方面和领域。(确实,我们计算机就业范围也比较广泛:码农烧烤,Java 炒粉.......) 

 5.机器学习的应用

  简单列举一些:

 6.机器学习的核心要素三点:

  1. 数据:机器学习的基础,包括结构化和非结构化数据。数据的质量和数量对机器学习的效果有重要影响。
  2. 模型:用于从数据中提取模式和洞察力的核心。模型的选择和设计需要根据具体问题和数据集的特点来确定。
  3. 算法:构建模型的步骤和规则,如决策树、神经网络等。算法的选择和优化对机器学习的性能和准确性至关重要。

 7.机器学习的主要类型: 

  1. 监督学习:使用标记数据集训练模型,如线性回归、逻辑回归、支持向量机等。主要用于分类和回归问题。
  2. 无监督学习:处理未标记数据,寻找数据中的结构和模式,如K均值聚类、主成分分析等。用于探索数据中的模式和结构。
  3. 强化学习:通过与环境的交互学习达到目标的最优策略。主要用于解决需要连续决策的问题,如自动驾驶、游戏AI等。

  8. 常见的机器学习的关键术语

数据集/样本集:记录这组数据的集合,即这个表格的数据。

实例/样本:记录一个时间/对象的描述,如表格中的任意一行。

(样本)属性/特征:反映对象(样本)在某一方面的性质。

(样本)属性值/特征值:(样本)属性/特征对应所取的值。


学习/训练:通过数据寻找最优模型的过程。

训练数据:训练过程中使用的数据。

训练样本:训练过程中的每一个样本。

标签/标记:样本的结果信息。


标记空间/输出空间:所有标记结果的集合。

训练样本:训练过程中的每一个样本。

样例:既包含样本属性值,又包含标签的样本。然而,样本包括训练样本和测试样本,样本不一定有标签。


预测:利用已有数据学习得到一个规律,用该规律得到输出结果。

测试:通过学习得到的模型预测出得到的结果与样本进行检测的过程。

测试样本:用于进行检测的样本。

新样本:没有用于模型训练的样本都可以认为是该模型的新样本。


分类:预测结果为离散值,包含二分类和多分类。

回归:预测结果为连续值。

聚类:物以类聚。按照某一个特定的标准(比如距离),把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇内的数据对象的差异性也尽可能的大。


监督学习:学习任务为分类或回归问题,样本具有标记信息

无/非监督学习:学习任务为聚类及降维问题,样本无标记信息。

半监督学习:是监督学习与无监督学习相结合的一种学习方法。利用无监督学习算法训练得到参数,然后用一部分加了标签的数据测试。

强化学习:以“试错”的方式进行学习,通过交互获得的奖赏指导行为,目标是获得最大的奖赏


9. 机器学习(Machine Learning, ML)的实现流程通常包括以下步骤:

1、问题定义: 确定目标:是分类、回归、聚类、降维还是其他类型的机器学习任务。 确定数据需求:需要哪些数据,数据的来源和类型。

2、数据收集: 收集原始数据:可能来自数据库、文件、API、传感器等。 确保数据的多样性和代表性。

3、数据预处理: 清洗数据:处理缺失值、异常值、重复数据等。 特征工程:选择、创建、转换特征以提高模型性能。 数据标准化/归一化:使数据具有统一的尺度。

4、选择模型: 根据问题类型和数据特性选择合适的机器学习算法。 可能包括决策树、支持向量机、神经网络、随机森林等。

5、训练模型: 使用训练数据集来训练模型。 调整模型参数(超参数调优)以优化性能。

6、模型评估: 使用验证集或交叉验证方法评估模型性能。 常用的评估指标包括准确率、召回率、F1分数、均方误差等。

7、模型优化: 根据评估结果调整模型或重新选择模型。 可能包括特征选择、模型融合、集成学习等技术。

8、模型验证: 使用独立的测试集来验证模型的泛化能力。

9、模型部署: 将训练好的模型部署到生产环境中。 可能涉及到模型的持久化、API封装、实时预测等。

10、监控与维护: 持续监控模型的性能,确保其稳定性和准确性。 定期使用新数据重新训练模型以适应数据的变化。

11、反馈循环: 收集模型在实际应用中的反馈。根据反馈调整模型或数据,形成闭环优化。 这个流程是迭代的,可能需要多次循环调整以达到最佳性能。此外,随着数据的积累和算法的更新,机器学习项目是一个持续进化的过程。

10. 机器学习的背景知识

1. 希腊字母

 

2. 数学基础 

常见的一些:

2.1. 高等数学

比如一些 导数、微分、泰勒公式....
 

导数:

一些常用的导数公式:

四则运算:

2.2 线性代数

向量、矩阵、行列式、秩、线性方程组、
特征值和特征向量.……

简单列举一些概论:

2.3. 概率论与数理统计

常见分布、期望、协
随机事件和概率、概率的基本性质和公式、

方差……

 常用一些期望:

11. 数据预处理及距离度量

一、数据预处理

1. 定义与重要性

        数据预处理(Data Preprocessing)是指在主要的处理以前对数据进行的一些处理。现实世界中的大规模数据往往是杂乱的,表现为不完整性、不一致性、有噪声、冗余性等,这类数据无法直接进行数据挖掘,或挖掘结果差强人意。数据预处理技术包括数据清理、数据集成、数据变换、数据归约等,它们在数据挖掘之前使用,可以大大提高数据挖掘模式的质量,降低实际挖掘所需要的时间。

2. 具体方法
  • 数据选取:(1) 选择能够赋予属性名和属性值明确含义的属性数据。 (2) 避免选取重复数据。 (3) 合理选择与学习内容关联性高的属性数据。
  • 数据清理缺失数据处理: 某个或多个属性值的缺失,可以将其删除,也可通过现有数据信息推测缺失值,然后进行填补,填补的值应接近于遗漏的真实值。常用方法如:均值填补,众数填补 噪声数据处理指属性值发生严重偏离,形成了孤立的点。可将其删除,也可以通过拟合平滑技术进行修改。常用方法如:分箱技术,回归方法,聚类技术。

  • 数据集成:数据集成就是将多个数据源中的数据合并在一起形成数据仓库/数据库的技术和过程。需要注意以下三个问题: (1) 多个数据集匹配。当一个数据库的属性与另一个数据库的属性匹配时,必须注意数据的结构  (2) 数据冗余。两个数据集有两个命名不同但是实际数据相同的属性,那么其中一个属性就是冗余的。 (3) 数据冲突。由于表示,比例,编码等不同,现实世界中的同一实体,在不同数据源中的属性值可能不同,从而产生歧义。

  • 数据变换:通过平滑聚集、数据概化、规范化等方式将数据转换成适用于数据挖掘的形式。例如,对模型进行归一化和标准化处理:

    • 归一化:通过对原始数据进行变换,把数据映射到[mi,mx](默认为[0,1])之间。
    • 标准化:通过对原始数据进行标准化,转换为均值为0、标准差为1的标准正态分布的数据。
  • 数据归约:在大数据集上进行复杂的数据分析和挖掘需要很长的时间,数据规约产生更小但保持原数据完整性的新数据集。在规约后的数据集上进行分析和挖掘将更有效率。 数据规约的意义在于: 降低无效、错误数据对建模的影响,提高建模的准确性。少量且具代表性的数据将大幅缩减数据挖掘所需的时间。 数据归约包括维归约、数量归约和数据压缩。

3. 实现流程:

4. 实际应用

数据预处理是数据挖掘、机器学习等领域中不可或缺的一步。通过数据预处理,可以提高模型的准确性、稳定性和效率。例如,在图像处理中,通过数据预处理可以去除图像中的噪声和冗余信息,提高图像的质量;在自然语言处理中,通过数据预处理可以清洗文本数据,提高文本分析的准确性。

二、距离度量

1. 定义与重要性

距离度量(Distance Metric)是数学中的法则,用在某些空间中测量沿曲线的距离和曲线间的角度,包含曲线所在空间的曲率的信息。在数据挖掘、机器学习等领域中,距离度量是评估数据点之间相似性或差异性的重要工具。通过计算数据点之间的距离,可以揭示数据之间的内在规律和模式。

2. 常见类型
曼哈顿距离(Manhattan Distance)

欧氏距离(Euclidean Distance)

欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。      

两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离:

切比雪夫距离 ( Chebyshev Distance )
闵可夫斯基距离(Minkowski Distance)

3. 应用场景

        距离度量在数据挖掘、机器学习等领域中有广泛的应用。例如,在聚类分析中,可以使用距离度量来衡量数据点之间的相似性,从而将数据点聚集成不同的簇;在分类任务中,可以使用距离度量来计算样本与类别中心之间的距离,从而确定样本的类别归属;在推荐系统中,可以使用距离度量来衡量用户或物品之间的相似性,从而进行精准的推荐。

 尽管有多种算法,但是数据决定一切:因为:各种不同算法在输入的数据量达到一定级数后,都有相近的高准确度

参考文献:

 [1] Andrew Ng. Machine Learning[EB/OL]. StanfordUniversity,2014.https://www.coursera.org/course/ml

[2] 李航. 统计学习方法[M]. 北京: 清华大学出版社,2019.

[3] 周志华. 机器学习[M]. 北京: 清华大学出版社,2016.

[4] Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning[M]. New York: Springer,2001.

[5] CHRISTOPHER M. BISHOP. Pattern Recognition and Machine Learning[M]. New York: Springer,2006.

[6] Stephen Boyd, Lieven Vandenberghe, Convex Optimization[M]. Cambridge: Cambridge University Press, 2004.

[7] TOM M MICHELLE. Machine Learning[M]. New York: McGraw-Hill Companies,Inc,1997.

二. 核心算法详解

  一. K近邻算法—KNN

  1. 算法原理:

          K近邻算法(K-Nearest Neighbors,KNN)是一种简单直观的有监督学习方法,广泛应用于分类和回归任务中。其基本原理是:存在一个样本数据集合,也称为训练样本集,且样本集中每个数据都存在标签,即知道样本集中每一个数据与所属分类的对应关系。对于给定的输入样本(无标签),KNN算法会计算其与训练集中所有样本的距离,并选取距离最近的K个样本作为“邻居”。这些邻居的类别或数值将被用来决定新样本的类别或数值。具体来说,对于分类任务,通常采用多数表决法,即K个邻居中出现次数最多的类别作为待分类样本的预测类别;对于回归任务,则可能采用K个邻居的平均值或者加权平均值作为预测值。

算法步骤: 

2.算法三要素:

KNN算法的三要素包括距离度量K值的选择分类决策规则

        2.1 . 距离度量

        距离度量的方式不同,对于领域中的集合有很大的影响。 常用的距离度量方式包括:闵科夫斯基距离,余弦相似度,杰卡德相似度

        2.2 . K值的选择

         k值的选择对算法的最终结果有非常大的影响 。 常用的K值的选取方法为:经验值,交叉验证

         交叉验证:‘

         交叉验证主要方法:

   k折交叉验证、留一法交叉验证 

 其中:  k折交叉验证

k折交叉验证 

 K折交叉验证的步骤如下:

  1. 将其中一个子集作为验证集(测试集),其余的K-1个子集合并作为训练集。
  2. 使用当前的训练集来训练模型,得到训练好的模型。
  3. 计算模型在当前验证集上的性能指标,如准确率、召回率、F1分数等。
  4. 计算所有K次迭代的性能指标的平均值。
  5. 通过多轮交叉验证的平均结果选择表现最好的模型或超参数

 留一法 ( leave-one-out cross validation):

留一法与K折交叉验证类似,但是每次只留下一个样本做验证集,其它样本做训练集。

留一法计算最繁琐,但样本利用率最高。适合于小样本的情况。


         2.3.  分类决策规则 

         决策规则是对待分类的样本进行分类的一个规则,不同规则对分类结果有很大影响。 常用的决策规则为:多数表决,加权投票法

 

  3.算法性能度量:

        算法性能度量是衡量算法好坏的标准,对于KNN算法来说,常用的性能度量方法包括准确率、召回率、F1分数等。这些度量方法可以帮助评估算法在给定数据集上的表现,并用于比较不同算法之间的优劣。然而,由于KNN算法的计算复杂度和存储成本较高,因此在处理大规模数据集时可能会受到限制。在实际应用中,需要根据具体场景和需求来选择合适的性能度量方法和优化策略。

  4.算法优缺点及改进:

优点

  • 思想简单,理论成熟,易于理解和实现。
  • 无须训练过程,除了存储训练数据外,不需要额外的训练开销。
  • 适应性强,可以很好地处理多分类问题,并且对于噪声数据有一定的鲁棒性。

缺点

  • 计算成本高,需要计算待分类样本与训练集中每个样本的距离,当训练集很大时,计算量巨大。
  • 存储成本高,需要存储全部训练数据。
  • 受K值影响大,K的选择对分类结果有显著影响,选择不当可能会导致过拟合或欠拟合。

改进方法

  • 加权KNN:在标准的KNN中,每个邻居对预测结果的贡献是相同的。而在加权KNN中,可以根据距离给邻居赋予不同的权重,距离越近的邻居权重越大,从而提高预测精度。
  • 基于距离的KNN:根据距离阈值来选择邻居,而不是固定数量的最近邻。这样可以根据数据分布的密度动态调整邻居的数量,提高算法的灵活性。
  • 适应性KNN:根据样本间的局部密度动态调整K值。在数据密集区域使用较小的K值,在稀疏区域使用较大的K值,从而提高算法的适应性。
  • 优化存储和计算:通过特征选择、特征缩放等预处理方法减少不必要的特征,提高计算效率。同时,可以使用空间索引结构(如KD树、R树等)来加速搜索最近邻的过程,进一步降低计算成本。

 二. 决策树:

        决策树是一种直观且强大的机器学习算法,广泛应用于分类和回归任务。它通过递归地选择最佳特征来划分数据集,构建出一个树形结构,其中每个内部节点表示一个特征测试,每个分支代表测试的结果,而每个叶节点则给出分类结果或回归值。

1. 决策树原理

决策树的核心原理在于通过一系列的特征测试,将数据逐步划分到不同的子集中,直到每个子集都足够纯净或达到停止条件。这种划分过程是通过递归地选择最佳分裂特征来实现的,而选择的标准通常包括信息增益(ID3算法)、增益率(C4.5算法)或基尼指数(CART算法)。

图片:

决策树的学习通常包括以下三个步骤:

决策树的构建过程通常包括以下几个步骤

  • 选择根节点:从根节点开始,根据最佳分裂特征将数据集划分为多个子集。
  • 选择特征:在每个节点处,选择一个特征进行划分,选择的标准取决于所使用的算法。
  • 分割数据:根据选定的特征,将数据分割成不同的子集。
  • 递归构建树:对每个子集递归执行相同的过程,直到满足停止条件(例如,节点纯度达到最大、树的深度达到限制或节点数过少)。
  • 叶节点:最终的叶节点给出预测值,对于分类问题,通常是该节点中样本最多的类别;对于回归问题,通常是该节点中样本的平均值。

此外,决策树还包括剪枝技术,用于减少模型的复杂度,防止过拟合。剪枝可以在树构建过程中进行(预剪枝),也可以在树生成后进行(后剪枝)。

2. ID3算法

ID3算法(Iterative Dichotomiser 3)是决策树算法中的经典之作,由澳大利亚计算机科学家Ross Quinlan在1986年提出。它基于信息论中的熵和信息增益的概念,通过递归地选择最佳属性来划分数据集,从而构建决策树。

其大致为:

  1.  初始化数据集合和特征集合;
  2. 计算数据集合信息熵和所有特征的条件熵,选择信息增益最大的特征作为当前决策节点;
  3. 更新数据集合和特征集合(按照特征值来划分不同分支的数据集合,删除上一步使用的特征);
  4. 重复 2,3 两步,若子集值包含单一特征,或数据标签为某一类,则为叶子节点
  •   信息量: 

解释:

其中,x是消息指明的事件;p是x事件的先验概率。 底数一般取2,单位为比特(bit). 概率越小则信息量越大,概率越大则信息量越小

  • 信息熵:度量数据集中不确定性的一个指标,其值越大,表示数据集的不确定性越高,数据集的混乱程度越高。信息熵是所有事件信息量的平均值。 其中,K是类别,D是数据集,C_k是类别K下的数据集
  • 信息增益:衡量某个属性对数据集分类能力的一个指标。通过计算每个属性的信息增益,选择信息增益最大的属性作为当前节点的分裂属性。

优点: 

缺点:

总概: 

        ID3算法的优点在于简单直观、分类效率高,但缺点在于容易过拟合,特别是当数据中有很多噪声时。此外,ID3算法只能处理离散的特征,对于连续特征需要离散化处理。

3. C4.5算法

        C4.5算法是ID3算法的改进版本,由Ross Quinlan在1993年提出。它不仅能够处理离散属性,还能处理连续属性,同时在处理缺失值和剪枝方面也有较大的改进。

        C4.5算法的核心思想是通过信息增益比(Gain Ratio)来选择最优的划分属性。信息增益比是信息增益和固有值的比值,用于减少对多取值特征的偏向。此外,C4.5算法还引入了后剪枝机制,通过评估每个节点的剪枝效果来减少模型的复杂度。

        C4.5算法的优点在于能够处理连续特征和缺失值,同时通过引入信息增益比和剪枝技术,有效地提升了模型的泛化能力。尽管其计算复杂度较高,但在实际应用中表现出色,被广泛应用于各种分类任务中。

4. CART算法

       Classification and Regression Tree (CART) 是决策树的一种。 用基尼指数来选择属性(分类),或用均方差来选择属性(回归)。 顾名思义,CART算法既可以用于创建分类树,也可以用于创建回归树,两者在构建的过程中稍有差异。 如果目标变量是离散的,称为分类树。 如果目标变量是连续的,称为回归树

  • 分类树:如果待预测结果是离散型数据,则CART生成分类决策树。分类树用基尼指数(Gini Index)最小化准则进行特征选择生成二叉树。基尼指数越大,样本集合的不确定性就越大。
  • 回归树:如果待预测结果是连续型数据,则CART生成回归决策树。回归树采用均方误差作为损失函数,递归地按最优特征与最优特征下的最优取值对空间进行划分。

        CART算法的优点在于能够处理连续特征和缺失值,同时生成的决策树结构简洁、易于理解。此外,CART算法还采用了代价复杂度剪枝法(Cost-Complexity Pruning)来减少模型的复杂度,防止过拟合。

参考文献:

  1. 《统计学习方法》,清华大学出版社,李航著,2019年出版
  2. 《机器学习》,清华大学出版社,周志华著,2016年出版 Christopher M. Bishop, Pattern Recognition and Machine Learning, Springer-Verlag, 2006
  3. 《人工智能基础》,中国大学慕课,彭涛 

三、回归分析——Linear Regression(线性回归)

        回归分析是统计学和机器学习中用于预测和解释变量之间关系的一种重要方法。其中,线性回归是最基本、最常用的回归分析方法之一。本文将详细介绍线性回归的基本原理、损失函数以及最小二乘法在线性回归中的应用。

一、线性回归的基本原理

        线性回归是一种预测模型,它假设目标变量(通常表示为y)与一个或多个特征变量(通常表示为x)之间存在线性关系。这种关系可以用一个线性方程来表示,例如:

y = β0 + β1x1 + β2x2 + ... + βnxn + ε

其中,β0是截距项,β1, β2, ..., βn是回归系数,它们表示特征变量对目标变量的影响程度;x1, x2, ..., xn是特征变量;ε是误差项,表示模型中未能解释的部分。

简单通俗就是: 

线性回归的目标是找到一组最佳的回归系数(β0, β1, ..., βn),使得预测值与实际值之间的差异最小。  

二、损失函数

 为了量化预测值与实际值之间的差异。

        So,我们需要定义一个损失函数。在线性回归中,最常用的损失函数是均方误差(Mean Squared Error, MSE)。均方误差的计算公式如下:

MSE = 1/m * Σ(i=1到m) (yi - ŷi)^2

其中,m是样本数量,yi是第i个样本的实际值,ŷi是第i个样本的预测值。均方误差越小,表示模型的预测效果越好。

 文字抽象,图片更实在:

 我们训练出来的模型,有满意和不满意,自然衍生出来了

过拟合(Over-fitting)&欠拟合(Under-fitting)

 欠拟合表现:

  • 对于训练出来的模型,若在训练集上表现差,在测试集表现同样会很差。
  • 因为模型没有很好地捕捉到数据特征,不能很好地拟合数据。

过拟合表现:

  • 对于训练出的模型,在训练集上表现很好,在测试集上表现很差。
  • 模型太过于拟合训练数据,泛化能力很差。

解决欠拟合的方法:

  • 模型复杂化。对同一个算法复杂化,例如回归模型中添加更多的高次项,增加决策树的深度,增加神经网络的隐藏层和隐藏单元数等。
  • 弃用原来的算法,使用一个更复杂的模型。或者使用集成学习方法。
  • 增加更多的特征。挖掘出更重要的特征,并添加到模型中。 降低正则化约束。

解决过拟合的方法:

  • 清洗和增加训练数据集。
  • 降低模型复杂度 减少没有必要的特征 使用正则化约束 

三、最小二乘法

        为了找到最佳的回归系数,我们需要最小化损失函数。在线性回归中,最常用的方法是最小二乘法。最小二乘法的基本思想是通过最小化预测值与实际值之间的均方误差来找到最佳的回归系数。

案例:

方法:

套公式即可:


实战案例:

解:

答案:


 具体地,我们可以将线性回归方程表示为:

ŷ = Xβ + ε

其中,X是特征矩阵,每一行表示一个样本的特征值;β是回归系数向量;ε是误差向量。

最小二乘法的目标是找到一组回归系数β,使得均方误差最小。这可以通过求解以下正规方程来实现:

β = (X^T * X)^(-1) * X^T * y

其中,X^T是X的转置矩阵;y是目标变量的向量。通过求解这个方程,我们可以得到最佳的回归系数β。

                需要注意的是,当特征矩阵X的列数大于行数时(即特征数量大于样本数量),X^T * X可能不是满秩矩阵,导致无法直接求解逆矩阵。在这种情况下,我们可以使用正则化方法(如岭回归或套索回归)来稳定模型并避免过拟合。

四、总结

        线性回归是一种简单而有效的预测模型,它假设目标变量与特征变量之间存在线性关系。为了量化预测效果,我们定义了均方误差作为损失函数。为了找到最佳的回归系数,我们使用了最小二乘法来最小化损失函数。通过求解正规方程,我们可以得到最佳的回归系数,从而构建出有效的线性回归模型。


四. 基于密度的聚类—DBSCAN

这里只是聚类中一种,这里简单介绍一些什么是聚类,并且聚类的常见算法有哪些:

聚类:

        聚类是一种无监督学习方法,它试图将数据集中的对象划分为若干个群组,使得同一群组内的对象彼此相似,而不同群组的对象则相异。聚类的目的是发现数据中的自然群组或类别,这些群组或类别在事先是未知的。

聚类的常见算法:

  1. K均值聚类(K-means Clustering)
    • 原理:通过迭代更新聚类中心(即质心)来最小化对象到其所属聚类中心的距离平方和。
    • 优点:简单易懂,计算效率高。
    • 缺点:需要事先指定聚类数量K,对初始聚类中心的选择敏感。
  2. 层次聚类(Hierarchical Clustering)
    • 原理:通过递归地合并或分裂数据点来构建层次聚类树(树状图)。
    • 优点:能够生成嵌套的聚类结构,便于理解数据间的层次关系。
    • 缺点:计算复杂度较高,难以确定合并或分裂的终止条件。
  3. DBSCAN(Density-Based Spatial Clustering of Applications with Noise)
    • 原理:基于密度的聚类算法,能够识别任意形状的聚类,并能有效处理噪声点。
    • 优点:对噪声点具有较强的鲁棒性,能够发现任意形状的聚类。
    • 缺点:对参数(如邻域半径和最小点数)的选择较为敏感。

聚类算法的分类: 

 

聚类评价指标:

分为2类:

详细如下: 


一、基本概念

是一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,基于密度的聚类是寻找被低密度区域分离的高密度区域,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。

密度的定义

数据集中特定点的密度通过该点Eps半径之内的点计数(包括本身)来估计,在DBSCAN使用两个超参数:

        (1)扫描半径 (Eps) :                       用于定位点/检查任何点附近密度的距离度量,即扫描半径。

        (2)最小包含点数(MinPts) :          聚集在一起的最小点数(阈值),该区域被认为是稠密的。

点的分类

基于密度定义,我们将点分为:核心点、边界点、噪声点

核心点(core point) : 该点的Eps邻域至少包含MinPts个点(邻居)。

边界点(border point): 边界点不是核心点,但落在某个核心点的邻域内。

噪音点(noise point) : 既不是核心点,也不是边界点的任何点。

点之间的连接 

 基于密度定义,我们将点之间的关系分为:直接密度可达、密度可达、密度相连

直接密度可达 :若xj位于xi的Eps邻域中,且xi是核心对象,则称xj是xi直接密度可达(directly density-reachable)。

密度可达:对于xi与xj,若存在一个样本序列p1,p2,p3,…,pn,其中p1=xi,pn=xj且pi+1由pi密度直达,则称xj由xi密度可达(density-reachable)。

密度相连:对于xi与xj,若存在xk使得xi与xj均由xk密度可达,则称xj由xi密度相连(density-connected)。


列题:

思路:

 先去遍历每一个点,比如这里先看p1(1,2)点,给了Eps =3为半径,然后以它为核心,画园,看他范围有哪些元素,如果数量(包含本身)>=MinPts =3的话,就是核心点,并设置一个族为C1={p1,p2,p3,p13};  然后继续遍历这里面的点,相同方法,如果是核心点,就看他包含哪些点,因为p1可以到底里面任何他范围的点,他范围内的点继续如果是核心点,包含了一些p1没有包含的点话,这个点p1也可以到底,然后这个族的点就会增加,为他们的并集。如果不是核心点,就不管,继续遍历下一个,直到这个族点遍历完了,并且没有新点加入了。这一个族就完成了!!类似队列的样子 !!!!

答案:

C1

C2 

  

C3 :

因为 p10 p12 不是核心点,但是属于p11,p11是核心点,然后自然 C3族就是{p10,p10,p12}

三个族:

案例:

如图所示,设MinPts=3,请分析Q,M,P,S,O,R这几个样本点之间的关系。

答: 根据以上概念知道:由于有标记的各点M、P、O、R的Eps领域内至少包括3个点,因此它们都是核心对象;M是从P“直接密度可达”;而Q则是从M“直接密度可达”;基于上述结果,Q是从P“密度可达”;但P从Q无法“密度可达”(非对称)。类似地,S和R从O是“密度可达”的;O、R和S均是“密度相连”的。

 算法原理:

DBSCAN算法的目的是找到密度相连对象的最大集合,即簇。算法的基本思想是通过检查数据集中每个点的Ε邻域来寻找高密度区域。如果一个点的Ε邻域内包含足够多的点(即大于等于MinPts),则这个点被视为核心点,并可以形成一个簇。然后,算法会递归地扩展这个簇,包括所有从核心点密度可达的点。如果某个点既不是核心点,也不在任何已形成的簇中,则它被视为噪声点。

算法步骤:

二、算法优缺点

优点

  1. 不需要事先知道要形成的簇类的数量。
  2. 可以发现任意形状的簇类。
  3. 能够识别出噪声点,并且对噪声不敏感。
  4. 聚类结果几乎不依赖于节点的遍历顺序。

缺点

  1. 对用户定义的参数(Ε和MinPts)很敏感,细微的不同都可能导致差别很大的结果,而参数的选择无规律可循,只能靠经验确定。
  2. 不能很好反映高维数据,因为“维数灾难”的影响,距离的度量标准在高维数据中可能变得不再重要。
  3. 不能很好反映数据集以变化的密度,即当数据集的密度不均匀、聚类间距相差很大时,聚类质量较差。
三、应用场景

DBSCAN算法在多个领域中得到了广泛应用,包括:

  1. 遥感图像分析:用于识别具有相似光谱特征的地物类型,从而实现图像的自动分类。
  2. 生物信息学:有助于发现基因表达数据中的潜在模式,进而揭示生物过程的复杂性。
  3. 地理信息系统(GIS):用于识别城市中的不同功能区域,或者在环境监测中发现异常区域。
  4. 市场细分:能够根据消费者的购买行为将客户划分为不同的群体,从而帮助企业制定更有针对性的营销策略。

五:K-means算法

1. K-means算法原理

  1. 随机初始化聚类中心:算法开始时,随机选择K个对象作为初始聚类中心。
  2. 分配样本到聚类中心:根据最小距离原则,将数据样本集合中的每个样本分配到与其最邻近的聚类中心所对应的簇中。
  3. 重新计算聚类中心:根据分配结果,重新计算每个簇的聚类中心,作为新的簇中心。
  4. 迭代更新:重复上述分配和重新计算的过程,直到聚类中心不再发生变化或达到预设的迭代次数。

2. K-means算法优点

  • 框架清晰简单:K-means算法原理直观,易于理解和实现。
  • 高效处理大数据集:对于大数据集,K-means算法具有较高的计算效率,复杂度为O(NKt),其中N是数据对象的数目,K是聚类个数,t是迭代次数。
  • 适用于密集且区分明显的类:当结果类是密集的,且类与类之间区别明显时,K-means算法效果最好。

3. K-means算法缺点

  • K值难以确定:算法要求事先给出要生成的类的数目K,而K值的选定往往非常困难。
  • 对初值敏感:不同的初始值可能导致不同的聚类结果,影响算法的稳定性。
  • 对噪声和孤立点敏感:少量的噪声或孤立点数据能够对平均值产生极大影响,从而影响聚类结果。
  • 类圆形聚类特点:K-means算法具有“类圆形”的聚类特点,对于非圆形(如螺旋形)的数据集可能失效。

4. K-means算法改进——K值大小选择

  • 平均质心距离:通过计算不同K值下的平均质心距离(目标函数),选择使平均质心距离下降最快的K值作为最优聚类数。
  • 示例:PPT中给出了一个示例,通过绘制K值从2到9时的类簇指标变化曲线,确定了K=5时为最优聚类数。

5. K-means算法改进——K个初始点分布

  • 目的让初始点尽可能分散,以提高算法的稳定性和准确性。
  • 步骤:首先随机选择一个点作为第一个簇中心,然后依次选择距离已选簇中心最远的点作为下一个簇中心,直到选出K个中心点。

6. K-means++算法改进

  • 目的进一步优化K-means算法的初始点选择过程,使初始点更加分散。
  • 算法描述:在选取第n+1个聚类中心时,距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。通过轮盘法选择出下一个聚类中心。

7. K-medoids算法改进

  • 目的:克服离散点(噪声点)带来的影响
  • 算法思想:不采用簇中对象的均值作为参考点,而是在每个簇中选出一个实际的对象(中心点)来代表该簇。通过迭代更新中心点和非中心点,直到损失函数最小且不再有改变为止。
  • 算法流程
    • 1. 任意选取K个对象作为初始中心点,将余下的对象分到各个类中去,
    • 2. 然后顺序选取一个非中心点替换中心点,计算替换后的消耗,并选择消耗最小的非中心点作为新的中心点。
    • 3. 重复此过程直到中心点固定下来。

8. K-means与K-medoids算法对比

  • 对噪声点的敏感性:K-means算法对噪声点敏感,而K-medoids算法通过选择中心点来代表簇,降低了对噪声点的敏感性。
  • 聚类结果:在加入一个离散点(噪声点)后,K-means算法的聚类结果受到较大影响,而K-medoids算法的聚类结果相对稳定。

9. Mini Batch K-Means算法改进

  • 目的:降低K-Means算法的收敛时间,同时保持较好的聚类效果。
  • 算法步骤
    • 1.首先抽取部分数据集,使用K-Means算法得出K个中心点;
    • 2.然后继续抽取训练数据集中的部分数据集,并将其添加到模型中,分配给距离最近的K个中心点;
    • 3.最后更新聚类的中心点,并循环迭代第二步和第三步操作,直到中心点稳定或达到迭代次数。
  • 优点:Mini Batch K-Means算法可以减少计算时间,同时产生的结果效果只是略差于标准K-Means算法。

三. 集成学习总结

1. 集成学习方法概述

  • 定义:集成学习是使用一系列学习器进行学习,并通过某种规则整合各个学习结果,从而获得比单个学习器更好的学习效果的一种机器学习方法。
  • 思想:类似于“三个臭皮匠,赛过诸葛亮”,通过多个决策者共同进行决策来提升性能。
  • 分类:主要分为BaggingBoostingStacking三大类。

2. Bagging和随机森林算法

  • Bagging:从训练集中进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果。
    • 工作机制:采用Bootstrap自助采样法,从原始样本集中有放回抽取训练集,每轮得到一个模型,最后通过投票或计算均值得到最终结果。
  • 随机森林:是Bagging的扩展变体,以决策树为基学习器,并在决策树的训练过程中引入随机特征选择。
    • 优点:在数据集上表现良好,易于并行化,能处理高维度数据。

3. Boosting和Adboost

  • Boosting:训练过程为阶梯状,基模型按次序一一进行训练,每次训练集的样本权重都会根据上一轮的分类结果进行调整。
    • 特点:基模型之间存在强依赖关系,需要串行生成。
  • Adaboost:自适应增强算法,通过加权后的全体样本训练下一个基本分类器,直到达到预定的错误率或最大迭代次数。
    • 算法思想:初始化训练样本的权值分布,训练弱分类器并更新样本权重和分类器权重,最终组合成强分类器。

4. GBDT、XGBoost和LightGBM

  • GBDT:梯度提升决策树算法,由多棵决策树组成,累加所有树的结果作为最终结果。
    • 核心:Regression Decision Tree(DT)、Gradient Boosting(GB)和Shrinkage。
  • XGBoost:大规模并行boosting tree的工具,比GBDT更快更好,主要不同在于目标函数的定义。
  • LightGBM:由微软提出,用于解决GBDT在海量数据中遇到的问题,具有训练速度快、内存占用低的特点。

5. Stacking

  • 定义:将训练好的所有基模型对训练集进行预测,将预测值作为新的特征值,再基于新的训练集进行训练。
  • 过程:先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测。

6. 弱学习器与强学习器

  • 弱学习器:是指预测效果略高于随机猜测的模型,例如在二分类问题上精度略高于50%的分类器
  • 强学习器:是指预测效果略高于随机猜测的模型,例如在二分类问题上精度略高于50%的分类器
  • 目标:通过弱学习器得到强学习器。

弱学习器间的关系:

第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。比如baggingboosting系列。

第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。这种集成学习成为Stacking

同质个体学习器间的依赖关系:

  1. 个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是Bagging系列算法。
  2. 个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是Boosting系列算法。

  • 选择应考虑准确性和多样性,即个体学习器不能太差且输出要具有差异性。

7. Bagging与Boosting的对比

  • 样本选择:Bagging从原始集中有放回选取,各轮训练集独立;Boosting每轮训练集不变,但样本权重变化。
  • 样例权重:Bagging使用均匀取样;Boosting根据错误率调整样例权重。
  • 预测函数:Bagging所有预测函数权重相等;Boosting每个弱分类器有相应权重。
  • 并行计算:Bagging可以并行生成预测函数;Boosting只能顺序生成。

 8.决策树与这些算法框架进行结合所得到的新的算法:

9. 类不平衡的问题

参考文献:

四: 结尾

        通过对机器学习基础常见算法的探讨,我们不难发现,集成学习作为机器学习的一个重要分支,正以其独特的优势和广泛的应用场景,成为推动人工智能发展的重要力量。从Bagging到Boosting,从随机森林到XGBoost,集成学习不仅提高了模型的准确性和鲁棒性,还为我们提供了更多样化的解决方案。

        我想说,每个人都可能会冲动,都有自己的步伐,可能和其他人不一样,这样,可能是对的,也可能是错的,但是既然已经选择了,走过了,就不比在意他人的看法,脚踏实地的做好当下,不后悔。做你自己的主角 !!!(最后,机器学习很有趣,老师讲的很生动,哈哈,后悔没有多去听几次课程 !!!)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

aioice里面candidate固定UDP端口测试

环境: aioice0.9.0 问题描述: aioice里面candidate固定UDP端口测试 解决方案: /miniconda3/envs/nerfstream/lib/python3.10/site-packages/aioice import hashlib import ipaddress import random from typing import Optional import…

Ubuntu上如何部署Nginx?

环境: Unbuntu 22.04 问题描述: Ubuntu上如何部署Nginx? 解决方案: 在Ubuntu上部署Nginx是一个相对简单的过程,以下是详细的步骤指南。我们将涵盖安装Nginx、启动服务、配置防火墙以及验证安装是否成功。 1. 更新…

【工具变量】中国数字经济发展水平面板数据DID(2012-2022)

数据来源:《中国统计年鉴》、国家统计局 时间跨度:2012-2022年 数据范围:中国各省 包含指标: 1. 地区 2. id 3. 年份 4. 互联网域名数 5. 互联网接入端口数 6. 互联网宽带接入用户数 7. 移动基站密度 8. 移动电…

SEO初学者-搜索引擎如何工作

搜索引擎基础搜索引擎是如何建立索引的搜索引擎如何对网页进行排名搜索引擎是如何个性化搜索结果的 搜索引擎的工作方式是使用网络爬虫抓取数十亿个页面。爬虫也称为蜘蛛或机器人,它们在网络上导航并跟踪链接以查找新页面。然后,这些页面会被添加到搜索引…

如何从零开始搭建公司自动化测试框架

题主的意思,搭建的自动化测试框架要包括API测试,UI测试,APP测试三类。以上三类其实可以简化为两类,那就是: 1)接口自动化测试框架搭建 2)UI自动化测试框架搭建。 没问题,安排&#x…

基于java web在线商城购物系统源码+论文

一、环境信息 开发语言:JAVA JDK版本:JDK8及以上 数据库:MySql5.6及以上 Maven版本:任意版本 操作系统:Windows、macOS 开发工具:Idea、Eclipse、MyEclipse 开发框架:SpringbootHTMLjQueryMysq…

光谱相机在农业的应用

一、作物生长监测1、营养状况评估 原理:不同的营养元素在植物体内的含量变化会导致植物叶片或其他组织的光谱反射率特性发生改变。例如,氮元素是植物叶绿素的重要组成部分,植物缺氮时,叶绿素含量下降,其在可见光波段&a…

【WRF教程第3.1期】预处理系统 WPS 详解:以4.5版本为例

预处理系统 WPS 详解:以4.5版本为例 每个 WPS 程序的功能程序1:geogrid程序2:ungrib程序3:metgrid WPS运行(Running the WPS)步骤1:Define model domains with geogrid步骤2:Extract…

桌面图形界面生成原理:从流水灯到电脑屏幕

桌面图形界面是我们在使用电脑时接触最多的一个部分。它的美观、简洁、易用都给我们的生活带来了极大的便利。但是,你是否想过,这样的界面是如何生成的呢?让我们从流水灯的原理开始,一步步揭开桌面图形界面生成的奥秘。 一、流水…

IIC I2C子协议 SMBus协议 通信协议原理 时序 SMBus深度剖析

引言:系统管理总线(SMBus)是一种双线接口,通过该接口,各种系统组件芯片和设备可以相互以及与系统其他部分通信。它基于IC总线的操作原理。附录B提供了一些SMBus特性与IC总线不同的方式的描述。 SMBus为系统和电源管理相…

深入浅出:内网黄金票据与白银票据

在域环境中,Kerberos认证是确保安全通信的基石,而黄金票据和白银票据则是攻击者常用的两种经典手段。为了帮助大家更形象地理解它们的工作原理及防御措施,我们不妨将其与在私人电影院购票的情景做类比。具体内容参考如下图示即可:…

三维天地ELN助力职业卫生领域实验室无纸化、自动化

平台简介 随着国家对环保行业的日益重视,与环保行业息息相关的检测行业方法体系也越来越完善和规范。北京三维天地科技股份有限公司(以下简称“三维天地”)长期以来专注于实验室数智化建设,在环保行业拥有众多成功案例,通过自主研发的实验室信息管理系统(SW-LIMS),为客户提供完…

【渗透测试】|brupsuit的使用

一、 1.1爆破模块: 1、将拦截发送到intruder模块 2、在intruder模块设置pyaload位置 3、选择攻击类型 4、 5、设置好攻击类型和payload集就可以点击开始攻击,点击后弹出具体攻击详情 6、【payloads】模块相关 6.1 payload集为【简单列表】 添加&…

SpringBoot+Vue3实现阿里云视频点播 实现教育网站 在上面上传对应的视频,用户开会员以后才能查看视频

要使用阿里云视频点播(VOD)实现一个教育网站,其中用户需要成为会员后才能查看视频,这个过程包括上传视频、设置权限控制、构建前端播放页面以及确保只有付费会员可以访问视频内容。 1. 视频上传与管理 创建阿里云账号&#xff…

Docker搭建kafka环境

系统:MacOS Sonoma 14.1 Docker版本:Docker version 27.3.1, build ce12230 Docker desktop版本:Docker Desktop 4.36.0 (175267) 1.拉取镜像 先打开Docker Desktop,然后在终端执行命令 docker pull lensesio/fast-data-dev …

B树的性质和插入过程

性质 平衡性:所有叶子节点都在同一层多路:m 阶 B 树 最多: m 个分支,m-1 个元素 最少: 根节点 2 个分支 1个元素 其他节点 ⌈ m / 2 ⌉ \lceil m/2\rceil ⌈m/2⌉ 个分支 ⌈ m / 2 ⌉ \lceil m/2\rceil ⌈m/2⌉ −…

基于预测反馈的情感分析情境学习

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

Qt设置部件的阴影效果

QT中的比如QWidget,QLabel,QPushbutton,QCheckBox都可以设置阴影效果,就像这样: 以QWidget为例,开始尝试使用样式表的形式添加阴影,但没有效果,写法如下: QWidget#widget1::shadow{color: rgb…

AS-REP Roasting离线爆破攻击

针对一个域内用户,其账户选项有个设置叫作 “不要求 kerberos 预身份验证”,它默认是关闭的。 当 “不要求 kerberos 预身份验证” 选项被勾选,会出现以下效果: as-req 报文中不需要添加用户 hash 加密的时间戳,自动返…

JMeter配置原件-计数器

一、面临的问题: 由于本人的【函数助手对话框】中counter计数器每次加2,且只显示偶数(如下图所示),因此借助【配置原件-计数器】来实现计数功能。 如果有大佬知道解决方式,麻烦评论区解答一下,谢谢。 二、配置原件-c…