机器学习基础笔记

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

绪论

知识分类

科学 是什么,为什么

技术 怎么做

工程 多快好省

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

定义

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

训练数据

模型 学习算法 分类

决策树,神经网络,支持向量机,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.mzph.cn/diannao/17850.shtml

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

相关文章

Django5+React18前后端分离开发实战14 React-Router6 入门教程

使用nodejs18 首先,将nodejs切换到18版本: nvm use 18创建项目 npm create vitelatest zdpreact_basic_router_dev -- --template react cd zdpreact_basic_router_dev npm install react-router-dom localforage match-sorter sort-by npm run dev此…

kafka跨地区跨集群同步工具MirrorMaker2 —— 筑梦之路

MM2简介 KIP-382: MirrorMaker 2.0 - Apache Kafka - Apache Software Foundation 有四种运行MM2的方法: As a dedicated MirrorMaker cluster.(作为专用的MirrorMaker群集) As a Connector in a distributed Connect cluster.&#xff08…

使用IDEA远程debug调试

文章目录 应用背景开启方式IDEA设置启动脚本改造 参考资料 应用背景 springboot项目,部署到服务器上,需要开启远程debug跟踪代码。 使用idea开启远程debug。 开启方式 IDEA设置 选择 Edit Configuration 如图,点击加号,选择Re…

【机器学习】利用机器学习优化陆军战术决策与战场态势感知

🔒文章目录: 💥1.引言 🛴2.机器学习在陆军战术决策中的应用 🛣️2.1数据收集与预处理 🌄2.2模型构建与训练: 🌅2.3实时决策支持: 🌅2.4代码实现 &…

排序算法——上

一、冒泡排序: 1、冒泡排序算法的思想 我们从左边开始把相邻的两个数两两做比较,当一个元素大于右侧与它相邻的元素时,交换它们之间位置;反之,它们之间的位置不发生变化。冒泡排序是一种稳定的排序算法。 2、代码实现…

5月20日分割等和子集+最后一块石头的重量Ⅱ

416.分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和…

【ai】LiveKit Agent 的example及python本地开发模式工程实例

title: ‘LiveKit Agent Playground’ playgroundLiveKit Community playground的环境变量:LiveKit API # LiveKit API Configuration LIVEKIT_API_KEYYOUR_API_KEY LIVEKIT_API_SECRETYOUR_API_SECRET# Public configuration NEXT_PUBLIC_LIVEKIT_URLwss://YOUR_…

JAVA智慧工厂制造生产管理MES系统,全套源码,多端展示(MES与ERP系统的区别和联系)

MES与ERP系统的区别和联系 MES制造执行系统,是一套面向制造公司车间执行层的生产信息化管理系统。MES 可觉得公司提供涉及制造数据管理、计划排产管理、生产调度管理、库存管理、质量管理、人力资源管理、工作中心、设备管理、工具工装管理、采购管理、成本管理、项…

为什么推荐前端用WebStorm软件编程?

一、介绍 WebStorm是由JetBrains公司开发的一款JavaScript开发工具,被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。它支持JavaScript、ECMAScript 6、TypeScript、CoffeeScript、Dart和Flow等多种语言的代码…

大学搜题软件音乐类?分享三个支持答案和解析的工具 #微信#媒体

高效的学习工具可以帮助我们提高记忆力和理解能力,使知识更加深入人心。 1.彩虹搜题 这是个微信公众号 一款专门供全国大学生使用的查题神器!致力于帮助大学生解决学习上的难题,涵盖了大学生学习所需的学习资料。 下方附上一些测试的试题及答案 1、甲、乙合伙开…

goimghdr,一个有趣的 Python 库!

更多Python学习内容:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - goimghdr。 Github地址:https://github.com/corona10/goimghdr 在图像处理和分析过程中,识别图像文件的类型是一个常见的需求。Python自带的imghdr…

开源与闭源:AI模型发展的两条路径

目录 前言1 数据隐私保护与用户数据安全1.1 开源大模型的透明性与挑战1.2 闭源大模型的控制与责任 2 商业应用的优劣比较2.1 开源大模型的灵活性与创新2.2 闭源大模型的可靠性与服务质量 3 社区参与与合作的差异3.1 开源大模型的社区驱动与协作3.2 闭源大模型的企业主导与保密性…

【openlayers系统学习】3.3假彩色图像合成(三个波段合成假彩色图像)

三、假彩色图像合成 在上一步中,我们使用 ol/source/GeoTIFF​ 源从单个多波段源(具有红色、绿色、蓝色和Alpha波段)渲染真彩色图像。在下面这个例子中,我们将从可见光谱之外提取数据,并使用它来呈现假彩色合成。 我…

【基于 PyTorch 的 Python 深度学习】9 目标检测与语义分割(2)

前言 文章性质:学习笔记 📖 学习资料:吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容:根据学习资料撰写的学习笔记,该篇主要介绍了优化候选框的几种方法。 一、优化候选框的…

抖店怎么选品?抖店爆款选品思路技巧,新手直接用!

大家好,我是电商花花。 抖店选品永远是我们做抖店,做电商的核心,店铺想要出单,想要赚钱,我们就一定要学会怎么选品,怎么筛选商品。 而我们绝大多数新手并没有办法保证持续选爆款的能力,如果店…

【ARM+Codesys案例】T3/RK3568/树莓派+Codesys锂电池测试设备控制解决方案

锂电池诞生于上世纪60年代,90年代开始由日本索尼公司实现商业化。锂离子电池凭借快速充放电、长循环寿命、无记忆效应等众多优点,成为当今数码产品及电动汽车大规模应用的第一选择。与镍氢电池、铅酸电池相比,锂电池可以存储更多电能。现在&a…

Visual Studio 智能代码插件:CodeGeeX

前言 在软件开发领域,高效的编程助手一直是提升开发者效率和质量的关键。 随着人工智能技术的不断发展,智能编程助手逐渐成为开发者们不可或缺的工具。其中,CodeGeeX作为一款专为Visual Studio设计的免费智能编程助手,凭借其强大…

让大模型更聪明——复杂而艰巨的任务

一、引言 在人工智能领域,大模型因其强大的数据处理能力和复杂的结构,成为了推动技术进步的重要力量。然而,要让大模型真正展现出“聪明”的特质,即具备高度的人类智能水平,仍是一项极具挑战性的任务。本文将从数据质…

Java-Stream流-概述、创建、使用:遍历/匹配、筛选、聚合、映射、归约、排序、提取/组合

Java8-Stream: 一、Stream流概述1.Stream流的特点:2.使用步骤:3.常用方法示例: 二、Stream流创建1.常见的创建Stream的方法2. stream()或parallelStream()方法的使用和选择 三、Stream流使用Optional案例中使用的实体类1.遍历/匹配…

MYSQL之安装

一,下载仓库包 wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm二,安装仓库 yum -y install mysql80-community-release-el7-3.noarch.rpmsed -i s/gpgcheck1/gpgcheck0/g mysql-community.repo三,安装MY…