机器学习基础笔记

周志华老师的机器学习初步的笔记

绪论

知识分类

科学 是什么,为什么

技术 怎么做

工程 多快好省

应用 口诀,技巧,实际复杂环境,行行出状元

定义

经典定义 利用经验改善系统自身的性能

训练数据

模型 学习算法 分类

决策树,神经网络,支持向量机,boosting,贝叶斯网

测试数据

输出

重要理论

  • PAC (Probably Approximately Correct,概率近似正确),如公式所示

    P ( ∣ f ( x ) − y ∣ ≤ ϵ ) ≥ 1 − δ P(|f(x)-y| \leq \epsilon) \geq 1 - \delta P(f(x)yϵ)1δ 即预测结果 f ( x ) f(x) f(x)落在允许误差 ϵ \epsilon ϵ内的概率在置信区间$ \delta$内

P问题,在多项式时间内能找到解,NP问题,在多项式时间内验证是不是解

基础

基本术语

数据集:训练,测试,测试集与训练集要不一样

示例:即西瓜的特征,样例:示例加上西瓜的好坏

样本:一个数据集或一个样例

属性、特征:即色泽,根蒂

分为离散和连续,离散又分为有序和无序

像颜色,可以直观上说无序,也可以根据光谱波长来说有序

属性空间,样本空间,输入空间:即样本点放在坐标系里面,以便于回归分析

特征向量:即一个示放在空间之中的结果


假设: f ( x ) f(x) f(x)我们的模型得到的结果本质是一个假设

真相: y y y真实结果

学习器:得到的学习结果,参数那种


分类,回归

二分类,多分类

正类,反类


无监督学习和监督学习的区别就是前者的数据集都没有标签,需要根据特征进行自行分类

监督学习里面有分类(class,类)和回归,分别对应无监督学习里面的聚类(cluster,簇)和密度估计


学习本质

我们假定所拿到的数据是满足某个未知分布的,所有数据都是独立同分布取出来的数据

而学习的数据只是这个分布里面的一部分,而我们训练的模型是否能够处理分布以外的数据

泛化,即 ϵ \epsilon ϵ能达到多小,只有降其降到足够小,我们才能够去设计算法

归纳偏好

使用奥卡姆剃刀原理,在多种合理理论的时候选择最简单的理论

所以机器学习在处理不同类型的问题有不同的模型

NFL定理:no free lunch,一个模型在满足了部分数据集就必然不能满足另外一部分,不同模型各有优劣,一个问题的不同部分可能使用多个模型

具体问题具体分析,要明确输入输出才是问题,即x,y。分类不算一个问题

误差

经验误差,在训练集上的误差,采用参数优化,一般为梯度下降

泛化误差,在未来样本的误差,采用正则化,防止过拟合

正则化和正则表达式没有任何关系,可能会因为我们学习的过拟合认为二者有联系

而我们机器学习的过程就是不断降低经验误差的过程

但是泛化误差却是一个u型曲线,先逐渐下降,再逐渐上升,即欠拟合和过拟合

所以在一直下降的经验误差中,找到最小的泛化误差是一个难点

但这个问题也没有确切的解决方案,所以不同的模型其实是在使用不同的方案缓解过拟合

了解缓解过拟合的方法是学习新模型的首要目的

正则化

如在多项式拟合中针对参数正则化,因为越高阶的参数在过拟合时,数值上会更大

为了防止高阶参数的影响过大,而自己也不需要去指定多少阶,所以我们的原始损失函数后面加上正则化项来表示总损失函数

而正则化我们一般使用L1和L2正则化,即一阶和二阶正则化

使用L1正则化 L t o t a l = L + λ ∑ i ∣ w i ∣ L_{\mathrm{total}}=L+\lambda\sum_i|w_i| Ltotal=L+λiwi

使用L2正则化 L t o t a l = L + λ 2 ∑ i w i 2 L_{\mathrm{total}}=L+\frac\lambda2\sum_iw_i^2 Ltotal=L+2λiwi2 这里的1/2是为了求导方便

L为原始损失函数,一般为均方误差 M S E = 1 m ∑ i = 1 m ∑ j = 1 n ( y ^ i j − y i j ) 2 \mathrm{MSE}=\frac1m\sum_{i=1}^m\sum_{j=1}^n\left(\hat{y}_{ij}-y_{ij}\right)^2 MSE=m1i=1mj=1n(y^ijyij)2

范数

这里的L1和L2在数学里叫做范数,用来表示向量的大小,下面是 L p L_p Lp范数的基本形式
∥ v ∥ p = ( ∑ i = 1 n ∣ v i ∣ p ) 1 / p \|\mathbf{v} \|_p = \left( \sum_{i=1}^{n} |v_i|^p \right)^{1/p} vp=(i=1nvip)1/p

范数.png

评估模型

评估方法

关键在于如何得到测试集?

留出法:将数据集分割为训练集和测试集

要分层采样,多次训练切分进行平均,一般进行4:1分。最后将所有数据集进行训练得到模型

极端的情况,留一法:每次留一个来进行测试,虽然得到的结果与全部数据用来训练相近,但这样会导致未来误差不准确

k-折交叉验证法:解决留出法中未能将全部数据集用于训练和验证,而数据集所有都很重要的时候

将数据集划分为k份,依次取一份来当测试集。而这个划分也可能对结果产生影响,所以也进行k次划分,即为10*10的验证

自助法:(bootstrap sampling)将样本分为n包,每次有放回的取n包出来,将没有取出过的作为测试集,也叫包外估计

m个样本取m次,没有取到的概率为

lim ⁡ m → ∞ ( 1 − 1 m ) m = 1 e ≈ 0.368 \lim_{m\to\infty}\left(1-\frac1m\right)^m=\frac1e\approx0.368 limm(1m1)m=e10.368

因为这样改变了训练数据的分布,所以在数据不那么重要的时候使用

调参数

算法参数,如用n次曲线去回归的这个n,一般由人工设定,称为超参数

模型参数,由训练数据集训练的得到的参数,即权重(weight)和偏置(bias)

验证集,将训练集分割一部分出来,用于评估选择的模型是否合适,如验证超参数,如果合适再合并一起训练

性能度量

即损失函数最小

如回归任务常用的均方误差, E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D)=\frac1m\sum_{i=1}^m\left(f\left(\boldsymbol{x}_i\right)-y_i\right)^2 E(f;D)=m1i=1m(f(xi)yi)2

而像logistic回归,使用交叉熵损失函数

像分类问题,分类结果混淆矩阵 p为positive,n为negative

预测结果 真实情况 正例 反例 正例 T P (真正例) F N (假反例) 反例 F P (假正例) T N (真反例) \begin{array}{c|c|c}\hline&\text{预测结果}\\\hline\text{真实情况}&\text{正例}&\text{反例}\\\hline\text{正例}&TP\text{ (真正例)}&FN\text{ (假反例)}\\\hline\text{反例}&FP\text{ (假正例)}&TN\text{ (真反例)}\\\hline\end{array} 真实情况正例反例预测结果正例TP (真正例)FP (假正例)反例FN (假反例)TN (真反例)

查准率 P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP 查全率 R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP

可以用这两种来进行评估不同模型的好坏

我们综合二者得到 1 F 1 = 1 2 ⋅ ( 1 P + 1 R ) \frac{1}{F1}=\frac{1}{2}\cdot\left(\frac{1}{P}+\frac{1}{R}\right) F11=21(P1+R1) 使用调和平均,让二者都能保持较高的值,也可以对偏好的加上权重,如 1 F β = 1 1 + β 2 ⋅ ( 1 P + β 2 R ) \frac{1}{F_\beta}=\frac{1}{1+\beta^2}\cdot\left(\frac{1}{P}+\frac{\beta^2}{R}\right) Fβ1=1+β21(P1+Rβ2) 通过设置 β \beta β的值来设定谁更重要

比较检验

使用概率论的假设检验

对于两个不同的算法得到错误率,然后相减得到x,我们多次训练,得到X矩阵

经典模型

线性模型

基础

分类,一条线划分两边

回归,一条线穿所有点

函数如下 f ( x ) = w 1 x 1 + w 2 x 2 + … + w d x d + b f(x)=w_1x_1+w_2x_2+\ldots+w_dx_d+b f(x)=w1x1+w2x2++wdxd+b 向量形式 f ( x ) = w T x + b f(x)=w^\mathrm{T}x+b f(x)=wTx+b

因为线性模型是对数值进行处理,所以我们需要将属性转换为样本

对无序的属性,如颜色,使用二进制编码转换,每一位表示一种颜色,编码为0001,0010,0100,1000这种

而对于多元求解,而矩阵未满秩,会求出多个解,我们采用归纳偏好,取某个w为最小或最大,这个过程也称为正则化,来防止我们模型过拟合

对数线性回归

l n f ( x ) = w T x + b lnf(x)=w^\mathrm{T}x+b lnf(x)=wTx+b,这里的ln称为联系函数g,必须单调可微

这里,我们需要将结果转化为[0,1]的结果,来进行分类

我们这里找到对数几率函数 y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y=1+ez1 z为f(x)

将其代入后得到 ln ⁡ y 1 − y = w T x + b \ln\frac y{1-y}=w^\mathrm{T}x+b ln1yy=wTx+b y 1 − y \frac y{1-y} 1yy 就是odds,几率,正反概率之比,也就是对数几率函数的名称来源

使用残差和得到的函数无法求解最小值,所以我们使用极大似然估计得到损失函数
ℓ ( β ) = ∑ i = 1 m ( − y i β T x ^ i + ln ⁡ ( 1 + e β T x ^ i ) ) \ell\left(\boldsymbol{\beta}\right)=\sum_{i=1}^m\left(-y_i\boldsymbol{\beta}^\mathrm{T}\hat{\boldsymbol{x}}_i+\ln\left(1+e^{\beta^\mathrm{T}\hat{\boldsymbol{x}}_i}\right)\right) (β)=i=1m(yiβTx^i+ln(1+eβTx^i))
该函数也称为交叉熵损失函数,使用梯度下降来求解极值,与求导相比,计算机更擅长,也更加通用

线性判别分析

Linear Discriminant Analysis 简称LDA

如图,降维到一条直线上,使得不同类别分开,同一样本紧凑

project.png

定量计算就是最大化广义瑞利商, S b S_b Sb 为组间散度矩阵 $S_w $ 为组内散度矩阵 ,用这两个投影来表示距离,J越大越好
J = w T S b w w T S w w J=\frac{w^\mathrm{T}\mathrm{S}_bw}{w^\mathrm{T}\mathrm{S}_ww} J=wTSwwwTSbw
最后得到 $
\boldsymbol{w}=\mathbf{S}_w^{-1}\left(\boldsymbol{\mu}_0-\boldsymbol{\mu}_1\right)
$
其中由奇异值分解得到 S w − 1 = V Σ − 1 U T \mathbf{S}_{w}^{-1}=\mathbf{V}\Sigma^{-1}\mathbf{U}^{\mathrm{T}} Sw1=VΣ1UT

多分类

采用投票机制,怎么比较又分为OvO和OvR

multi-category.png

OvO,One-vs-One

讲一个任务拆解成若干个二分类任务,如四分类,就分为 C 4 2 = 6 C_4^2=6 C42=6 组,将被测对象输入着六个二分类模型,输出结果最多的就是我们的最终结果

如果打平,可以加入置信度的选择,如对数几率,直接比较输出的值的和,而不是用0,1比较

OvR,One-vs-Rest

将自己和其余的进行训练,分为正负类,哪个模型输出为正类就选哪个

比较

前者训练时间短,容易做并行化;后者训练模型更少,存储开销和测试时间更大。

二者预测性能差不多,选择在时间还是空间上进行取舍

类别不平衡

当小类占比很小,但又很重要的时候,我们一般采取下面的方法。

平衡采样,过采样小类或者欠采样大类。

  • 过采样采用在小类样本之间插值的方法,而不是直接复制
  • 欠采样则在大类中每次采取与小类数量相同的样本,多彩采样训练后投票

阈值移动,如在对数几率回归中,我们原本取0.5作为分界,即1/1,而我们可以根据二者的比例调整为m/n。支持向量机

决策树

递归停止条件

如图所示,我们通过递归调用,直到走到叶节点的时候,判断是否为好瓜

decision-tree-example.png

因为树是递归调用,所以我们需要设置停止条件

  1. 如果一条线已经用完所有属性了,还是没有分离开。如分类数大于属性数的时候
  2. 如果训练数据集中不包含某一组合数据,如根蒂稍蜷中没有色泽浅白的,那么这个叶节点就由色泽节点中数量多的一类决定
  3. 如果已经完全分类了,多的属性也不需要继续看了,停止,如纹理模糊的一类

信息增益

由此可见,如何确定节点的顺序对分类很重要,越容易区分类型的节点越靠前

我们引入信息熵的概念来表示第k类样本的纯度,便于计算

其中p表示第k类的占比(概率),计算p=0或1时,Ent为0,即当分类完成时,信息熵为0
Ent ⁡ ( D ) = − ∑ k = 1 ∣ Y ∣ p k log ⁡ 2 p k \operatorname{Ent}(D)=-\sum_{k=1}^{|\mathcal{Y}|}p_k\log_2p_k Ent(D)=k=1Ypklog2pk
所以就是一直降第每个节点的信息熵,所以选择信息熵最小的作为第一个节点,依次类推

information entropy.png

如图,计算了色泽的信息增益,将其他属性一起计算,选出第一层为纹理

然后再这样一直操作,得到决策树如一开始所示

增益率

考虑到极端情况,如果按身份证号将人分类,那么依次就能将所有人区分,信息增益最大。

但这样显然没有意义,所以我们改进,将信息增益除以a的可能性的信息熵,即a可能的数目应该越小越好。但分子分母的取向是鱼和熊掌不可兼得的,所以需要自己取舍

使用启发式来取舍,将信息增益高于平均的找出来再取增益率最高的
G a i n r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) 其中 I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ \mathrm{Gain_ratio}(D,a)=\frac{\mathrm{Gain}(D,a)}{\mathrm{IV}(a)}\\\text{其中}\mathrm{IV}(a)=-\sum_{v=1}^{V}\frac{|D^{v}|}{|D|}\log_{2}\frac{|D^{v}|}{|D|} Gainratio(D,a)=IV(a)Gain(D,a)其中IV(a)=v=1VDDvlog2DDv

CART决策树

前面是使用信息熵来表示纯净度,这里使用基尼指数来表示纯度

基尼指数用于表示国家或地区收入不平等程度的统计指标,取值为[0,1]。

如果基尼指数为0,则代表收入完全平等,同理,也表示分类越纯净。
Gini ⁡ ( D ) = ∑ k = 1 ∣ Y ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ Y ∣ p k 2 . \begin{aligned}\operatorname{Gini}(D)&=\sum_{k=1}^{|\mathcal{Y}|}\sum_{k^{\prime}\neq k}p_{k}p_{k^{\prime}}\\&=1-\sum_{k=1}^{|\mathcal{Y}|}p_{k}^{2}.\end{aligned} Gini(D)=k=1Yk=kpkpk=1k=1Ypk2.
这里的意思是取到两次不同的概率。如果纯净,那么结果应该为0

性能优化

使用不同来描述纯净度,如信息熵和基尼指数影响只有2%,而减枝可以缓解过拟合,将泛化性能提升约25%

防止决策树上学到的不是一般规律,而是少数几个个体的特征

预剪枝:提前终止某些分支生长,如设置纯净度略大于0,而不是绝对为0,增加泛化能力

后剪枝:生成完全树后再取删除

缺失值

如果一个样本缺失了某一属性,如果直接弃用,可能会破坏原有分布。当属性过多时,很难避免缺失,可能会对数据造成极大的浪费

我们采用样本赋权,权重划分的方式。

样本赋权:即利用未缺失样本来算纯净度,然后将纯净度乘以未缺失的占比,来得到节点顺序

权重划分:将缺失的项目按照已知样本各类的权重来分配到几个类别中,从而利用缺失值样本

神经网络

概念

定义:神经网络是由具有适应性的简单单元组成的广泛并行互联的网络

一个神经元包含一个带权公式,连接多个输入,当计算达到阈值时输出结果

如图所示神经元模型,每个神经元相当于线性模型加上激活函数,使用sigmoid函数(S形,一般用logistic函数)来表示激活

M_P.png

神经网络由多个神经元联系而成,如下,除去输入和输出层,其他的层叫做隐层。

输出层和隐层神经元称为功能单元

Neural networks.png

只要有一个包含足够多神经元的隐层,就可以以任意精度逼近任意复杂的连续函数,具有万有逼近性

傅里叶变换,泰勒展开同样可以,因为神经网络数学基础薄弱,训练过程盲盒,所以需要理论支撑。并不是因为这个而比其他模型强多少

所以问题就在于如何设置神经元数,采用试错法,根据问题复杂性,自己调节

BP算法

同样使用梯度下降,对于调整学习率 η \eta η 可以先快,后慢。如一直减半

支持向量机

基础

主要思想: 找到一个能够将不同类别的样本分隔开的超平面,并且使得该超平面与最近的样本点(也称支持向量)之间的间隔最大化。

直接调包解

高维空间映射

如果不能用平面分开,则将样本映射到更高维特征空间,然后就有一个高维超平面可以实现我们的效果,如下图所示

高维特征空间映射.png

而映射后的高维向量在最终结果中只以内积形式出现,所以我们可以避免求解高维向量,使用核函数来代替求高维向量的内积。

一个对称函数对应的核矩阵半正定,就可以作为核函数。说人话就是这个函数可以作为高维空间的距离函数来使用。

任何一个核函数,都定义了一个RKHS(再生核希尔伯特空间,有点中二的感觉),说人话就是那个高维空间

因为核函数的选择上,存在不确定性,无法找到最优

应用回归

思路,落在$2\epsilon $范围内的不计算损失,其他的就按照距离之类的计算损失

主要是根据问题可以自己设计损失函数

贝叶斯决策论

通过计算把一个样本分到某类的错误概率,错误概率最小的那个类就是我们所选的分类

贝叶斯公式

分到某一类的条件风险 R ( c i ∣ x ) = ∑ j = 1 N λ i j P ( c j ∣ x ) R(c_i\mid\boldsymbol x)=\sum_{j=1}^N\lambda_{ij}P(c_j\mid\boldsymbol x) R(cix)=j=1NλijP(cjx)

贝叶斯判定准则,即选择风险最小的一个 h ∗ ( x ) = arg ⁡ min ⁡ ⁡ c ∈ Y R ( c ∣ x ) h^*(\boldsymbol{x})=\underset{c\in\mathcal{Y}}{\operatorname*{\arg\min}}R(c\mid\boldsymbol{x}) h(x)=cYargminR(cx)

其中

  • c表示class,类别
  • h ∗ h^* h 称为贝叶斯最优分类器
  • λ i j \lambda_{ij} λij 表示将j类分到i类产生的损失,由我们权衡利弊得到
  • P ( c j ∣ x ) P(c_j\mid\boldsymbol x) P(cjx) 表示x属于第j类的概率,通常难以获得,贝叶斯的角度下,机器学习就是算这个

根据获得这个后验概率的不同方式,可以分为两类

  • 判别式模型:决策树,BP神经网络,SVM

    直接对 P ( c ∣ x ) P(c\mid\boldsymbol x) P(cx)建模

  • 生成式模型:贝叶斯分类器

    先对联合概率分布 P ( x , c ) P(x,c) P(x,c)建模,再由此获得 P ( c ∣ x ) P(c|x) P(cx) ,即还原x的分布
    P ( c ∣ x ) = P ( x , c ) P ( x ) P(c\mid x)=\frac{P(x,c)}{P(x)} P(cx)=P(x)P(x,c)

哲学

贝叶斯学习一定使用的分布估计,与贝叶斯分类器不一样,与先前求出最好的参数不同,贝叶斯学习认为参数也是满足一个分布,基于此分布观察到参数,即找到决定参数的分布

根据支持向量机的发明人的看法,我们解决的只是一个简单的问题,但使用贝叶斯就会把这个问题更复杂,虽然更加的全面,但也更加的低效,事物的两面,只需要找参数的点估计

贝叶斯学习认为,不搞清楚本质分布,就无法准确描述所需解决的问题

频率主义和贝叶斯主义都会用到贝叶斯公式,角度不一样,不能以此来区分

朴素贝叶斯分类

对每个属性求其在每个类别的概率,如颜色青绿为好瓜的概率为0.6,其他属性类似

拿到一个测试样本,如下求出两类的概率,再比较大小进行分类。
P ( 青绿 ∣ 好瓜 ) P ( 稍蜷 ∣ 好瓜 ) P ( 浊响 ∣ 好瓜 ) P ( 清晰 1 好瓜 ) P ( 好瓜=yes ) = 3 / 8 × 3 / 8 × 6 / 8 × 7 / 8 × 8 / 17 P ( 青绿 ∣ 坏瓜 ) P ( 稍蜷 ∣ 坏瓜 ) P ( 浊响 ∣ 坏瓜 ) P ( 清晰 ∣ 坏瓜 ) P ( 好瓜=no ) = 3 / 9 × 4 / 9 × 4 / 9 × 2 / 9 × 9 / 17 \begin{aligned} &\mathsf{P}(\text{青绿}|\text{好瓜})\mathsf{P}(\text{稍蜷}|\text{好瓜})\mathsf{P}(\text{浊响}|\text{好瓜}) \\ &\mathsf{P}(\text{清晰}1\text{好瓜})\mathsf{P}(\text{好瓜=yes})=3/8\times3/8 \\ &\times6/8\times7/8\times8/17 \\ &\mathsf{P}(\text{青绿}|\text{坏瓜})\mathsf{P}(\text{稍蜷}|\text{坏瓜})\mathsf{P}(\text{浊响}|\text{坏瓜}) \\ &\mathsf{P}(\text{清晰}|\text{坏瓜})\mathsf{P}(\text{好瓜=no})=3/9\times4/9\times \\ &4/9\times2/9\times9/17 \end{aligned} P(青绿好瓜)P(稍蜷好瓜)P(浊响好瓜)P(清晰1好瓜)P(好瓜=yes)=3/8×3/8×6/8×7/8×8/17P(青绿坏瓜)P(稍蜷坏瓜)P(浊响坏瓜)P(清晰坏瓜)P(好瓜=no)=3/9×4/9×4/9×2/9×9/17

集成学习

简介

即集成使用多个模型来解决问题

如果多个模型都是相同的,就成为同质集成,如神经网络集成,因为只需要一个模型,会比较简单

如果多个模型不同,就成为异质集成,由于不同模型产生的结果不能直接比较,就像同一门课,对同一个人的问卷,不同老师可能打的分差别很大一样,在处理结果时,要进行配准,这一步很困难

集成学习有可能出现下面三种情况

集成学习1.png
集成学习2.png

由此可见,集成不能乱集成,我们可以使用误差-分歧分解来衡量

即总误差 = 个体平均误差 - 个体平均差异

即我们要求平均误差小,个体差异大,但个体差异无法进行准确的衡量

分类

序列化方法

AdaBoost 起点

GradientBoost,XGBoost是其一种高效率的实现

LPBoost

Boosting简介

基础概念:基学习算法,接收数据,生成多个同质模型的算法,其中的学习器就叫基学习器

模型过程

先使用基学习算法对原始数据进行学习,看哪些做对了哪些做错了,然后降低正确的权重,上升错误的权重,生成新的数据集,再使用基学习算法进行学习

如此循环往复,本质就是让后面的模型把前面做错的题做对

因为后面的学习器处理的问题是前面做错的,所以会更复杂,性能也会更低,将每个学习器的结果进行加权求和

并行化方法

Bagging 起点

Random forest 随机森林,前者的改进

RandomSubspace 随机子空间

bagging简介

将原始数据集进行可重复采样训练成不同的学习器

然后对不同学习器的结果进行投票就可以实现分类,进行平均就可以回归

改进后的随机森林在如今仍然被广泛使用

多样性

使用不同的统计量,如相关系数,不合度量,q统计量,kapa统计量

目前有很多的度量方式,仍然是个难以解决的问题

聚类

无监督学习中应用最广的,其目的是将没有标签的数据分类成不同的簇,使簇内相似度高,簇间相似度低

这里面的差异用距离来衡量

距离

因为我们拿到的属性可能是离散值,所以我们需要将其转换为有序,无序或者混合属性

对有序属性使用Minkowski距离如下,用来表示距离的通式
dist ⁡ mk ⁡ ( x i , x j ) = ( ∑ u = 1 n ∣ x i u − x j u ∣ p ) 1 p \operatorname{dist}_{\operatorname{mk}}(\boldsymbol{x}_i,\boldsymbol{x}_j)=\left(\sum_{u=1}^n|x_{iu}-x_{ju}|^p\right)^{\frac{1}{p}} distmk(xi,xj)=(u=1nxiuxjup)p1

  • p=2:欧式距离,即我们几何上的距离
  • p=1:曼哈顿距离,只考虑水平和垂直方向的距离,在解决网格结构时很好用

对无序属性可使用VDM(value difference metric) ,用不同属性出现的机会来评估他们是否相似
V D M p ( a , b ) = ∑ i = 1 k ∣ m u , a , i m u , a − m u , b , i m u , b ∣ p VDM_p(a,b)=\sum_{i=1}^k\left|\frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}\right|^p VDMp(a,b)=i=1k mu,amu,a,imu,bmu,b,i p

对混合属性,将二者组合
M i n k o v D M p ( x i , x j ) = ( ∑ u = 1 n c ∣ x i u − x j u ∣ p + ∑ u = n c + 1 n V D M p ( x i u , x j u ) ) 1 p \mathrm{MinkovDM}_p(\boldsymbol{x}_i,\boldsymbol{x}_j)=\left(\sum_{u=1}^{n_c}|x_{iu}-x_{ju}|^p+\sum_{u=n_c+1}^n\mathrm{VDM}_p(x_{iu},x_{ju})\right)^{\frac{1}{p}} MinkovDMp(xi,xj)=(u=1ncxiuxjup+u=nc+1nVDMp(xiu,xju))p1
后面两个都看不懂了,先记着

方法

聚类没有好坏的评判,取决于用户的需求

聚类因为没有标签,总可以设置不同的标准,聚成不同的类

聚类的算法很多,必须要先明确标准,很可能找不到同标准的可用代码,只有自己改进

聚类思路

原型聚类,找几个原型,然后将其他的往不同原型上聚,如k均值聚类

密度聚类,根据样本的紧密程度进行聚类,如DBSCAN

层次聚类,从不同层次对数据集进行划分,如底层每个人为不同类,顶层所有人都为同一类,中间就是不同粒度的聚类,形成树形聚类结构,如AGNES自下而上,DIANA自上而下

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

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

相关文章

springboot整合kkFileView部署,前端使用

前言: 官方文档:https://kkfileview.keking.cn/zh-cn/docs/production.html docker方式或加入星球获取发行包直接获取启动,无需以下步骤: 拉取镜像# 网络环境方便访问docker中央仓库 docker pull keking/kkfileview:4.1.0# 网…

监控云安全的9个方法和措施

如今,很多企业致力于提高云计算安全指标的可见性,这是由于云计算的安全性与本地部署的安全性根本不同,并且随着企业将应用程序、服务和数据移动到新环境,需要不同的实践。检测云的云检测就显得极其重要。 如今,很多企业…

SSL协议:网络安全通信的守护者

在网络通信迅猛发展的今天,数据安全和隐私保护变得尤为重要。安全套接层协议(Secure Sockets Layer, SSL)作为早期网络加密及身份验证的基石,为在线数据传输提供了安全保障。下面我们就来了解一下SSL协议。 SSL协议概述 SSL协议最…

关于Moon Player在Apple Vision Pro上无法隐藏/唤醒面板的问题

如果你无法通过手势隐藏/唤醒面板,请确认您是否打开了手势追踪相关权限。 检查方法: 前往系统设置 - Apps找到Moon Player检查权限是否开启 后续步骤: 设置完权限后,你可能需要强制重启Moon Player,请按照以下操作…

NSSCTF-Web题目3

目录 [BJDCTF 2020]easy_md5 1、知识点 2、题目 3、思路 [ZJCTF 2019]NiZhuanSiWei 1、知识点 2、题目 3、思路 第一层 第二层 第三层 [BJDCTF 2020]easy_md5 1、知识点 弱比较,强比较、数组绕过、MD5加密 2、题目 3、思路 1、首先我们跟着题目输入&a…

OSPF问题

.ospf 选路 域内 --- 1类,2类LSA 域间 --- 3类LSA 域外 --- 5类,7类LSA --- 根据开销值的计算规则不同,还分为类型1和类型2 ospf 防环机制 区域内防环:在同一OSPF区域内,所有路由器通过交换链路状态通告&#xff…

Nature plants|做完单细胞还可以做哪些下游验证实验

中国科学院分子植物科学中心与南方科技大学在《Nature Plants》期刊上(IF18.0)发表了关于苜蓿根瘤共生感知和早期反应的文章,该研究首次在单细胞水平解析了结瘤因子处理蒺藜苜蓿(Medicago truncatula)根系24小时内特异细胞类型的基因表达变化…

深入理解MySQL索引下推优化

在MySQL中,索引的使用对于查询性能至关重要。然而,即使有合适的索引,有时查询性能仍然不尽如人意。索引下推(Index Condition Pushdown,ICP)是一项能够进一步优化查询性能的技术。本文将详细讲解索引下推的…

JavaWeb_SpringBootWeb

先通过一个小练习简单了解以下SpringBootWeb。 小练习: 需求:使用SpringBoot开发一个Web应用,浏览器发起请求/hello后,给浏览器返回字符串"Hello World~"。 步骤: 1.创建SpringBoot项目,勾选We…

Llama 3 模型家族构建安全可信赖企业级AI应用之使用 Llama Guard 保护大模型对话 (八)

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 基于 LlaMA…

nginx安装部署问题

记一次nginx启动报错问题处理 问题1 内网部署nginx,开始执行make,执行不了,后面装了依赖的环境 yum install gcc-c 和 yum install -y pcre pcre-devel 问题2,启动nginx报错 解决nginx: [emerg] unknown directive “stream“ in…

Stable Diffusion【写实模型】:逼真,逼真,超级逼真的国产超写实摄影大模型万享XL

今天和大家分享的是一个国产万享系列中使用量最高的大模型:万享XL_超写实摄影,顾名思义,该大模型主要是面向写实摄影,一方面生成的图片人物皮肤纹理细节超级逼真,另一方面对于光影效果的处理也非常到位。对于万享XL超写实摄影大模…

什么是JDK21虚拟线程

JDK21虚拟线程 1. 来一段小故事2. 什么是虚拟线程3. 虚拟线程的几个关键特点4.细说关键特点1.为什么轻量级的1.传统线程运行时间2.虚拟线程运行时间3.对垃圾回收的影响 2.非绑定OS线程的魅力所在3.和传统相比为何易于使用4.阻塞优化有什么好处1.什么是阻塞优化2.JDK 21虚拟线程…

【C++题解】1133. 字符串的反码

问题:1133. 字符串的反码 类型:字符串 题目描述: 一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。 如果这是一个小写字符,则它和字符 a 的距离与它的反码和字符 z 的距离…

私域如何高效管理多微信并实现聚合聊天?

在私域经营中,管理多个微信号是一项具有挑战性的任务。为了提高工作效率,辅助工具成为必不可少的一部分。而个微管理系统将为大家带来高效的多微信号管理体验,让大家能够更好地聚合聊天。 首先,个微管理系统提供了一个统一的界面…

从零开始实现自己的串口调试助手(1) - ui界面搭建

UI 界面搭建 ui界面整体演示 ui对象拆分 更多的细节就不方便展开了,下面有提示完成ui设计的提示 在创建工程前 记得把编码改为utf-8 ui设计技巧: ctrl 鼠标左键实现拖动实现复制粘贴 groupBox : 带标题的文本框 栅格布局 -- 只有一个控件的时候会铺满…

AI数学知识

AI数学知识 1、线性代数相关(矩阵)1、什么是秩2、奇异值分解3、特征值分解和奇异值分解4、低秩分解 回归分类知识点2、概率论相关1、先验概率和后验概率2、条件概率、全概率公式、贝叶斯公式、联合概率3、最大似然估计4、贝叶斯公式和最大似然估计5、伯努…

Android Studio 版本升级后 Gradle project sync failed(Android V 应用升级)

问题及解决方案 更新到蜥蜴 Android Studio Iguana 后,出现Gradle project sync failed的问题(IDE更新版本的常态了)。 背景:对应用进行Android V版本升级(SDK35,gradle插件版本要 8.4.0) 1、…

【SQL学习进阶】从入门到高级应用(二)

文章目录 简单查询查一个字段查多个字段查所有字段查询时字段可参与数学运算查询时字段可起别名as关键字省略as关键字别名中有空格别名中有中文 🌈你好呀!我是 山顶风景独好 💝欢迎来到我的博客,很高兴能够在这里和您见面&#xf…

基于微信小程序+ JAVA后端实现的【微信小程序跑腿平台】设计与实现 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称: 《微信小程序跑腿平台的设计与实现》 项目技术栈 该项目采用了以下核心技术栈: 后端框架/库: Java, SSM框架数据库: MySQL前端技术: 微信小程序, HTML…(其它相关技术) …