type
status
date
slug
summary
tags
category
icon
password
Property
严格意义上来说,局部切空间对齐(LTSA) 并不是LLE的变体,但是,从算法角度来说,它们俩又是足够接近的。与 LLE 算法关注于保持临点距离不同,LTSA 寻求通过切空间来描述局部几何形状,并(通过)实现全局最优化来对其这些局部切空间,从而得知对应的嵌入。 LTSA 可执行为函数
locally_linear_embedding
或它的面向对象的对应形式 LocallyLinearEmbedding
,附带关键词 method = 'ltsa'
LTSA 算法含三部分:
- 近邻搜索:与标准 LLE 的相同
- 加权矩阵构造:大约是 。其中第一项与标准 LLE 相似
- 部分特征值分解:同于标准 LLE
type
status
date
slug
summary
tags
category
icon
password
Property
数据类型
不同类型的数据集采用的算法是不一样的。总体来说,生活场景中只有两种类型的数据,一种是离散型,一种是连续型:
- 离散型数据:由记录不同类别个体的数目所得到的数据,又称计数数据,所有这些数据不能再细分,也不能进一步提高他们的精确度。比如分类就是离散型数据。
- 连续型数据:变量可以在某个范围内取任一数,即变量的取值可以是连续的。如长度、时间、质量值等,这类数通常是非整数,含有小数部分
可用数据集
Kaggle
:一个大数据竞赛平台,上面的数据都是真实的,并且有很多数据集。
UCI
:收录了360个数据集,覆盖了科学、生活、经济等领域。
scikit-learn
数据集:用于学习的数据集,数据量比较小,但是方便获取和学习。
获取数据集方式
获取数据集的方式有两种,有
load_*
和fetch_*
。以下:type
status
date
slug
summary
tags
category
icon
password
Property
交叉验证
交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。
什么时候才需要交叉验证呢?
交叉验证用在数据不是很充足的时候。比如在日常项目里面,对于普通适中问题,如果数据样本量小于一万条,就会采用交叉验证来训练优化选择模型。如果样本大于一万条的话,一般随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。用训练集来训练模型,用验证集来评估模型预测的好坏和选择模型及其对应的参数。把最终得到的模型再用于测试集,最终决定使用哪个模型以及对应参数。
根据切分的方法不同,交叉验证分为下面三种:
- 简单交叉验证,简单是和其他交叉验证方法相对而言的。首先,随机的将样本数据分为两部分(比如: 70%的训练集,30%的测试集),然后用训练集来训练模型,在测试集上验证模型及参数。接着再把样本打乱,重新选择训练集和测试集,继续训练数据和检验模型。最后选择损失函数评估最优的模型和参数。
- S折交叉验证(S-Folder Cross Validation),S折交叉验证会把样本数据随机的分成S份,每次随机的选择S-1份作为训练集,剩下的1份做测试集。当这一轮完成后,重新随机选择S-1份来训练数据。若干轮(小于S)之后,选择损失函数评估最优的模型和参数。
网格搜索
type
status
date
slug
summary
tags
category
icon
password
Property
标量对标量的求导可以表示为,有些时候,有一组标量 来对一个标量 的求导,那么会得到一组标量求导的结果:
如果把这组标量写成向量的形式,即得到维度为的一个向量对一个标量 的求导,那么结果也是一个维的向量:
可见,所谓向量对标量的求导,其实就是向量里的每个分量分别对标量求导,最后把求导的结果排列在一起,按一个向量表示而已。类似的结论也存在于标量对向量的求导,向量对向量的求导,向量对矩阵的求导,矩阵对向量的求导,以及矩阵对矩阵的求导等。
总而言之,所谓的向量矩阵求导本质上就是多元函数求导,仅仅是把把函数的自变量,因变量以及标量求导的结果排列成了向量矩阵的形式,方便表达与计算,更加简洁而已。
为了便于描述,后面如果没有指明,则求导的自变量用 表示标量, 表示 维向量, 表示 维度的矩阵,求导的因变量用 表示标量, 表示维向量, 表示维度的矩阵。
矩阵向量求导定义
根据求导的自变量和因变量是标量,向量还是矩阵,有9种可能的矩阵求导定义,如下:
type
status
date
slug
summary
tags
category
icon
password
Property
标量对向量求导
标量对向量求导,严格来说是实值函数对向量的求导。即定义实值函数 ,自变量是维向量,而输出是标量。对于一个给定的实值函数,如何求解呢?
首先想到的是基于矩阵求导的定义来做,由于所谓标量对向量的求导,其实就是标量对向量里的每个分量分别求导,最后把求导的结果排列在一起,按一个向量表示而已。那么可以将实值函数对向量的每一个分量来求导,最后找到规律,得到求导的结果向量。
首先看一个简单的例子: ,求解
根据定义,先对的第个分量进行求导,这是一个标量对标量的求导:
可见,对向量的第 个分量的求导结果就等于向量 的第 个分量。由于是分母布局,最后所有求导结果的分量组成的是一个 维向量。那么其实就是向量 。也就是说:
同样的思路,也可以直接得到:
同样的思路,也可以推导出:
再来看一个复杂一点点的例子: ,求解