ML@基础概念@模型评估和选择理论基础

news2024/11/23 7:46:47

refs

  • 参考经典机器学习资料西瓜书

主要符号

  • x x x:标量

  • x \boldsymbol{x} x:向量(注意是 x x x的粗体形式)

  • x \mathbf{x} x:变量集(正粗体)

  • A \mathbf{A} A:矩阵(正粗体)

  • I \mathbf{I} I:单位阵(正粗体)

  • χ \chi χ:样本空间或状态空间

  • D \mathcal{D} D:概率分布(字母D的书法体(caligraph))

  • D D D:数据集(数据样本)

  • H \mathcal{H} H:假设空间(Hypothesis,字母H的书法体)

  • H H H:假设集

  • L \mathfrak{L} L:学习算法(字母L的fraktur字体(哥特体),a German style of black-letter type.)

  • ( ⋅ , ⋅ , ⋅ ) (\cdot,\cdot,\cdot) (,,):行向量

  • ( ⋅ ; ⋅ ; ⋅ ) (\cdot;\cdot;\cdot) (;;)列向量

  • ( ⋅ ) T (\cdot)^{\mathrm{T}} ()T向量(矩阵)转置(有时为了简单,将 T ^\mathrm{T} T简记为 T ^T T)

  • { ⋯   } \{\cdots\} {}:集合

  • ∣ { ⋯   } ∣ |\{\cdots\}| {}:集合中元素个数

  • ∣ ∣ ⋅ ∣ ∣ p ||\cdot||_p ∣∣p: L p \mathrm{L}_{p} Lp范数, p p p缺省时表示 L 2 \mathrm{L}_2 L2范数(有时 L \mathrm{L} L L L L)

  • P ( ⋅ ) P(\cdot) P()概率质量函数

  • P ( ⋅ ∣ ⋅ ) P(\cdot|\cdot) P():条件概率质量函数

  • p ( ⋅ ) p(\cdot) p():概率密度函数

  • p ( ⋅ ∣ ⋅ ) p(\cdot|\cdot) p():条件概率密度函数

  • E . ∼ D [ f ( ⋅ ) ] \mathbb{E}.\sim{\mathcal{D}}[f(\cdot)] E.D[f()]:数学期望

    • 字母 E E E的黑板粗体(blackboard)
    • 具体是函数 f ( ⋅ ) f(\cdot) f() ⋅ \cdot 在分布 D \mathcal{D} D下的数学期望
    • 意义明确时省略 D \mathcal{D} D ⋅ \cdot 中的一个或全部
  • sup ⁡ ( ⋅ ) \sup{(\cdot)} sup():上确界

  • I ( ⋅ ) \mathbb{I}(\cdot) I():指示函数,在 ⋅ \cdot 为真时取1,否则取0( I \mathbb{I} I是字母 I I I的黑板粗体)

  • sign ( ⋅ ) \text{sign}(\cdot) sign():符号函数:

    • sign ( ⋅ ) = { − 1 , ⋅ < 0 0 , ⋅ = 0 1 , ⋅ > 0 \text{sign}(\cdot)=\begin{cases} -1,&\cdot<0\\ 0,&\cdot=0\\ 1,&\cdot>0 \end{cases} sign()= 1,0,1,<0=0>0

基本概念

  • 学习算法:从数据中产生模型的算法称为学习算法

  • 机器学习是研究学习算法的学问

  • 从数据中学得到的结果可称为模型

  • 进行机器学习先要有数据:

    • 记录的集合称为数据集记录是关于一个事件或对象的描述,也称为示例(instance)或样本(sample)
    • 属性(attribute)或特征(feature):反映事件或对象在某方面的表现或性质的事项
    • 属性值(attribute value):属性的取值
  • 属性成的空间成为属性空间(sample space),样本空间(smaple space)或输入空间

  • 若样本包含n个属性,则可以张成一个n维空间

    • n维空间中的每个(n维)点都对应一个n维坐标向量,因此也可以将一个示例成为一个特征向量(feature vector)
  • D = { x 1 , x 2 , ⋯   , x n } D=\{\boldsymbol{x_1},\boldsymbol{x_2},\cdots,\boldsymbol{x_n}\} D={x1,x2,,xn}表示包含m个示例的数据集

  • 若每个示例有 d d d个属性描述(整数d称为样本 x i \boldsymbol{x}_i xi的维数(dimesionality),则可以表示为 x i = ( x i 1 , ⋯   , x i d ) \boldsymbol{x}_i=(x_{i1},\cdots,x_{id}) xi=(xi1,,xid)

    • x i j x_{ij} xij表示 x i \boldsymbol{x}_i xi向量在第j个属性上的取值
    • x i \boldsymbol{x}_i xi是d维样本空间 χ \chi χ中的一个向量,记为 x i ∈ χ \boldsymbol{x}_i\in{\chi} xiχ
  • 学习(learning)或训练(training):从数据中学得模型的过程

    • 学习通过执行某个学习算法lai完成
  • 训练过程中使用的数据称为训练数据(training data),每个样本称为具体称为训练样本(trianing sample)

  • 训练集(traing set):寻来你样本组成的集合

  • 假设(hypothesis):学习算法学得的模型对应的数据的某种潜在规律

  • 真相(ground-truth):潜在规律自身(真实规律)

    • 学习过程是一个找出或逼近真相的过程
  • 学习器(learner):模型的别称,可以看作学习算法在给定数据和参数空间上的实例化

  • 标记(label):示例的标签(作为训练样本的结果信息)

    • 例如通过判断西瓜样本(色泽=青绿,根蒂=蜷缩,敲声=浑浊)->好瓜其中好瓜这个结论作为示例的标签
  • 样例(example):拥有了标记的的示例(区别于样本sample)

  • 预测(prediction):根据模型判断或估计新输入示例具有什么样的标签

  • ( x i , y i ) (\boldsymbol{x}_i,y_i) (xi,yi)表示第i个样例, y i ∈ γ y_i\in\gamma yiγ x i \boldsymbol{x_i} xi的标记, γ \gamma γ是所有标记的集合,也称为标记空间(label space)或输出空间

  • 对离散值的预测任务称为分类(classification)

    • 只需要区分2个类别得任务称为二分类(binary classification)
      • 其中一个类称为正类(positive class)
      • 另一个类称为负类(或反类)(negative class)
    • 类别超过2的情况,称为多分类(multi-class classification)
  • 对非离散的连续值得预测任务是回归(regression)

  • 预测任务:通过对训练集D进行学习,建立一个从 χ \chi χ γ \gamma γ的映射 f : χ → γ f:\chi\to{\gamma} f:χγ

    • 对于二分类任务, ∣ γ ∣ = 2 |\gamma|=2 γ=2,通常令 γ = { − 1 , + 1 } 或 { 0 , 1 } \gamma=\{-1,+1\}或\{0,1\} γ={1,+1}{0,1}
    • n分类任务 ∣ γ ∣ = n > 2 |\gamma|=n>2 γ=n>2
    • 对于回归任务,通常 γ = R \gamma=\mathbb{R} γ=R, R \mathbb{R} R为实数集
  • 训练好模型后,需要对模型进行测试(testing),被预测的样本称为测试样本(testing samle)

  • 聚类:将训练集中样本分成若干组,每个组又称为(cluster)

    • 自动形成的簇可能对应了一些潜在概念的划分,例如西瓜的颜色,大小等可能不是我们要预测的目标(标签)
  • 根据训练数据是否拥有标记信息,学习任务可大致划分为两大类:

    • “监督学习”(supervised learning)
      • 例如分类和回归任务
    • “无监督学习”(unsupervised learning),
      • 例如聚类任务
  • 需注意的是,机器学习的目标是使学得的模型能很好地适用于“新样本”,而不是仅仅在训练样本上工作得很好,即便对聚类这样的无监督学习任务,我们也希望学得的簇划分能适用于没在训练集中出现的样本.

    • 学得模型适用于新样本的能力,称为“泛化”(generalization)能力.
    • 具有强泛化能力的模型能很好地适用于整个样本空间.
      • 现实任务中样本空间的规模通常很大(例如20个属性,每个属性有10个可能取值,则样本空间的规模已达 1 0 20 10^{20} 1020)
    • 于是,尽管训练集通常只是样本空间的一个很小的采样,我们仍希望它能很好地反映出样本空间的特性,否则就很难期望在训练集上学得的模型能在整个样本空间上都工作得很好.
  • 通常假设样本空间中全体样本服从一个未知“分布”(distribution) D \mathcal{D} D,我们获得的每个样本都是独立地从这个分布上采样获得的,即“独立同分布”(independent and identicallydistributed,简称i.i.d.)

  • 一般而言,训练样本越多,我们得到的关于D的信息越多,这样就越有可能通过学习获得强泛化能力的模型.

假设空间

  • 归纳(induction)与演绎(deduction)是科学推理的两大基本手段.
    • 归纳是从特殊到一般的“泛化”(generalization)过程,即从具体的事实归结出一般性规律;
    • 后者则是从一般到特殊的“特化”(specialization)过程,即从基础原理推演出具体状况.
  • 例如
    • 在数学公理系统中,基于一组公理和推理规则推导出与之相洽的定理,这是演绎;
    • 而“从样例中学习”显然是一个归纳的过程,因此亦称“归纳学习”(inductive learning).

概念学习

  • 归纳学习有狭义与广义之分
    • 广义的归纳学习大体相当于从样例中学习,
    • 狭义的归纳学习则要求从训练数据中学得概念(concept),因此亦称为“概念学习”或“概念形成”.
  • 概念学习技术目前研究、应用都比较少,因为要学得泛化性能好且语义明确的概念太困难
  • 现实常用的技术大多是产生“黑箱”模型.
  • 对概念学习有所了解,有助于理解机器学习的一些基础思想.

经验误差和过拟合

常见概念🎈

  • 错误率(error rate):分类错误的样本数占样本总数的比例
    • E = a m E=\frac{a}{m} E=ma其中m为样本总数,a为被分类错误的样本数
  • 精度(accuracy): A = 1 − E = 1 − a m A=1-E=1-\frac{a}{m} A=1E=1ma,即精度=1-错误率
  • 误差(error):学习器的实际预测输出与样本的真实输出之间的差异
    • 训练误差(training error|empirical error):也称经验误差,是学习器在训练集上的误差
    • 泛化误差(generalization error):学习器在新样本上的误差
  • 我们总是希望得到泛化误差最小的学习器
    • 我们希望学习器从训练样本中能尽可能学出适用于所有潜在样本普遍规律
  • 此外,经验误差很小的学习器往往不是我们想要的,他们在多数情况下不好(过拟合)

泛化性能

过拟合

  • 学习器把训练样本学得太好(过度),很可能把训练样本自身的一些特点当作潜在样本都有的一般性质,这现象显然是不好的行为,会影响泛化能力,称为过拟合(overfitting)
    • 常见的情况是学习器学习能力过于强大,导致把训练样本的特有特性都学习到了
    • 这是机器学习面临的关键问题
    • 过拟合无法彻底避免,我们只能缓解或减小过拟合风险

欠拟合

  • 相反,如果对训练样本的一般性质尚未学好,则成为欠拟合(underfitting)
    • 通常由于学习能力低下造成,这类情况比较好克服,例如:
      • 对于决策树,可以扩展分支
      • 对于神经网络,可以增加训练轮数

  • 例如:
    • 训练集中的树叶基本都有锯齿边,现在新的样本树叶没有锯齿,由于学习器把锯齿边作为样本是树叶的特征作了学习,因此无锯齿的新树叶样本被判定为不是树叶,这种现象理解为过拟合
    • 如果将一整棵树判定为一片树叶,则是欠拟合

模型选择问题

  • 在解决进行某个任务的时候,可能有多种算法可供选择,对于同一中算法,使用不同的参数配置,也会产生不同的模型.
  • 对算法的选择和参数配置的选择问题是机器学习中的模型选择(model selection)问题

评估方法(实验估计方案)

样本采样

  • 划分测试集(训练集)要尽可能保持数据分布一致性,避免因数据划分过程中引入额外的偏差而对最终结果产生影响
  • 分层采样(stratified sampling):在分类任务中,要保持样本的类别比例相似,以采样(sampling)的角度来看,保留类别比例的采样方式称为分层采样
    • 例如,训练集S中正例和反例都是 a : b a:b a:b

测试集

  • 测试集(testing set):测试学习器对新样本的判别能力,以测试集上的测试误差(testing error)作为泛化误差近似

  • 对于测试集,通常假设测试样本也是从样本真实分布中独立同分布采样而得.

  • 假设我们有一个包含 m m m个样例的数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } D=\{(\boldsymbol{x}_1,y_1),(\boldsymbol{x}_2,y_2),\cdots,(\boldsymbol{x}_m,y_m)\} D={(x1,y1),(x2,y2),,(xm,ym)},可以通过各种方法从D中产生处训练集 S S S和测试集 T T T

留出法

  • 留出法(hold-out),将D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T
    • D = S ∪ T D=S\cup{T} D=ST, S ∩ T = ∅ S\cap{T}=\empty ST=
    • 在S上训练出模型后,用T对模型进行评估(评估器测试误差,作为对泛化误差的估计)
  • 单次使用留出法得到的估计结果往往是不够稳定可靠,使用留出法一般要要采用若干次随机划分,重复进行试验评估后取平均值作为留出法的评估结果

保真性

  • 通常希望评估数据集D上训练的模型,留出法需要分割训练集和测试集
    • 如果训练集S样本数量接近D,则模型可能更加接近直接用D训练出来的模型,但T此时较小,评估结果可能不够稳定准确
    • 反之,较大的T使得S和D差距变大,基于S训练出来的模型和D训练的模型可能有较大差别,降低了评估结果的保真性(fidelity)
  • 通常做法是将 2 3 ∼ 4 5 \frac{2}{3}\sim{\frac{4}{5}} 3254的样本作为训练集,剩余样本作为测试

交叉验证法

  • 交叉验证法(cross validation):先将数据集D划分为k个大小相似的互斥子集
    • D = D 1 ∪ D 2 ∪ ⋯ ∪ D k = ⋃ i = 1 k D i D=D_1\cup{D_2}\cup{\cdots}\cup{D_k}=\bigcup_{i=1}^{k}D_{i} D=D1D2Dk=i=1kDi
    • D i ∩ D j = ∅ , i ≠ j D_i\cap{D_{j}}=\empty,{i\neq{j}} DiDj=,i=j
    • 每个子集 D i D_i Di都尽可能保持数据分布的一致性(从D中通过分层采样得到(stratified k-fold))
    • 这类划分可供k次试验(训练+测试),每次用k-1个子集的并集作为训练集,剩余的一个子集作为测试集
    • 最终对k次试验的测试结果取平均值返回
  • 交叉验证法的稳定性和保真性很大程度取决于k的取值,通常把交叉验证法称为k折交叉验证( k − f o l d k-fold kfold cross validation)
  • k通常取10,5,20等

p次k折交叉验证

  • 将数据集D划分为k个子集存在多种划分方式
  • 为例减少因样本划分的不同而引入的差异,k折交叉验证通常要随机使用不同的划分重复p次
  • 最终的评估结果是p次k折交叉验证结果的均值(总共执行 p × k p\times{k} p×k次试验(训练+测试),相当执行了 p × k p\times{k} p×k次留出法试验)

留一法

  • 假设数据集D中包含m个样本,若令 k = m k=m k=m,则得到交叉验证法的一个特例:留一法(Leave-One-Out,LOO).
  • LOO不受随机样本划分方式的影响,因为m个样本只有唯一的方式:划分为m个子集,且每个子集包含一个样本
  • LOO的S集和D集样本数量只差1,因此绝大多数情况下,LOO中被实际评估的模型(基于S)和期望评估的模型(基于D)和相似.
  • LOO的评估结果往往被认为比较准确.
  • 容易发现,LOO在需要做 1 × m 1\times{m} 1×m次试验,即,需要训练m个模型,评估测试结果求平均值
  • 在数据集很大时,m很大,训练你m个模型的计算开销可能非常大,如果再算上调参,则更加让人难以接受.

自助法

  • 在留出法和交叉验证法中,由于保留了D中的一部分T作为测试集,因此实际评估的模型所用的训练集S比D小,引入了一些因为训练样本规模不同而导致的估计偏差.
  • 虽然留一法受训练样本规模变化影响较小,但是计算代价太高
  • 自助法(bootstrapping)是一个较好的解决方案,可以减少样本训练样本规模不同造成的影响,同时还能比较高县地进行实验估计,它直接以自助采样法为基础:

自主采样法

  • 自助采样法(bootstrap sampling),设数据集D包含m个样本,对齐进行采样得到数据集 D ′ D' D:

    • 每次从D中挑选一个样本,将其拷贝到D’,被拷贝的样本放回D中
    • 将上述过程重复m次,得到包含m个样本的数据集 D ′ D' D,作为自助采样的结果
    • D中的一部分会出现在D’中,另一部分不出现
  • 任何样本每次采样中被采到的概率总是 1 m \frac{1}{m} m1,不被采到的概率为 1 − 1 m 1-\frac{1}{m} 1m1

  • 某个样本m次采样始终不被采到的概率: ( 1 − 1 m ) m (1-\frac{1}{m})^{m} (1m1)m,对其取极限:

    • lim ⁡ m → ∞ ( 1 − 1 m ) m = e − 1 ≈ 0.368 \lim_{m\to{\infin}}(1-\frac{1}{m})^{m}=e^{-1}\approx{0.368} mlim(1m1)m=e10.368

    • 注意m既是是样本总数,同时也是采样次数

  • 通过自助采样(m足够大),初始数据集D中约有36%的样本未出现在采样数据集 D ′ D' D

  • 我们可以采用 D ′ D' D作为训练集, S = D \ D ′ S=D\backslash {D'} S=D\D作为测试集

    • D \ D ′ D\backslash{D'} D\D中,\(backslash)集合减法,相当于 D − D ′ D-D' DD
    • 这样,实际评估的模型与期望评估的模型都是用m个训练样本,而且,根据上面的极限值 1 / e 1/e 1/e,仍然有 1 3 \frac{1}{3} 31左右的样本不会被用于训练(不再训练集 D ′ D' D中出现)
    • 上述方法称为包外估计(out-of-bag estimate)
  • 优点:

    • 自助法在数据集较小,那一有效划分训练/测试集时很有用
    • 自助法能够从初始数据集中产生多个不同的训练集,对集成学习很有用
  • 缺点:

    • 自助法产生的数据集改变了初始数据集的分布,引入了估计偏差(因此,当数据量充足时,更多的使用留出法和交叉验证法)

调参

  • 参数调剂或调参(parameter tuning),大多数机器学习算法有些参数(parameter)需要设定,参数配置不同,学习器学习得得模型性能可能有显著差别
  • 学习算法很多参数时在实数范围内取值,显示做法时对每个参数选定一个范围和变化步长
    • 例如,[m,m+0.2]内以0.05为步长,那么需要参加评估的候选参数有 0.2 / 0.05 + 1 = 5 0.2/0.05+1=5 0.2/0.05+1=5
    • 这种离散的选择参数结果往往不是最佳的,但为例学习过程变得可行,需要对计算开县和性能估计之间机型着折衷,采用一系列的离散值作为候选参数
    • 此外,即便是折中后的做法,对于有多个参数需要调节的算法,依然可能要做大量的模型考察,假设算法有a个参数需要调整,每个参数仅考虑b个候选值,则就产生了 b a b^a ba中不同的参数组合

模型交付

  • 上述介绍的训练/评估方法都对数据集D做了一定的预留(作为测试集)进行评估和测试,因此事实上只用了一部分数据训练模型
  • 模型选择工作完成后,学习算法参数配置已经选定.这时要用数据集D重新对选定后的算法和配套参数配置进行训练(这个模型在训练过程中使用了所有m个样本),作为最终模型

测试数据和验证数据

  • 为了区分,通常把模型在实际使用过程中遇到的数据称为测试数据,对应于测试集

  • 模型评估和选择阶段用于评估测试的数据集称为验证集(validation set)

  • 对比不同算法的泛化性能时,从数据集划分一部分作为测试集,用测试集上的判别效果来估计模型在实际使用时的泛化能力

  • 把训练数据另外划分为训练集测试集,基于验证集上的性能来进行模型选择和调参

  • 例如,数据集D本划分为测试集T和S=D-T,使用一下实验基于S

    • 对算法A选中参数配置P1,使用交叉验证法评估训练出来的模型性能,得到评估结果R1
    • 假设该模型性能不能令人满意,我们再选择一组参数P2,再次训练,重新评估,得到评估结果R2
    • 反复执行上述过程,直到得到满意的评估结果位置,记录此时的参数配置
    • 这个过程中S被划分为SS和SV,分别作为单次实验中的训练集和验证集
    • 可见,验证集其实是训练数据中的一部分

性能度量

  • 对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure).
  • 性能度量反映了任务需求,对比不同模型的能力时,可能选用不同的性能度量,而不同的性能度量可能产生不同的评判结果(意味着模型的好坏时相对的,比如A模型再M1度量指标上好于B模型,但B模型可能再M2度量指标上好于模型A)
  • 模型的好坏不仅仅取决于算法和数据,还取决于任务需求
  • 设样例集 D = { ( x 1 , y 1 ) , ⋯   , ( x m , y m ) } D=\{(\boldsymbol{x}_1,y_1),\cdots,(\boldsymbol{x}_m,y_m)\} D={(x1,y1),,(xm,ym)}其中 y i y_i yi是样本 x i \boldsymbol{x}_i xi的真实标记
  • 通过比较学习器的预测结果 f ( x ) f(\boldsymbol{x}) f(x)和真实标记 y y y来评估学习器 f f f的性能

均方误差

  • 回归任务最常用的性能度量是均方误差(mean squared error),MSE:

    • E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac{1}{m}\sum_{i=1}^{m}(f(\boldsymbol{x_i})-y_i)^2 E(f;D)=m1i=1m(f(xi)yi)2
  • 对于数据分布D和概率密度函数p,MSE描述为:

    • E ( f ; D ) = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x E(f;D)=\int_{x\sim{D}}(f(\boldsymbol{x})-y)^2p(\boldsymbol{x})\mathrm{d}{\boldsymbol{x}} E(f;D)=xD(f(x)y)2p(x)dx

指示函数符号

  • I \mathbb{I} I符号表示指示函数( I ( ⋅ ) \mathbb{I}(\cdot) I()表示表达式 ⋅ \cdot 为真时,结果取1,否则取0)

错误率

  • E ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) 对于数据分布 D 和概率密度函数 p E ( f ; D ) = ∫ x ∼ D I ( f ( x ) ≠ y ) p ( x ) d x E(f;D)=\frac{1}{m}\sum_{i=1}^{m}\mathbb{I}(f(\boldsymbol{x_i})\neq{y_i}) \\ 对于数据分布D和概率密度函数p \\ E(f;D)=\int_{x\sim{D}}\mathbb{I}(f(\boldsymbol{x})\neq{y})p(\boldsymbol{x})\mathrm{d}{\boldsymbol{x}} E(f;D)=m1i=1mI(f(xi)=yi)对于数据分布D和概率密度函数pE(f;D)=xDI(f(x)=y)p(x)dx

精度

  • a c c ( f ; D ) = 1 − E ( f ; D ) 具体分为离散情况 : 1 m ∑ i = 1 m I ( f ( x i ) = y i ) 非离散情况 : ∫ x ∼ D I ( f ( x ) = y ) p ( x ) d x acc(f;D)=1-E(f;D) \\具体分为离散情况: \frac{1}{m}\sum_{i=1}^{m}\mathbb{I}(f(\boldsymbol{x_i})=y_i) \\ 非离散情况: \int_{x\sim{D}}\mathbb{I}(f(\boldsymbol{x})=y)p(\boldsymbol{x})\mathrm{d}{\boldsymbol{x}} acc(f;D)=1E(f;D)具体分为离散情况:m1i=1mI(f(xi)=yi)非离散情况:xDI(f(x)=y)p(x)dx

混淆矩阵

  • 二分类中,真实类别 y y y和学习器预测类别 f ( x ) f(\boldsymbol{x}) f(x)的组合划分为:

    • True Positive,TP,真正例,真阳例
    • False Positive,FP,假正例,假阳例
    • True Negative,TN,真反例,真阴例
    • False Negative,FN,假反例,假阴例
  • 假设样本总数为m,满足:

    • TP+FP+TN+FN=m

    • 在这里插入图片描述在这里插入图片描述
      混淆矩阵黄色部分表示预测为正例的样本
      这是二分类情况下的,多分类有类似的推广概念蓝字部分表示真实为正例的样本

precision

  • precision,有多种译法:查准率,准确率

  • P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP

  • 区别于上面提到的精度,错误率和精度是更加综合的指标,而precision和recall是更加具体的指标

recall

  • recall,有多种译法:查全率,回召率

  • R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP

precision和recall的矛盾

  • 通常,P,R是一对矛盾的度量
    • P高R往往偏低
    • R高P往往偏低
  • 以选西瓜为例,假设瓜的总量丰富
  • 如果十分保守,只选非常有把握的瓜(挑出的瓜中好瓜比例尽量高),那么可以提高P
    • 因为FP会减小,从而FN变大,导致R变小
    • 会导致许多好瓜被遗漏
    • 对于内容推荐这类任务,通常希望查准率高,推荐给用户的内容尽可能使用户喜欢的,没有较高把握用户喜欢的内容就不推荐了,这些遗漏通常不太重要.
  • 尽可能多的选瓜,可以提高R(查全率)
    • 因为TP变大,FP增大,FN不会变大,反而会减少,导致P变小
    • 但是导致差的瓜被选中(成为假阳例),导
    • 例如传染病病毒检测中,希望减少遗漏阳性患者的可能,更加关心查准率
    • 逃犯的搜查也是类似的
  • 只有在一些简单的任务中,P,R才会同时比较

P-R曲线图

  • sklearn.metrics.precision_recall_curve — scikit-learn documentation
  • P-R 图直观地显示出学习器在样本总体上的查全率、查准率.
  • 在这里插入图片描述
  • 在进行比较时,若一个学习器的P - R 曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者
  • 例如曲线A完全包住曲线C,称A地性能由于C
  • 如果P-R曲线发生交叉,则不容易比较好坏

BEP平衡点

  • BEP(Break Event Point)使P-R曲线上P=R时的位置,距离原点越远,则认为BEP越好,可以作为简单的综合指标,来比较P-R曲线发生交叉时的粗略比较

F 1 , F β F_1,F_{\beta} F1,Fβ

  • 由于BEP过于简单,更常用的是F1度量(P,R的调和平均数):

    • F 1 = 2 P R P + R F1=\frac{2PR}{P+R} F1=P+R2PR
  • F 1 F_1 F1是基于P,R的调和平均(harmonic mean)定义的

    • 调和平均数比算数平均数和集合平均数更加重视较小值

    • F 1 − 1 = 1 2 ( P − 1 + R − 1 ) {F_1^{-1}}=\frac{1}{2}(P^{-1}+R^{-1}) F11=21(P1+R1)

  • F β F_{\beta} Fβ

    • 某些任务更加看重P,R中的一方

    • 则考虑使用 F 1 F_1 F1的一般形式: F β F_\beta Fβ,借助 β \beta β表达我们对P,R的不同偏好程度

    • F β = ( 1 + β 2 ) P R ( β 2 P ) + R F_{\beta}=\frac{(1+\beta^2)PR}{(\beta^2P)+R} Fβ=(β2P)+R(1+β2)PR

    • 可以看到 F 1 F_1 F1 β = 1 \beta=1 β=1时的特例

    • β > 0 \beta>0 β>0度量了R对P的相对重要性

      • β > 1 \beta>1 β>1时R有更大的影响
      • β < 1 \beta<1 β<1时则相反(P有更大影响)

macro@micro

  • 对于多个二分类混淆矩阵 C 1 , ⋯   , C n C_1,\cdots,C_n C1,,Cn,例如
    • 进行多次训练+测试,每次可得到一个混淆矩阵
    • 在多个数据集上进行训练+测试,每个数据集上的实验都可以得到混淆矩阵,以估计算法的全局性能
  • 多分类任务中,每两两个类别的组合都对应一个混淆矩阵,也可以获得多个混淆矩阵

macro

  • 宏查准率(macro-P)和宏查全率(macro-R):
    • 在各个混淆矩阵上分别计算出P和R,记为 ( P 1 , R 1 ) , ( P 2 , R 2 ) , ⋯   , ( P n , R n ) (P_1,R_1),(P_2,R_2),\cdots,(P_n,R_n) (P1,R1),(P2,R2),,(Pn,Rn),再计算平均值,得到macro-P,macro-R
    • macro-P= 1 n ∑ i = 1 n P i \frac{1}{n}\sum_{i=1}^{n}P_i n1i=1nPi,简记为 P M P_M PM
    • macro-R= 1 n ∑ i = 1 n R i \frac{1}{n}\sum_{i=1}^{n}R_i n1i=1nRi,简记为 R M R_{M} RM
  • 宏F1(macro-F1):
    • macro-F1= 2 P M R M P M + R M \frac{2P_MR_M}{P_M+R_M} PM+RM2PMRM,简记为 F 1 M F_{1M} F1M

micro

  • 若将各混淆矩阵的对应元素(即TP,FP,TN,FN)各自进行平均,得到的平均值分别记为 T P ‾ , F P ‾ , T N ‾ , F N ‾ \overline{TP},\overline{FP},\overline{TN},\overline{FN} TP,FP,TN,FN

  • micro-P,简记为 P m P_m Pm

    • P m = T P ‾ T P ‾ + F P ‾ P_m=\frac{\overline{TP}}{\overline{TP}+\overline{FP}} Pm=TP+FPTP
  • micro-R,简记为 R m R_m Rm

    • R m = T P ‾ T P ‾ + F N ‾ R_m=\frac{\overline{TP}}{\overline{TP}+\overline{FN}} Rm=TP+FNTP
  • micro-F1,简记为 F 1 m F_{1m} F1m

    • F 1 m = 2 P m R m P m + R m F_{1m}=\frac{2P_{m}R_{m}}{P_{m}+R_m} F1m=Pm+Rm2PmRm

ROC

  • 很多学习器是为测试样本产生一个实值或概率预测(统称为预测值),然后将这个预测值与一个分类阈值(threshold)进行比较,若大于阈值则分为正类,否则为反类.
  • 例如,神经网络在一般情形下是对每个测试样本预测出一个[0.0,1.0]之间的实值,然后将这个值与0.5进行比较,大于0.5则判为正例,否则为反例.
  • 这个实值或概率预测结果的好坏,直接决定了学习器的泛化能力.

截断点

  • Multiclass Receiver Operating Characteristic (ROC) — scikit-learn documentation

  • 实际上,根据这个实值或概率预测结果,我们可(根据各样本的预测值)将测试样本进行排序,“最可能”是正例的排在最前面,“最不可能”是正例的排在最后面.这样,分类过程就相当于在这个排序中选用某个“截断点”(cut point)将样本分为两部分,前一部分判作正例,后一部分则判作反例.

  • 在不同的应用任务中,我们可根据任务需求来采用不同的截断点,例如若我们更重视“查准率”,则可选择排序中靠前的位置进行截断(尽可能选择比较有把握的样本);若更重视“查全率”,则可选择靠后的位置进行截断.

  • 因此,排序本身的质量好坏,体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏,或者说,“一般情况下”泛化性能的好坏.

  • ROC曲线则是从这个角度出发来研究学习器泛化性能的有力工具.

    • ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线,它源于“二战”中用于敌机检测的雷达信号分析技术,二十世纪六七十年代开始被用于一些心理学、医学检测应用中,此后被引入机器学习领域

    • 与P-R曲线相似,我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就得到了“ROC曲线”.

    • 与P-R曲线使用查准率、查全率为纵、横轴不同, ROC曲线的纵轴是“真正例率”(True Positive Rate,简称TPR),横轴是“假正例率”(False PositiveRate,简称FPR)

    • T P R = T P T P + F N F P R = F P T N + F P TPR=\frac{TP}{TP+FN} \\ FPR=\frac{FP}{TN+FP} TPR=TP+FNTPFPR=TN+FPFP

    • 更具表达式比较可以发现TPR就是回召率(查全率)R

  • ROC曲线图简称ROC图

    • 对角线对应于随机猜测模型,因为所有反例样本被预测错的比例和所有正例样本被正确预测的比例相同,对于二分类任务,效果相当于随机猜测
    • 对于点 ( 0 , 1 ) (0,1) (0,1)表示模型能够将所有正例样本预测为正例,所有反例样本预测为反例(也就是所有样例都被正确预测),属于最理想的情况.从cut point的角度来看,就是截断点之前的样本都是正例,截断点之后的样例都是反例
  • 现实任务中,无论是P-R图还是ROC图,都仅能获得有限个坐标对,而无法获得真正光滑的ROC曲线,只能绘制出近似的ROC曲线

  • ROC曲线的绘制(描点方法):

    • 给定 m + m_{+} m+各正例和 m − m_{-} m个反例( m [ − ] + m [ + ] = n m_{[-]}+m_{[+]}=n m[]+m[+]=n,对学习器预测结果对样例进行排序
      • 不妨将n个样本的预测结果排序后的有序序列记为 [ s 1 , ⋯   , s n ] [s_1,\cdots,s_n] [s1,,sn],其中 s i ⩾ s j ( 0 < i < j ⩽ 0 ) s_{i}\geqslant{s_j}(0<i<j\leqslant{0}) sisj(0<i<j0)
    • 先把分类阈值(threshold)设置为最大( s 1 s_1 s1),这相当于将所有样例预测为反例,此时TPR,FPR均为0(TP,FP都为0),在坐标 ( 0 , 0 ) (0,0) (0,0)出标记第一个点
    • 将threshold依次设置为 s i ( i = 2 , ⋯   , n ) s_i(i=2,\cdots,n) si(i=2,,n),则个过程相当于依次将每个样本划分为正例部.
      • 设前一个标记点坐标为(x,y),对应的(TP,FP)=(a,b),则 ( x , y ) = ( a m − , b m + ) (x,y)=(\frac{a}{m_{-}},\frac{b}{m_{+}}) (x,y)=(ma,m+b)
        • 若当前样例为TP,则对应的标记点为 ( a m − , b + 1 m + ) = ( x , y + 1 m + ) (\frac{a}{m_{-}},\frac{b+1}{m_{+}})=(x,y+\frac{1}{m_{+}}) (ma,m+b+1)=(x,y+m+1)
        • 若当前例为FP,则对应的标记点为 ( a + 1 m − , b m + ) = ( x + 1 m − , y ) (\frac{a+1}{m_{-}},\frac{b}{m_{+}})=(x+\frac{1}{m_{-}},y) (ma+1,m+b)=(x+m1,y)
    • 将生成的n个点依次连接得到近似ROC曲线

AUC

  • 进行学习器比较时,与P-R图类似,如果学习器A的ROC曲线被学习器B的曲线完全包住,则认为B由于A

  • A,B的ROC曲线发生交叉,则难以直接比较优劣,一个比较合理的判据时ROC曲线下的面积,AUC(Aera Under ROC Curve)

  • 假定ROC是由坐标序列 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } \{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\} {(x1,y1),(x2,y2),,(xm,ym)}的点按序列连接而形成(其中, x 1 = 0 , x m = 1 x_1=0,x_m=1 x1=0,xm=1)

  • A U C ≈ 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ( y i + y i + 1 ) AUC\approx\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_i+y_{i+1}) AUC21i=1m1(xi+1xi)(yi+yi+1)

  • 给定 m + m_{+} m+个正例和 m − m_{-} m个反例,令 D + , D − D^{+},D^{-} D+,D分别表示正,反例集合,排序损失(loss)定义为:

    • L r a n k = 1 m + m − ∑ x + ∈ D + ∑ x − ∈ D − ( I ( f ( x + ) < f ( x − ) ) + 1 2 I ( f ( x + = f ( x − ) ) ) ) L_{rank}=\frac{1}{m_{+}m_{-}}\sum_{x^{+}\in{D^{+}}}\sum_{x^{-}\in{D^{-}}} \left( \mathbb{I}(f(x^{+})<f(x^{-})) +\frac{1}{2}\mathbb{I}(f(x^{+}=f(x^{-}))) \right) Lrank=m+m1x+D+xD(I(f(x+)<f(x))+21I(f(x+=f(x))))

    • 考虑每一对正,反例

      • 若正例的预测值小于反例,则记一个罚分
      • 若相等,则记0.5个罚分
    • L r a n k L_{rank} Lrank对应的是ROC曲线之商的面积, A U C = 1 − L r a n k AUC=1-L_{rank} AUC=1Lrank

    • 若一个正例在ROC曲线上对应的坐标为 ( x , y ) (x,y) (x,y),则 x x x恰是排序在其之前的反例所占的比例(FPR)

比较检验

  • 有了实验评估方法和性能度量,看起来就能对学习器的性能进行评估比较了:
    • 先使用某种实验评估方法测得学习器的某个性能度量结果,然后对这些结果进行比较.
  • 实际上比直接取得性能度量的值然后比大小要复杂得多,重要因素:
    • 首先,我们希望比较的是泛化性能,然而通过实验评估方法我们获得的是测试集上的性能,两者的对比结果可能未必相同;
    • 第二,测试集上的性能与测试集本身的选择有很大关系,不同大小的测试集会得到不同的结果,即便用相同大小的测试集,若包含的测试样例不同,测试结果也会有不同;
    • 第三,很多机器学习算法本身有一定的随机性,即便用相同的参数设置在同一个测试集上多次运行,其结果也会有不同.
  • 统计假设检验(hypothesis test)为我们进行学习器性能比较提供了重要依据.
  • 基于假设检验结果我们可推断出,若在测试集上观察到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大.

偏差和方差

  • Bias–variance tradeoff - Wikipedia

  • 在机器学习中,偏差(bias)和方差(variance)是用来描述模型的两个重要特性。

  • 偏差是指模型的预测值与真实值之间的差异,即模型本身的准确性。如果一个模型的偏差很高,则说明模型对训练数据的拟合程度不够,可能存在欠拟合的问题。

  • 方差是指模型在不同数据集上预测结果的差异,即模型的稳定性。如果一个模型的方差很高,则说明模型对训练数据过度拟合,对新数据的预测能力不足,可能存在过拟合的问题。

偏差-方差分解(TODO)

  • 偏差方差分解(bias-variance decomposition)是解释学习算法泛化性能的重要工具,本文将其简称为BVD
  • BVD尝试对学习算法期望泛化错误率进行拆解.
    • 算法在不同训练集,甚至同分布的不同训练集上学得的结果可能是不同的.
  • 对测试样本 x \boldsymbol{x} x
    • y D y_{D} yD x \boldsymbol{x} x数据集中的标记
    • y为 x \boldsymbol{x} x真实标记
    • f ( x ; D ) f(\boldsymbol{x};D) f(x;D)为训练集D上学得模型 f f f x \boldsymbol{x} x上得预测输出
  • 以回归任务为例.

折衷方案

In statistics and machine learning, the bias–variance tradeoff is the property of a model that the variance of the parameter estimated across samples can be reduced by increasing the bias in the estimated parameters. The bias–variance dilemma or bias–variance problem is the conflict in trying to simultaneously minimize these two sources of error that prevent supervised learning algorithms from generalizing beyond their training set:[1][2]

  • The bias error is an error from erroneous assumptions in the learning algorithm. High bias can cause an algorithm to miss the relevant relations between features and target outputs (underfitting).
  • The variance is an error from sensitivity to small fluctuations in the training set. High variance may result from an algorithm modeling the random noise in the training data (overfitting).

The bias–variance decomposition is a way of analyzing a learning algorithm’s expected generalization error with respect to a particular problem as a sum of three terms, the bias, variance, and a quantity called the irreducible error, resulting from noise in the problem itself.

  • 在统计学和机器学习中,偏差-方差权衡(bias-variance tradeoff)指的是模型的参数在样本之间估计的方差可以通过增加估计参数的偏差来减少。

  • 偏差-方差困境或偏差-方差问题是指在尝试同时最小化这两个误差源的情况下,阻止监督学习算法超越其训练集进行泛化的冲突。

  • 偏差误差是由于学习算法中的错误假设而导致的误差。

    • 高偏差可能导致算法忽略特征和目标输出之间的相关性(欠拟合)。
  • 方差误差是由于对训练集中的微小波动过于敏感而导致的误差。

    • 高方差可能是由于算法对训练数据中的随机噪声进行建模(过拟合)。

偏差-方差分解是一种分析学习算法在特定问题上的预期泛化误差的方法,将其表示为偏差、方差和一个称为不可避免误差的量的总和,该量由问题本身的噪声引起。

在这里插入图片描述低偏差-低方差在这里插入图片描述高偏差-低方差
在这里插入图片描述低偏差-高方差在这里插入图片描述高偏差-高方差

  • The bias–variance tradeoff is a central problem in supervised learning. Ideally, one wants to choose a model that both accurately captures the regularities in its training data, but also generalizes well to unseen data. Unfortunately, it is typically impossible to do both simultaneously. High-variance learning methods may be able to represent their training set well but are at risk of overfitting to noisy or unrepresentative training data. In contrast, algorithms with high bias typically produce simpler models that may fail to capture important regularities (i.e. underfit) in the data.偏差-方差权衡是监督学习中的一个核心问题。理想情况下,我们希望选择一个既能够准确地捕捉训练数据中的规律,又能够很好地泛化到未见过的数据的模型。然而,通常情况下,两者无法同时实现。高方差的学习方法可能能够很好地表示它们的训练集,但存在过度拟合到噪声或不具代表性的训练数据的风险。相比之下,具有高偏差的算法通常会产生简单的模型,可能无法捕捉数据中的重要规律(即欠拟合)。

  • It is an often made fallacy to assume that complex models must have high variance; High variance models are ‘complex’ in some sense, but the reverse needs not be true[clarification needed]. In addition, one has to be careful how to define complexity: In particular, the number of parameters used to describe the model is a poor measure of complexity. This is illustrated by an example adapted from: The model f a , b ( x ) = a sin ⁡ ( b x ) {\displaystyle f_{a,b}(x)=a\sin(bx)} fa,b(x)=asin(bx) has only two parameters ( a , b a,b a,b) but it can interpolate any number of points by oscillating with a high enough frequency, resulting in both a high bias and high variance.有一个常见的谬论是认为复杂的模型必须具有高方差;高方差的模型在某种意义上是“复杂”的,但反过来并不一定成立。此外,我们必须小心如何定义复杂性:特别是,用于描述模型的参数数量是一个不好的复杂度度量。这可以通过一个例子来说明:模型 f a , b ( x ) = a sin ⁡ ( b x ) {\displaystyle f_{a,b}(x)=a\sin(bx)} fa,b(x)=asin(bx)只有两个参数( a , b a,b a,b),但是它可以通过高频振荡来插值任意数量的点,导致既有高偏差又有高方差。

  • An analogy can be made to the relationship between accuracy and precision.

  • Accuracy is a description of bias and can intuitively be improved by selecting from only local information. Consequently, a sample will appear accurate (i.e. have low bias) under the aforementioned selection conditions, but may result in underfitting. In other words, test data may not agree as closely with training data, which would indicate imprecision and therefore inflated variance.

  • A graphical example would be a straight line fit to data exhibiting quadratic behavior overall.

  • 可以将偏差-方差权衡和准确度精度之间的关系进行类比。

  • 准确度是偏差的描述,可以通过只选择局部信息来直观地提高。因此,在上述选择条件下,样本将看起来准确(即偏差小),但可能导致欠拟合。换句话说,测试数据可能与训练数据不太吻合,这将表明精度不高,因此方差膨胀
    一个图形化的例子是将一条直线拟合到总体呈二次函数行为的数据上。

  • Precision is a description of variance and generally can only be improved by selecting information from a comparatively larger space. The option to select many data points over a broad sample space is the ideal condition for any analysis. However, intrinsic constraints (whether physical, theoretical, computational, etc.) will always play a limiting role. The limiting case where only a finite number of data points are selected over a broad sample space may result in improved precision and lower variance overall, but may also result in an overreliance on the training data (overfitting). This means that test data would also not agree as closely with the training data, but in this case the reason is due to inaccuracy or high bias. To borrow from the previous example, the graphical representation would appear as a high-order polynomial fit to the same data exhibiting quadratic behavior. Note that error in each case is measured the same way, but the reason ascribed to the error is different depending on the balance between bias and variance. To mitigate how much information is used from neighboring observations, a model can be smoothed via explicit regularization, such as shrinkage.

  • 为了取得好的预测结果,需要在偏差和方差之间进行折衷。

  • 如果模型的偏差和方差都很高,则需要增加模型的复杂度,增加模型的参数或使用更复杂的算法;

    • 如果模型的偏差和方差都很高,说明模型很可能存在过拟合(overfitting)的问题。过拟合是指模型在训练数据上过度拟合,导致对新的数据的预测效果较差。
    • 模型的偏差很高意味着模型无法很好地拟合训练数据,而模型的方差很高则表明模型过度关注训练数据的噪声或随机性,从而对训练数据过度拟合。

小结

  • 如果模型的偏差很高而方差很低,则需要减少模型的复杂度,减少模型的参数或使用更简单的算法;
    • 如果模型的偏差很高而方差很低,说明模型对训练数据的拟合程度不够,但是对新的数据具有较好的泛化能力。这种情况通常称为欠拟合(underfitting)。模型的偏差很高意味着模型的表现能力不足,无法很好地捕捉数据的特征,或者模型的参数设置不合理,模型本身的复杂度不够。而模型的方差很低则表明模型对数据的随机性不敏感,即不会因为数据的微小变化而导致预测结果产生较大的波动。
    • 解决欠拟合问题的方法包括增加模型的复杂度,如增加模型的参数或使用更复杂的算法,或者增加训练数据的数量。但是需要注意,过度增加模型的复杂度也可能导致过拟合问题,因此需要在模型的偏差和方差之间进行平衡,找到最优的模型复杂度。
  • 如果模型的偏差很低而方差很高,则需要增加训练数据的数量或使用正则化等方法来减少过拟合的问题。

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

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

相关文章

【fly-iot飞凡物联】(5):开源项目Apache IoTDB,开源项目学习,原来还有这样的项目,关于IOT的几个开源项目汇总下

目录 前言1&#xff0c;关于&#xff1a;开源项目Apache IoTDB2&#xff0c;还有个admin后台3&#xff0c;thinglinks项目4&#xff0c;thingsboard-ui-vue项目5&#xff0c;apache pulsar项目6&#xff0c;ActorCloud项目 前言 本文的原文连接是: https://blog.csdn.net/freew…

MySQL多表查询操作

文章目录 前言内连接表别名 外连接左外连接右外连接全外连接 总结 前言 JOIN 表示连接&#xff0c;inner表示内连接&#xff0c;outer表示外连接&#xff0c;缺省情况是内连接。 ON后面接<连接条件> 内连接 默认的表数据连接是内连接&#xff0c;只会查询出满足连接条…

【C++进阶】继承详解

文章目录 前言一、继承的概念及定义1.概念2.继承定义定义格式继承关系和访问限定继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承1.单继承与多继承2.菱…

【Lychee图床】本地电脑搭建私人图床,公网远程访问

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转发自CSDN风浪越大%鱼越贵的文章&#xff1a;Lychee图床 - 本地配置属于自己的相册管理系统并远…

快速入手光学字符识别控件Aspose.OCR!如何从PDF中提取文本

Aspose.OCR是一款字符识别组件&#xff0c;它使得开发人员可以添加OCR功能到他们的ASP.NET Web应用程序、web服务和windows应用程序中。它提供了一个简单的类集用于控制字符识别。Aspose.OCR目的是为那些需要在他们自己的应用程序中使用图像&#xff08;BMP和TIFF&#xff09;的…

软件设计师计算机系统知识点笔记大总结

数据寄存器是一个中转站 指令寄存器 ir 保存暂存指令&#xff08;操作码加地址吗等于指令&#xff09; 地址寄存器 保存当前cpu所访问的内存单元地址 程序计数器 保存的是下一条指令的地址 状态寄存器 标志运算的结果 类似 0&#xff08;&#xff09;状态寄存器是运算器中的部件…

Ansible Automation Platform - 用 API 访问 Ansible Automation Platform

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在支持 Ansible Automation Platform 2.3 的环境中验证 文章目录 AAP 的 API 索引Host 主机列表 API通过 API 操作 Ansible Automation Platform 说明&#xff1a;以下命令中 mycontroller-aap.apps-crc.t…

论文阅读-17-Deep Long-Tailed Learning: A Survey---3.3 Module Improvement

文章目录 1. Representation Learning1.1 Metric learning(1) large margin local embedding LMLE①##### ②##### ③ (2) Range loss(3) CRL(4) KCL(5) Hybrid(6) PaCo(7) DRO-LT 1.2 Sequential training(1) HFL(2) Unequal-training 1.3 Prototype learning(1) OLTR(2) IEM …

PPT背景图片怎么设置?4个详细教程在这!

案例&#xff1a;PPT背景图片怎么设置&#xff1f; 【因为论文答辩&#xff0c;最近需要制作PPT&#xff0c;昨晚之后感觉有点单调&#xff0c;我想设置一个背景图片&#xff0c;让我的PPT看起来更有风格&#xff0c;请问大家是怎么设置PPT背景图片的呢&#xff1f;】 PPT背景…

容器中的operator[]注意事项

首先看一张表格&#xff0c;支持operator[]的容器包括string、array、vector、deque、map、unordered_map&#xff0c;顺序容器和关联容器的operator[]不太一致。 string中的operator[] 在pos < size()时返回到位于指定位置pos的字符的引用&#xff0c;或在pos size()时…

信息安全数学基础笔记

三个数学难题: 群的定义: 满足乘法结合律&#xff0c;有单位元&#xff0c;逆元即为群&#xff0c;如果同时满足交换律则为交换群 满足乘法结合律&#xff0c;有单位元即为半群&#xff0c;如果同时满足交换律则为交换半群 希尔密码: 其中加密矩阵为n阶一般线性群&#xff0c;…

视频与音频一键同步嘴型数字人ai工具分享

在ai发展的今天,各种虚拟主播工具层出不穷,我们在选择ai工具的适合往往陷入一个使用陷阱。 比如, 看演示视频效果非常不错,自己去用却跟智障一样的。出现这种情况,我们首先不去评价这个工具的好用,我们得分析别人使用的前置条件。 大部分前置条件都是大量的训练数据, …

进程通信和信号量

1.进程通信 管道&#xff1a;包括无名管道(pipe)和命名管道(named pipe),无名管道可用于具有父进程和子进程之间的通信。命名管道除具有管道所具有的所有功能外&#xff0c;它还允许无亲缘关系进程间的通信。消息队列&#xff1a;进程可以向队列中添加消息&#xff0c;其他进程…

代码量原地缩减50%,这个Java工具类库太香了

Guava是google公司开发的一款Java类库扩展工具包&#xff0c;内含了丰富的API&#xff0c;涵盖了集合、缓存、并发、I/O等多个方面。使用这些API一方面可以简化我们代码&#xff0c;使代码更为优雅&#xff0c;另一方面它补充了很多jdk中没有的功能&#xff0c;能让我们开发中更…

长沙银行财报启示录:“生态引擎”如何突破“低维竞争”?

众多行业当中&#xff0c;银行业一直被当做“经济晴雨表”。 今年以来&#xff0c;中国经济开启回暖模式。尤其是在前不久的五一假期&#xff0c;各地消费回暖&#xff0c;释放出经济持续向好的积极信号。此时&#xff0c;也正是各家银行发布成绩单的财报季&#xff0c;能发现…

OPC UA Client接口库

OPC UA库秉承简单、易用、可靠的设计理念&#xff0c;只需少量接口即可实现所需功能&#xff0c;同时使用者无需考虑多线程&#xff0c;时序等问题 1. 拷贝代码文件 将 \JngOpcUaClient\JngOpcUaClient\Input\ 文件夹拷贝到项目中&#xff0c;添加到项目。 2. 拷贝dll库及Secu…

ES+Redis+MySQL,高可用架构设计方案

ES高可用方案 1. ES双中心主备集群架构 全平台所有体系的会员总量是十多亿。在这么大的数据体量下&#xff0c;业务线的查询维度也比较复杂。有的业务线基于手机号&#xff0c;有的基于微信unionid&#xff0c;也有的基于卡号等查询会员信息。这么大的数据量&#xff0c;又有…

Java基础(40)反射机制

Java反射机制是 Java 语言的一个重要特性。先了解两个概念&#xff0c;编译期和运行期。编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在 Java 中也就是把 Java 代码编成 class 文件的过程。编译期只是做了一些翻译功能&#xff0c;并没有把代码放在内存中运行…

平平无奇的Python为什么能一跃成为世界排名第一的语言

一、前言 本文将结合个人经历为各位同学客观的分析是否有学习Python的必要、Python适合谁学、为什么要学&#xff0c;希望能够给看到此文章的同学一点建议&#xff0c;树立学习目标&#xff0c;让学习有结果。 读完后&#xff0c;相信你一定能够有所收获。 二、简述个人经历…

Word控件Spire.Doc 【文本框】教程(4):如何将图像插入文本框

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…