工业大数据分析算法实战-day06

时间:2024-12-17 17:40:44

文章目录

  • day06
    • 决策树的贪婪
    • 支持向量机
    • 隐马尔可夫模型

day06

昨日是从非线性出手,讲解了MRAS算法和神经网络中如何表征能力的方式,今日会继续讲解另一分而治之的算法——决策树算法,以及支持向量机、隐马尔科夫模型

决策树的贪婪

经典树模型算法衍生了很多强力的机器学习算法,而基本的决策树的构建主要是通过:分割属性的选择—>停止条件—>划分效果评估—>后剪枝

  • 分隔属性的选择:通过纯度进行划分数据集,也就是保证划分后纯度很高,主要方式就是通过基尼系数/熵/错误率这样的纯度指标对特征进行划分,每次都选择纯度最高的,不断迭代划分,一直满足截至条件。
  • 停止条件:由于决策树是一个迭代划分的过程,所以一定要给定停止条件,一般情况停止条件如下:
    • 大于设置树的最大深度
    • 小于设置内部节点再划分所需的最小样本数
    • 小于设置的叶节点最少样本数
    • 大于设置的最大叶节点数
    • 小于设置的不纯度阈值
  • 效果评估:如果是分类算法考量的指标一般都是召回、精准率之类,决策树本身也会采用叶子节点纯度和计算损失函数值来评估算法效果。值越小效果越好。
  • 后剪枝:是防止树模型过拟合,提高其泛化能力,剪枝可分为预剪枝和后剪枝,预剪枝是指在构建树过程中提前停止,后剪枝是生成一棵完整的决策树再自底向上的进行修剪

常用的决策树算法对比如下:

算法 分裂标准 分裂方式 剪枝 优点 缺点 适用场景
ID3 信息增益 二分裂 简单易懂,快速构建树。适合处理较小数据集 偏向选择取值多的特征。对噪声数据敏感 特征较少且简单的分类任务
CHAID 卡方检验 多分裂 适合多分类问题。通过卡方检验避免特征偏好 计算开销大,对类别不平衡的数据处理差 类别较多且类别均衡的分类问题
C4.5 信息增益比 二分裂 有(后剪枝) 处理连续特征。剪枝有效,减少过拟合。能处理缺失值 算法较复杂。剪枝可能过度,导致性能下降 特征较多且复杂的分类问题
C5.0 信息增益比、Boosting 二分裂 有(后剪枝) 更高效,适合大规模数据。支持Boosting,准确度高 部分功能需付费。比 C4.5 更复杂 大规模、高准确度的分类任务
CART 基尼指数/均方误差 二分裂 有(后剪枝) 可用于分类和回归任务。生成的树简单易懂 可能需要较深的树,对数据噪声较为敏感 二分类问题分类和回归任务

支持向量机

Epsilon-SVR算法:SVR(支持向量回归)是用来预测连续值(比如价格、温度等)的算法。我们想通过这个算法画一条线或曲线来尽量接近数据点。Epsilon-SVR是SVR的一种变体,涉及到几个重要参数:

  • 参数ε(epsilon)
    • ε代表“容忍误差”的范围,决定了我们允许模型有多大的误差。如果数据点的预测误差小于ε,那我们就认为这个预测是“足够好的”,不需要做太多调整。
    • 比如,你预测一个人的身高是170cm,允许误差是±5cm。也就是说,只要预测在165-175cm之间,就认为是可以接受的。ε越大,误差允许得越多,模型也会更“宽松”。
  • 参数C
    • C是惩罚参数,控制我们对误差的容忍度。C值越大,我们对误差的容忍度就越低,模型会尽量让每个数据点都被正确预测(尽量让误差小),但是可能会过度拟合数据;C值越小,模型允许一些误差,可能会避免过拟合,但预测可能不那么准确。
  • 鲁棒性
    • SVR的一个特点是它对“噪音”数据点(就是那些不太符合规律的异常点)比较不敏感。它允许一定的误差,所以不会因为某个离谱的数据点就大幅调整模型。
  • RBF核
    • RBF核是一种数学技巧,可以帮助我们把数据映射到一个更高维的空间,让原本看起来不太有规律的数据变得可以用一条简单的直线或曲线来拟合。

Nu-SVR算法:Nu-SVR是SVR的另一个版本。与Epsilon-SVR不同,Nu-SVR使用一个叫做 ν(nu) 的参数来控制模型的复杂度。ν的作用是直接控制支持向量(就是对模型最有影响的数据点)的数量和训练时允许的误差。

  • ν的作用
    • ν越大,允许的误差就越大,模型会更“宽松”,支持向量数量会更多。
    • ν越小,误差就越严格,支持向量会更少,模型可能会更复杂,但有可能出现过拟合。

总之,Nu-SVR在设置参数时,直接控制了模型复杂度和支持向量的数量,调节起来也比较直观。

不同SVM算法包的差异:SVM有不同的实现方式,不同的软件包(如libsvmscikit-learn等)可能会有一些差异,主要体现在:

  • 运行速度:一些软件包优化得更好,能更快处理大量数据。
  • 功能不同:有些包可能支持更多的功能,比如交叉验证、不同类型的核函数等。
  • 易用性:有些包界面更简洁,使用起来更方便,有些则提供了更多的*度,适合有经验的用户。

常用的包有:

  • libsvm:功能全面,应用广泛。
  • scikit-learn:Python中非常流行,适合大部分机器学习任务,使用简单。

RVM算法:**RVM(相关向量机)**是一个与SVM类似的算法,它也是用来做回归和分类的,但它有一个不同的特点:

  • 与SVM的不同
    • 在SVM中,我们需要通过支持向量(那些对决策边界有影响的数据点)来建立模型,而RVM则通过相关向量来建立模型。相关向量是那些真正对模型有帮助的数据点,通常比SVM中的支持向量要少。
  • RVM的优点
    • 因为RVM通常只用少量的相关向量,所以它的模型更简洁、计算更快。
    • 它特别适合用来处理“稀疏”或噪声较多的数据。
  • RVM的缺点
    • 训练过程比SVM更复杂一些,计算量较大,尤其是在数据量很大的时候。

总结一下,RVM通过更智能地选择“重要”数据点来建立模型,所以在某些情况下,RVM比SVM表现得更高效,但它的训练过程稍微麻烦一些。

隐马尔可夫模型

隐马尔可夫模型(HMM)是一种用来分析和预测某些现象的方法,它基于“隐状态”和“观测值”的关系。简单来说,HMM帮助我们通过一些可见的数据来推测看不见的、无法直接观测的情况。

在机房或基站的动力环境运维中,有很多隐含的系统状态(如设备运行状态、环境稳定性等),这些状态会影响到我们可以观察到的现象(如温度、电压波动、设备故障等)。

工作原理:

  • 隐状态(Hidden States):是我们无法直接观测到的系统的内部状态。例如,在机房/基站运维中,可能的隐状态包括如下,这些隐状态,我们是无法直接观察到的,但它们会影响我们能看到的一些现象(如温度、电力等)。

    • 正常状态:所有设备都正常运行,环境温度适宜。
    • 异常状态:某些设备出现了问题(如空调故障,温度升高)。
    • 故障状态:设备发生了严重故障,系统运行不稳定。
  • 观测值(Observations):是我们能够直接监测到的,可以帮助我们推测隐状态的数据。在机房的动力环境中,观测值可能包括如下,这些数据可以通过监测系统来实时获取,但它们只是环境的表象,并不能直接告诉我们是否出现了“隐状态”中的故障。

    • 温度:机房内的温度值。
    • 电压:电力系统的电压波动。
    • 设备报警:如空调或UPS设备的故障报警。
  • 状态转移概率(Transition Probabilities)示系统从一个隐状态到另一个隐状态的可能性。这些转移概率基于历史数据和经验,表示了系统状态如何变化。

    • 正常状态异常状态的概率:如果长时间未维护,空调出现故障的概率可能上升。
    • 异常状态故障状态的概率:如果不及时修复,系统的故障概率可能增加。
  • 观测概率(Emission Probabilities):在某个隐状态下,观察到某种观测值的可能性。这些观测概率告诉我们,当系统在某个隐状态下时,可能会观察到哪些现象(如温度异常、设备报警等)。

    • 如果系统处于正常状态,温度可能是25度,电压波动很小,报警信息很少。
    • 如果系统处于异常状态,温度可能会升高,电压波动加剧,报警信息可能增加。
    • 如果系统处于故障状态,温度极高,电压严重波动,且有多个设备报警。

示例:如何预测机房的状态,假设我们想通过温度和电压数据来推测机房的“隐状态”(即设备是否正常运作)。在这个例子中,我们有以下假设:

  • 隐状态
    • 正常状态:设备运行正常,温度正常,电压稳定。
    • 异常状态:设备开始出现问题,温度稍微升高,电压波动增大。
    • 故障状态:设备出现严重问题,温度急剧升高,电压不稳。
  • 观测值(我们可以观测到的情况):
    • 温度(如:正常、偏高、高)
    • 电压(如:正常、偏高、波动)
  • 初始状态概率(机房开始时的状态概率):
    • 正常状态的概率:0.8
    • 异常状态的概率:0.15
    • 故障状态的概率:0.05
  • 状态转移概率(隐状态之间的转移概率):
    • 从正常状态到正常状态:0.9
    • 从正常状态到异常状态:0.1
    • 从正常状态到故障状态:0.01
    • 从异常状态到异常状态:0.7
    • 从异常状态到故障状态:0.3
    • 从故障状态到故障状态:0.8
  • 观测概率(在每个状态下观测到特定情况的概率):
    • 正常状态时,温度正常的概率:0.7,电压正常的概率:0.8
    • 异常状态时,温度偏高的概率:0.6,电压偏高的概率:0.7
    • 故障状态时,温度高的概率:0.9,电压波动的概率:0.9

预测过程中,假设我们观察到以下数据:

  • 温度:偏高
  • 电压:偏高

我们可以使用隐马尔可夫模型来推算当前机房的隐状态。具体步骤如下:

  1. 初始化:假设机房开始时的状态是正常状态(根据初始状态概率)。
  2. 根据观测值更新:根据温度和电压的数据,我们知道当前的观测值与“异常状态”更相符,因为偏高的温度和偏高的电压更有可能出现在异常状态下。
  3. 推算下一步状态:根据状态转移概率,我们可以预测下一步机房的状态。比如,从正常状态转到异常状态的概率较高,因此我们认为机房更可能处于异常状态。

隐马尔可夫模型(HMM)可以帮助我们通过可观测的数据(如温度、电压等)推测机房或基站内部的隐状态(如设备是否正常运行)。它通过建立隐状态之间的转移概率和每个状态下观测到特定数据的概率,让我们能够更好地预测和管理设备的运行状态。