求 mk 矩阵 A 和 nk 矩阵的欧几里得距离
如何理解主元分析
主元分析也就是PCA,主要用于数据降维。
https://www.matongxue.com/madocs/1025/
PCA(主成分分析),旨在找到数据中的主成分,并利用这些主成分表征原始数据从而达到降维的目的。在信号处理领域,我们认为信号具有较大方差,而噪声具有较小方差。因此我们不难引出PCA的目标即最大化投影方差,也就是让数据在主轴上投影的方差最大(在我们假设中方差最大的有用信号最大化减少了噪声的影响)。
欧拉公式
https://www.zhihu.com/topic/20463469/intro
矩阵正定性的判断,Hessian 矩阵正定性在梯度下降中的应用
抽蓝球红球,蓝结束红放回继续,平均结束游戏抽取次数
https://blog.youkuaiyun.com/Neekity/article/details/89353175
PCA
PCA 是比较常见的线性降维方法,通过线性投影将高维数据映射到低维数据中,所期望的是 在投影的维度上,新特征自身的方差尽量大,方差越大特征越有效,尽量使产生的新特征间的相关 性越小。
PCA 算法的具体操作为对所有的样本进行中心化操作,计算样本的协方差矩阵,然后对协方差矩阵做特征值分解,取最大的n个特征值对应的特征向量构造投影矩阵
拟牛顿法的原理
牛顿法的收敛速度快,迭代次数少,但是hessian矩阵很稠密时,每次迭代的计算量很大,随着数据规模增大,hesseian矩阵也会变大,需要更多的存储空间以及计算量。拟牛顿法就是在牛顿法的基础上引入hessian矩阵的近似矩阵,避免了每次都计算hessian矩阵的逆,在拟牛顿法中,构造一个近似海森矩阵(或其逆矩阵)的正定对称阵来代替hessian矩阵(或其逆矩),虽然不能像牛顿法那样保证最优化的方向,但其逆矩阵始终是正定的,一次算法始终朝最优化的方向搜索
编辑距离
编辑距离的作用主要是用来比较两个字符串的相似度的
编辑距离,又称 Levenshtein 距离(莱文斯坦距离也叫做 Edit Distance),是指两个字串 之间,由一个转成另一个所需的最少编辑操作次数,如果它们的距离越大,说明它们越是不同。 许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
在概念中,我们可以看出一些重点那就是,编辑操作只有三种。插入,删除,替换这三种操 作,我们有两个字符串,将其中一个字符串经过上面的这三种操作之后,得到两个完全相同的字 符串付出的代价是什么就是我们要讨论和计算的。
例如:
我们有两个字符串:kitten 和 sitting:
现在我们要将 kitten 转换成 sitting
我们可以做如下的一些操作;
kitten–>sitten 将 K 替换成 S sitten–> sittin 将 e 替换成 i
sittin–> sitting 添加 g
在这里我们设置每经过一次编辑,也就是变化(插入,删除,替换)我们花费的代价都是 1。
例如:
如果 str1=”ivan”,str2=”ivan”,那么经过计算后等于 0。没有经过转换。相似度 =1-0/Math.Max(str1.length,str2.length)=1
如果 str1=”ivan1”,str2=”ivan2”,那么经过计算后等于 1。str1 的”1”转换”2”, 转换了一个字符,所以距离是 1,相似度=1-1/Math.Max(str1.length,str2.length)=0.8
算法过程
1.str1 或 str2 的长度为 0 返回另一个字符串的长度。 if(str1.length0) return str2.length; if(str2.length0) return str1.length;
2.初始化(n+1)(m+1)的矩阵 d,并让第一行和列的值从 0 开始增长。扫描两字符串(nm 级的),如果:str1[i]==str2[j],用temp记录它,为0。否则temp记为1。然后在矩阵d[i,j] 赋于 d[i-1,j]+1 、d[i,j-1]+1、d[i-1,j-1]+temp 三者的最小值。
3.扫描完后,返回矩阵的最后一个值 d[n][m]即是它们的距离。 计算相似度公式:1-它们的距离/两个字符串长度的最大值。 我们用字符串“ivan1”和“ivan2”举例来看看矩阵中值的状况: 1、第一行和第一列的值从 0 开始增长
首先我们先创建一个矩阵,或者说是我们的二维数列,假设有两个字符串,我们的字符串的 长度分别是 m 和 n,那么,我们矩阵的维度就应该是(m+1)*(n+1).
注意,我们先给数列的第一行第一列赋值,从 0 开始递增赋值。我们就得到了图一的这个样 子
之后我们计算第一列,第二列,依次类推,算完整个矩阵。
我们的计算规则就是:
d[i,j]=min(d[i-1,j]+1 、d[i,j-1]+1、d[i-1,j-1]+temp) 这三个当中的最小值。 其中:str1[i] == str2[j],用 temp 记录它,为 0。否则 temp 记为 1
我们用 d[i-1,j]+1 表示增加操作
d[i,j-1]+1 表示我们的删除操作
d[i-1,j-1]+temp 表示我们的替换操作
2、举证元素的产生 Matrix[i - 1, j] + 1 ; Matrix[i, j - 1] + 1 ; Matrix[i - 1, j - 1] + t 三者当中的最小值
3.依次类推直到矩阵全部生成
这个就得到了我们的整个完整的矩阵。