决策树学习

决策树学习

  • 决策树
    • 决策树基础
      • 适用决策树学习的经典目标问题
      • 样本的表示
      • 训练样本
      • 决策树的概念
      • 发展历史
    • 经典决策树算法
      • ID3算法
      • CART (分类和回归树)
    • 过拟合问题(over-fitting)
    • 如何避免过拟合
        • 类型 I.
          • 何时停止分裂(1) :基于样本数
          • 何时停止分裂(2):基于信息增益的阈值
        • 避免过拟合: 类型 II
          • 后剪枝 (1): 错误降低剪枝(error reduce pruning)
            • 剪枝后新的叶节点的标签赋值策略
            • 错误降低剪枝的效果
          • 后剪枝 (2): 规则后剪枝(rule-post pruning)
            • 为什么在剪枝前将决策树转化为规则?
    • 扩展: 现实场景中的决策树学习•问题 & 改进
      • 1. 连续属性值
      • 2. 具有过多取值的属性
      • 3. 未知属性值
      • 4. 有代价的属性
      • 其他信息
    • 小结
    • 归纳学习假设

决策树

决策树基础

在这里插入图片描述

适用决策树学习的经典目标问题

  • 带有非数值特征的分类问题(主要是非连续)
  • 离散特征
  • 没有相似度概念(没有明确相似度概念)
  • 特征无序

另一个例子: 水果

  • 颜色:红色、绿色、黄色……
  • 大小:小、中、大
  • 形状:球形、细长
  • 味道:甜、酸

样本的表示

  • 属性的列表而非数值向量
  • 例如享受运动的例子:
    • 6值属性:天气、温度、湿度、风、水温、预测天气
    • 某一天的天气实例:{晴、暖、一般、强、暖、不变}
  • 例如水果的例子:
    • 4值元组:颜色、大小、形状、味道
    • 某个水果的实例: {红、球形、小、甜}

训练样本

训练样本就是在样本表达的基础上加上目标取值C(x), 如西瓜
在这里插入图片描述

决策树的概念


天生带有可解释性。

发展历史

  • 1966,由Hunt首先提出
  • 1970’s~1980’s
    • CART 由Friedman, Breiman提出
    • ID3 由 Quinlan 提出
  • 自1990’s以来
    • 对比研究、算法改进(Mingers, Dietterich, Quinlan, etc.)
    • 最广泛使用的决策树算法:C4.5 由 Quinlan 在 1993 年提出
  • C5.0

经典决策树算法

ID3算法

  • 自顶向下,贪心搜索
  • 递归算法
  • 核心循环:
    • A :下一步最佳 决策属性
    • 将 A 作为当前节点决策属性
    • 对属性A (vi)的每个值,创建与其对应的新的子节点
    • 根据属性值将训练样本分配到各个节点
    • 如果 训练样本被完美分类,则退出循环,否则继续下探分裂新的叶节点

训练样本被完美分类: 就是所有节点很好的分类了(比如所有叶子节点的标签都一样),看后面的 **ID3 Q2: 何时返回(停止分裂节点)?**内容
在这里插入图片描述

属性选择和节点混杂度(Impurity)

ID3 Q1: 哪个属性是最佳属性?

一共29个正例,35个负例,A1为最佳属性时,取True的有21个正例5个负例,A1取False的有8个正例30个负例;A2为最佳属性时,取True的有18个正例33个负例,A2取False的有11个正例2个负例
在这里插入图片描述
比如A1是湿度,湿度大还是正常,A 2是风,风是强还是正常

当前最佳属性节点选择
  • 基本原则: 简洁
    • 我们偏向于使用简洁的具有较少节点的树
      比如西瓜和柠檬,依据简洁原则,选择左边的,最佳属性color
      在这里插入图片描述
  • 基本原则: 简洁
    • 我们偏向于使用简洁的具有较少节点的树
    • 在每个节点N上,我们选择一个属性T,使得到达当前派生节点的数据尽可能“纯“(尽可能是同样分类的, 比如上面的颜色,左边就是西瓜,右边就是柠檬,如果是大小,右边既有西瓜,也有柠檬,就不太纯)
    • 纯度(purity)- 混杂度(impurity)

如何衡量混杂度?

熵(Entropy)(广泛使用)

E n t r o p y ( N ) = − ∑ j P ( w j ) l o g 2 P ( w j ) Entropy(N) = -\sum\limits_j P(w_j)log_2P(w_j) Entropy(N)=jP(wj)log2P(wj)

(比如节点是size, 那w1就是大,w2就是小)

  • 定义: 0log0 = 0(可能某个节点是没取值,那概率P(wj)可能是0,因log原因,需要这样定义,否则无意义)
  • 在信息理论中,熵度量了信息的纯度/复杂度,或者信息的不确定性
  • 正态分布 - 具有最大的熵值

横坐标为取正的概率,如果正的概率为0,则熵为0,取负的概率为100%;正例的概率为0.5时,熵值最大
在这里插入图片描述

如果只有两个,熵 = 正例的 − P ( w j ) l o g 2 P ( w j ) -P(w_j)log_2P(w_j) P(wj)log2P(wj) + 负例的 − P ( w j ) l o g 2 P ( w j ) -P(w_j)log_2P(w_j) P(wj)log2P(wj)
0.993已经很接近1, 说明熵很大
在这里插入图片描述

除了熵以外的其它混杂度度量

  • Gini混杂度(Duda 倾向于使用Gini混杂度) 基尼
    混杂度 i ( N ) = ∑ i ≠ j P ( w i ) P ( w j ) = 1 − ∑ j P 2 ( w j ) 混杂度i(N)=\sum\limits_{i \neq j} P(w_i)P(w_j)=1-\sum\limits_jP^2(w_j) 混杂度i(N)=i=jP(wi)P(wj)=1jP2(wj)
  • 错分类混杂度(miss-classification)
    混杂度 i ( N ) = 1 − max ⁡ j P ( w j ) 混杂度i(N)=1-\max\limits_jP(w_j) 混杂度i(N)=1jmaxP(wj)(所有中,j的概率最大)
混杂度(熵)

E n t r o p y ( N ) = − ∑ j P ( w j ) l o g 2 P ( w j ) Entropy(N) = -\sum\limits_j P(w_j)log_2P(w_j) Entropy(N)=jP(wj)log2P(wj)
下面坐标轴,依图例,蓝色纵坐标看右边,红色看左边
熵越来越大
在这里插入图片描述

混杂度(Gini)

i ( N ) = ∑ i ≠ j P ( w i ) P ( w j ) = 1 − ∑ j P 2 ( w j ) i(N)=\sum\limits_{i \neq j} P(w_i) P(w_j) = 1 - \sum\limits_jP^2(w_j) i(N)=i=jP(wi)P(wj)=1jP2(wj)

最大 Gini 混杂度 在 1 − n ∗ ( 1 / n ) 2 = 1 − 1 / n 1-n*(1/n)^2=1-1/n 1n(1/n)2=11/n 时取得

在这里插入图片描述

混杂度 (错分类)

i ( N ) = 1 − max ⁡ j P ( w j ) i(N) = 1 - \max\limits_jP(w_j) i(N)=1jmaxP(wj)

最大 Gini 混杂度 在 1 − n ∗ ( 1 / n ) 2 = 1 − 1 / n 1-n*(1/n)^2=1-1/n 1n(1/n)2=11/n时取得 (也就是均匀分布P(Wi) = 1/n)
在有n类时,最大错分类混杂度 = 最大Gini混杂度 1 − m a x { 1 / n } = 1 − 1 / n 1-max\{1/n\}=1-1/n 1max{1/n}=11/n

在这里插入图片描述

度量混杂度的变化 Δ I ( N ) ΔI(N) ΔI(N) — 信息增益(IG,Information Gain)

例如

  • 由于对A的排序整理带来的熵的期望减少量
    在这里插入图片描述
    根据公式计算,得 E n t r o p y ( s a 1 = t ) = − 21 26 ∗ l o g 2 21 26 − 5 26 ∗ l o g 2 5 6 = 0.706 Entropy(s_{a1=t}) = -\frac{21}{26}*log_2{\frac{21}{26}}-\frac{5}{26}*log_2{\frac{5}{6}}=0.706 Entropy(sa1=t)=2621log22621265log265=0.706,即下面最左叶子节点的熵。
    在这里插入图片描述
    在这里插入图片描述
    (21+5)/(29+35) = 26/64, 即上面最左叶子节点的重要性

因为 G a i n ( S , A 1 ) > G a i n ( S , A 2 ) Gain(S,A_1) > Gain(S, A_2) Gain(S,A1)>Gain(S,A2),所以选择A1节点(因为熵减少的更多,信息增益更大)

ID3 Q2: 何时返回(停止分裂节点)?
  • “如果训练样本被完美分类”

  • 情形 1: 如果当前子集中所有数据 有完全相同的输出类别,那么终止

  • 情形 2: 如果当前子集中所有数据 有完全相同的输入特征,那么终止

    • (可能性1.有噪声,需要判断,如果很多,数据不好,需要做数据清洗,如果少,不影响,很少有很干净的数据,大多数的机器学习都需要有这样的鲁棒性2.很重要的Feature(特征)漏掉了)
  • 可能的情形3: 如果 所有属性分裂的信
    息增益为0, 那么终止 -------------这是个好想法么?决策树中不会采用这样的策略, 看下面的例子

函数y=a XOR b

aby
000
011
101
110

信息增益:

属性概率分布IG
a050%0
a150%0
b050%0
b150%0
  • 根据提出的情形3,甚至在第一步就无法选择任何属性

如果不考虑情形3,随机一个属性就可以构建决策树,
在这里插入图片描述
因此在ID3中,只有两种情形会停止分裂(即完美分类),
- 相同的输出类别
- 相同的输入特征值

ID3举例
  • 训练样本
    在这里插入图片描述 - 选择特征 基于湿度、天气、温度、云这几个属性就可以计算出IG如下: 在这里插入图片描述 G a i n ( S , H u m i d i t y ) = 0.940 - [ ( 7 / 14 ) ∗ 0.985 + ( 7 / 14 ) ∗ 0.592 ] = 0.151 Gain(S,Humidity) =0.940-[(7/14)*0.985 + (7/14)*0.592] =0.151 Gain(S,Humidity)=0.940[(7/14)0.985+(7/14)0.592]=0.151
    G a i n ( S , O u t l o o k ) = 0.246 Gain(S,Outlook)=0.246 Gain(S,Outlook)=0.246
    G a i n ( S , W i n d ) = 0.048 Gain(S,Wind)=0.048 Gain(S,Wind)=0.048
    G a i n ( S , T e m p e r a t u r e ) = 0.029 Gain(S,Temperature)=0.029 Gain(S,Temperature)=0.029
    Outlook的IG最大,因此讲Outlook作为当前节点的属性

ID3算法搜索的假设空间

  • 假设空间是完备的

    • 目标函数一定在假设空间里
    • 既可以处理属性的OR,也可以处理属性的AND,因此是完备的,任何一个逻辑表达,在ID3的树里都可以表达
  • 输出单个假设

    • 不超过20个问题(根据经验) ,即影响因素(属性)不要超过20个,
    • 否则非常复杂, 也会产生过拟合(超过20个决策性属性)
  • 没有回溯

    • 局部最优,不是全局最优
  • 在每一步中使用子集的所有数据(比如之前的梯度下降,用一条数据就调整,和这里不一样)

    • 数据驱动的搜索选择
    • 对噪声数据有鲁棒性

    在这里插入图片描述

ID3中的归纳偏置 (Inductive Bias)
  • 假设空间 H 是作用在样本集合 X 上的
    • 没有对假设空间作限制, 假设空间不偏
  • 偏向于在靠近根节点处的属性具有更大信息增益的树
    • 尝试找到最短的树
    • 该算法的偏置在于对某些假设具有一些偏好(preference, 搜索偏置), 而不是
      假设空间 H 做限制(restriction描述偏置).

搜索偏置原理:
奥卡姆剃刀(Occam’s Razor)*
:偏向于符合数据的最短的假设
Domingos, The role of Occam’s Razor in knowledge discovery. Journal of Data Mining and Knowledge Discovery, 3(4), 1999.

一般认为:一般无偏的学习算法是无用的

CART (分类和回归树)

Classification and Regression Tree

  • 一个通用的框架:
    • 根据训练数据构建一棵决策树
    • 决策树会逐渐把训练集合分成越来越小的子集
    • 当子集纯净后不再分裂
    • 或者接受一个不完美的决策

许多决策树算法都在这个框架下,包括ID3、C4.5等等

过拟合问题(over-fitting)

c错误率为0,过于拟合,泛化()能力变弱
在这里插入图片描述
在这里插入图片描述

  • 我们说假设 h ∈ H h ∈H hH 对训练集过拟合,如果存在另一个假设 h ’ ∈ H h’ ∈H hH满足:
    e r r t r a i n ( h ) < e r r t r a i n ( h ′ ) err_{train}(h) < err_{train}(h^{'}) errtrain(h)<errtrain(h) AND e r r t e s t ( h ) > e r r t e s t ( h ′ ) err_{test}(h) > err_{test}(h^{'}) errtest(h)>errtest(h), 那h就是过拟合了
    如果没有测试集,那就用验证集做衡量

决策树过拟合的一个极端例子:
- 每个叶节点都对应单个训练样本 —— 每个训练样本都被完美地分类
- 整个树相当于仅仅是一个数据查表算法的简单实现

  • 决策树学习中的过拟合
    在这里插入图片描述
    上图中22以后,训练集精度还在增加,但是测试集精度已经在下降了,说明过拟合了

如何避免过拟合

  • 对决策树来说有两种方法避免过拟合
    • I 当数据的分裂在统计意义上并不显著时,就停止增长:预剪枝(pre-pruning) (显著性统计说明参见机器学习实验方法与原则)
    • II 构建一棵完全树,然后做后剪枝(post-pruning)

类型 I.

对于第一种方法,很难估计树的大小

预剪枝

何时停止分裂(1) :基于样本数
  • 通常 一个节点不再继续分裂,当:
    • 到达一个节点的训练样本数小于训练集合的一个特定比例 (例如 5%)
    • 无论混杂度或错误率是多少
    • 原因:基于过少数据样本的决定会带来较大误差(有时可以说很大方差)和泛化错误, 类似盲人摸🐘, 摸到腿以为是大柱子…;再比如一堆数据,大部分数据几乎在一条直线上,但是刚好碰到少量局部数据,组成一团,和大部分数据不一致,再分会导致很大误差,
何时停止分裂(2):基于信息增益的阈值

设定一个较小的阈值,如果满足下述条件则停止分裂: Δ i ( s ) ≤ β \Delta i(s) \leq \beta Δi(s)β

  • 优点:

    • 用到了所有训练数据
    • 叶节点可能在树中的任何一层
  • 缺点: 很难设定一个好的阈值

    • (可以通过前面介绍的方法,在完整训练集上分出一部分作为验证集,通过训练集训练得出参数,通过验证集调整参数,评估出最好的参数)

    和前面的例子x = a xor b不同, 信息增益为0还在分裂,是因为当时在讨论停止条件,而且不分裂就够不成一棵树;但是现在介绍的基于信息增益的阈值停止分裂,是已经构成一棵足够充分的树,再分裂就可能会过拟合,情况不同。

避免过拟合: 类型 II

对于方法 II:

  • 如何选择 “最佳” 的树?
    • 在另外的验证集合上测试效果
  • M D L ( M i n i m i z e D e s c r i p t i o n L e n g t h 最小描述长度 ) MDL (Minimize Description Length 最小描述长度) MDL(MinimizeDescriptionLength最小描述长度):
    m i n i m i z e ( s i z e ( t r e e ) + s i z e ( m i s c l a s s i f i c a t i o n s ( t r e e ) ) ) minimize ( size(tree) + size(misclassifications(tree)) ) minimize(size(tree)+size(misclassifications(tree)))

missclassification: 错误率: 如果只追求错误率最小,导致树很长,细节点越多
size(tree):如果只追求树的大小,会导致错误率比较大

后剪枝 (1): 错误降低剪枝(error reduce pruning)
  • 把数据集分为训练集验证集
    • 验证集:
      • 已知标签
      • 测试效果,用于验证性能和错误率
      • 在该集合上不做模型更新!
  • 剪枝直到再剪就会损害性能(hurt performance):
    • 在验证集上测试剪去每个可能节点(和以其为根的子树)的影响
      • (在验证集上看性能会不会提升,因为在训练集上找不到这棵树;每次只剪一个,形成新树,不断循环,直到性能不再提高)
    • 贪心地去掉某个可以提升验证集准确率的节点(剪掉哪个节点提升准确率越多,就剪哪个)
      在这里插入图片描述

剪掉节点后,如何定义新的叶节点的标签?

剪枝后新的叶节点的标签赋值策略
  • 第一种:赋值成最常见的类别
  • 第二种:给这个节点多类别的标签
    • 每个类别有一个支持度 (根据训练集中每种标签的数目)
    • 测试时: 依据概率选择某个类别或选择多个标签
  • 第三种:如果是一个回归树 (数值标签),可以做平均或加权平均
  • ……
错误降低剪枝的效果

验证集是从后往前剪,即下面的箭头方向
验证集是用来减弱过拟合问题,不能做到百分百消除过拟合,因为 验证集 ≠ 测试集 验证集\neq 测试集 验证集=测试集
在这里插入图片描述

后剪枝 (2): 规则后剪枝(rule-post pruning)
  1. 把树转换成等价的由规则构成的集合(决策树就是由规则构成,可以看一开始介绍)
    • e.g. if (outlook=sunny) and (humidity=high) then playTennis = no
  2. 对每条规则进行剪枝,去除那些后能够提升该规则准确率(验证集上的准确率)的规则前件(规则条件)
    • i.e. (outlook=sunny), (humidity=high) ,(outlook=sunny) and (humidity=high)
  3. 将规则排序成一个序列 (根据规则的(验证集上的)准确率从高往低排序)
  4. 该序列中的最终规则对样本进行分类(依次查看是否满足规则序列)

(注:在规则被剪枝后,它可能不再能恢复成一棵树)
一种被广泛使用的方法,例如C4.5

为什么在剪枝前将决策树转化为规则?
  • 独立于上下文
    • 否则,如果子树被剪枝,有两个选择:
      • 完全删除该节点
      • 保留它
  • 不区分根节点和叶节点
  • 提升可读性

扩展: 现实场景中的决策树学习•问题 & 改进

1. 连续属性值

在这里插入图片描述

  • 建立一些离散属性值
  • 可选的策略:
    • I.选择相邻但有不同决策的值中间值 x S = ( x l + x u ) / 2 x_S=(x_l+x_u)/2 xS=(xl+xu)/2
      (Fayyad 在1991年证明了满足这样条件的阈值可以信息增益IG最大化)
    • II. 考虑概率 x S = ( 1 − P ) x l + P x u x_S = (1-P)x_l+Px_u xS=(1P)xl+Pxu(这个是哪边概率大,就偏向那边)

(补充: 机器学习中还常用这样的方法:比如上面的温度, 将温度数据数量在二位坐标系中绘出,横轴温度,纵轴数据量, 将曲线和x之间的面切成小长方形(类似定积分求面积的推导),面积一样, 这样每个区间数据量大小一样;还有其它的)

2. 具有过多取值的属性

问题:

  • 偏差: 如果属性有很多值,根据信息增益IG,会优先被选择
    • e.g. 享受运动的例子中,将一年里的每一天作为属性,那结果一定会优先这个特征,但它就像查表一样,过拟合
  • 一个可能的解决方法: 用 GainRatio(增益比) 来替代

(IG 和Entropy有关, 决策树分的越散(即分支越多),Entropy越小,到了决策树的细枝末节数据量就越少,越有可能确定;比如要二个数据一致比要60个数据一致更容易一些;Entropy越小,熵减少的越多,IG越大;所以IG有天然偏向性,偏向值越多的属性)

在这里插入图片描述
增益比大的才考虑,增益比小的就不考虑。
SplitInfromation是把集合分了多少份,集合的熵,而不是分了后总的熵的期望。(要再考虑下)

3. 未知属性值

在这里插入图片描述
数据规模不大, 数据得到不易。
如果那个不知属性值取neg,则有2正例4个负例;取pos,则有4正例,0负例

解决方法如果3中方法。
在这里插入图片描述

4. 有代价的属性

• 有时有的属性不容易获得(收集该属性值的代价太大)

  • Tan & Schlimmer(1990) G a i n 2 ( S , A ) C o s t ( A ) \frac{Gain^2(S,A)}{Cost(A)} Cost(A)Gain2(S,A)
  • Nunez(1988) 2 G a i n ( S , A ) − 1 ( C o s t ( A ) + 1 ) w \frac{2^{Gain(S,A)}-1}{(Cost(A)+1)^w} (Cost(A)+1)w2Gain(S,A)1
    • w:[0,1] 代价的重要性

其他信息

  • 可能是最简单和频繁使用的算法
    • 易于理解
    • 易于实现
    • 易于使用
    • 计算开销小
  • 决策森林:
    • 由C4.5产生的许多决策树(用到集成学习)
  • 更新的算法:C5.0 http://www.rulequest.com/see5-info.html
  • Ross Quinlan的主页: http://www.rulequest.com/Personal/

小结

  • 介绍及基本概念

    • 以ID3算法为例
      • 算法描述
      • 选择特征
      • 终止条件
      • ID3算法的归纳偏置
    • 过拟合问题
    • 剪枝
      • 预剪枝:基于样本数;基于信息增益阈值
      • 后剪枝: 错误降低剪枝;规则后剪枝

    在实际应用中,一般预剪枝更快,而后剪枝得到的树准确率更高

  • 扩展

    • 实际场景中的决策树学习
      • 连续属性值的离散化
      • 具有过多取值的属性处理
      • 未知(缺失)属性值的处理
      • 有代价的属性
    • 基本想法来源于人类做决策的过程
    • 简单、容易理解:“如果…就…”
    • 对噪声数据有鲁棒性
  • 应用

    • 在研究和应用中广泛使用
      • 医疗诊断(临床症状 → \rightarrow 疾病)
      • 信用分析 (个人信息 → \rightarrow 有价值客户?)
      • 日程规划
      • ……
    • 通常在部署更复杂的算法之前,常把决策树作为一个基准方法
      (baseline)
      (如果复杂算法在统计显著性不能好于决策树,那决策树就够用了)
    • 决策树方法常被用作复杂学习框架中的基础部分之一

归纳学习假设

  • 大部分的学习是从已知的样本中获得一般化的概念
    在这里插入图片描述
  • 归纳学习算法能够在最大程度上保证输出的假设能够在训练数据上拟合目标概念
    • 注意: 过拟合问题
  • 归纳学习假设:
    Any hypothesis found to approximate the target function well over a sufficiently large set of training examples will also approximate the target function well over unobserved examples.
    (任一假设若在足够大的训练样例集中很好地逼近目标函数,它也能在未见实例中很好地逼近目标函数)
    这里推荐看下机器学习PAC理论

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JSP 中的隐式对象预定义变量详解

JSP隐式对象是JSP容器为每个页面提供的Java对象&#xff0c;开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。 JSP所支持的九大隐式对象&#xff1a; request对象 request对象是javax.servlet.http.HttpServletRequest 类的示例。每当客户端请求一个J…

揭秘UniApp跨平台魔力:6道面试题带你探索!

文章目录 1. UniApp是什么&#xff1f;它有什么特点和优势&#xff1f;2. 介绍一下UniApp的跨平台原理。1. 基于WebView的渲染2. 统一封装API3. 平台特性适配4. 虚拟DOM Diff算法 3. 如何在UniApp中实现页面路由跳转&#xff1f;4. 如何在UniApp中发送网络请求&#xff1f;5. 详…

ELK 使用kibana查询和分析nginx日志

背景&#xff1a;使用kibana查询和分析nginx请求日志&#xff0c;方便开发人员查询系统日志和分析系统问题。 setp 1、定义Index patterns 2、定义Discover(Search 查询数据) 3、定义Visualizations 3.1 定义Vertical Bar 3.2 、Choose a source 3.3、定义图表 4、定义…

WPS本地镜像化在线文档操作以及样例

一个客户项目有引进在线文档操作需求&#xff0c;让我这边做一个demo调研下&#xff0c;给我的对接文档里有相关方法的说明&#xff0c;照着对接即可。但在真正对接过程中还是踩过不少坑&#xff0c;这儿对之前的对接工作做个记录。 按照习惯先来一个效果&#xff1a; Demo下载…

K8S系统监控:使用Metrics Server和Prometheus

Kubernetes 也提供了类似的linux top的命令&#xff0c;就是 kubectl top&#xff0c;不过默认情况下这个命令不会生效&#xff0c;必须要安装一个插件 Metrics Server 才可以。 Metrics Server 是一个专门用来收集 Kubernetes 核心资源指标&#xff08;metrics&#xff09;的…

qt服务器 网络聊天室

widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间server new QTcpServer(this); }Widget::~Widget() {delete ui; }//启动…

使用Gradio构建生成式AI应用程序; Stability AI推出Stable Diffusion XL 1.0

&#x1f989; AI新闻 &#x1f680; Stability AI推出最先进的AI工具Stable Diffusion XL 1.0 摘要&#xff1a;Stability AI宣布推出Stable Diffusion XL 1.0&#xff0c;该版本是其迄今为止最先进的AI工具。Stable Diffusion XL 1.0提供更鲜艳、更准确的图片生成&#xff…

【AI之路】使用huggingface_hub优雅解决huggingface大模型下载问题

文章目录 前言一、Hugging face是什么&#xff1f;二、准备工作三、下载整个仓库或单个大模型文件1. 下载整个仓库2. 下载单个大模型文件 总结附录 前言 Hugging face 资源很不错&#xff0c;可是国内下载速度很慢&#xff0c;动则GB的大模型&#xff0c;下载很容易超时&#…

【QT 网络云盘客户端】——主窗口界面的设计

目录 1.设计主窗口界面 2.设置窗口的背景图片 3. 自定义标题栏 3.1 设置toolbutton按钮的图片 3.2 设置按钮的大小 3.3 将自定义标题栏添加设置到主页面中 3.4 去除窗口的原标题栏 3.5 设置按钮颜色 3.6 切换页面功能实现 4.我的文件页面的设计 4.1 菜单栏的设计 4…

分冶算法 剑指 07 重建二叉树 排序算法:剑指45 把数组排成最小的数 10-I 斐波那契数列

来记录几个注意事项 1.vector容器里利用find&#xff08;&#xff09;函数 不同于map&#xff08;map有find方法&#xff09;&#xff0c;vector本身是没有find这一方法&#xff0c;其find是依靠algorithm来实现的。 所以要包含头文件 #include <iostream> #include <…

物联网阀控水表计量准确度如何?

物联网阀控水表是一种新型的智能水表&#xff0c;它采用了先进的物联网技术&#xff0c;可以通过远程控制和监测水表的运行情况&#xff0c;实现更加精准的水量计量和费用结算。那么&#xff0c;物联网阀控水表的计量准确度如何呢&#xff1f;下面我们将从以下几个方面进行详细…

sql中with as用法/with-as 性能调优/with用法

文章目录 一、概述二、基本语法三、使用场景3.1、定义CTE,并为每列重命名3.2、多次引用/多次定义3.3、with与union all联合使用3.4、with返回多种结果的值3.5、with与insert使用 四、递归查询4.1、语法4.2、使用场景4.2.1、用with递归构造1-10的数据4.2.2、with与insert递归造数…

flink to starrocks 问题集锦....

[问题排查]导入失败相关 - 问题排查 - StarRocks中文社区论坛 starrocks官网如下&#xff1a; Search StarRocks Docs starrocks内存配置项&#xff1a; 管理内存 Memory_management StarRocks Docs 问题1&#xff1a;实时写入starrocks &#xff0c;配置参数设置如下&a…

微信小程序,商城底部工具栏的实现

效果演示&#xff1a; 前提条件&#xff1a; 去阿里云矢量图标&#xff0c;下载8个图标&#xff0c;四个黑&#xff0c;四个红&#xff0c;如图&#xff1a; 新建文件夹icons&#xff0c;把图标放到该文件夹&#xff0c;然后把该文件夹移动到该项目的文件夹里面。如图所示 app…

第一次后端复习整理(JVM、Redis、反射)

1. JVM 文章仅为自身笔记 详情查看一篇文章掌握整个JVM&#xff0c;JVM超详细解析&#xff01;&#xff01;&#xff01; 1.1 什么是JVM jvm是Java虚拟机 1.2 Java文件的编译过程 程序员编写代码形成.java文件经过javac编译成.class文件再通过JVM的类加载器进入运行时数据…

论文分享:PowerTCP: Pushing the Performance Limits of Datacenter Networks

1 原论文的题目&#xff08;中英文&#xff09;、题目中包含了哪些关键词&#xff1f;这些关键词的相关知识分别是什么&#xff1f; 题目&#xff1a;PowerTCP: Pushing the Performance Limits of Datacenter Networks PowerTCP&#xff1a;逼近数据中心的网络性能极限 2 论…

app稳定性测试-iOS篇

稳定性测试&#xff1a;测试应用程序在长时间运行过程中是否存在内存泄漏、崩溃等问题&#xff0c;以确保应用程序具有较高的稳定性和可靠性。 对于安卓端&#xff0c;官方提供了很好的稳定性测试工具&#xff1a;monkey。 相比较而言&#xff0c;iOS则没有&#xff0c;而且当前…

013 怎么查看自己电脑的wifi密码

方法一&#xff1a;查看当前电脑连接的无线密码 步骤1&#xff1a; 打开windows命令行窗口&#xff0c;输入&#xff1a;ncpa.cpl 快速打开“控制面板”中的“网络连接”&#xff0c;如下图&#xff1a; 步骤2&#xff1a; 右键&#xff0c;打开“状态” 步骤3&#xff1a;…

【达哥讲网络】第3集:数据交换的垫基石——二层交换原理

专业的网络工程师在进行网络设计时&#xff0c;会事先规划好不同业务数据的转发路径&#xff0c;一方面是为了满足用户应用需求&#xff0c;另一方面是为了提高数据转发效率、充分利用各设备/各链路的硬件或带宽资源。在进行网络故障排除时&#xff0c;理顺各路数据的转发路径也…

uni-app优雅的实现时间戳转换日期格式

现在显示的格式如下图&#xff1a; 我期望统一格式&#xff0c;所以不妨前端处理一下&#xff0c;核心代码如下 filters: {// 时间戳处理formatDate: function(value, spe /) {value value * 1000let data new Date(value);let year data.getFullYear();let month data.…