Fenrier Lab

Fisher 线性判别分析

设有属于两个类别的 n 个 d 维样本 \(\{x_i\mid \, i \in \{1,2,,n\}\}\),如果它们线性可分,那么一般可以将它们映射到一维空间,并且同样可识别,类似于下图所示的意思 由圆形和三角形标识的两类图形被投影到了直线上,它们的位置是分开的,可以成为判别的依据。所以这就对我们产生了启发,能不能找到这样的直线,使得样本集投影到上面之后能够很轻易地对它们进行分类? 直观的想一下,只要两类样本是可分的,就一定能找得到这样的直线,但是如果像上图这样的投影直线,要识别点在直线上的投影位置,需要一个直线上的参考点,以便计算距离。另一种更方便的方法是投影到另一个方向的直线上 虽然这种方式的投影点没有明显地分开,但是仔细观察会发现样本点到直线的距离是明显分隔成两...
点我阅读更多...

瑞利商与极值计算

对于一个埃尔米特矩阵 \(M\) 及非零向量 \(x\),定义瑞利商 \[R(M, x) = \frac{x^* M x}{x^* x}\] 这里的 \(x^* {}\) 是 \(x\) 的共轭转置矩阵,如果 \(M,x\) 都由实数元素组成,那么瑞利商可以写成 \[R(M, x) = \frac{x^T M x}{ x^T x}\] 设 \(M\) 的特征值与特征向量分别为 \(\lambda_1, \lambda_2,,,\lambda_n\),\(v_1, v_2,,,v_n\) ,并且有 \[\lambda_{min} =\lambda_1 \le \lambda_2 \le ... \le \lambda_n = \lambda_{max}\] 下面将证明,在 \...
点我阅读更多...

感知器

线性分类观点 考虑数据集 \(S = \{x^{(i)}\in R^d\mid i=1,2,,,n\}\) ,其中的样本可以被线性分割成两个类别:\(\mathcal{C}_1, \mathcal{C}_2\) ,然后我们再为每一个 \(x\) 分配一个类别标签值 \(y\),当 \(x^{(i)}\) 属于类别 \(\mathcal{C}_1\) 时,\(y_i=1\) ,否则 \(y_i=-1\) 。定义分割超平面为 \[\omega^T x + b = 0\] 其中 \(\omega, x\) 都是 d 维向量。然后对任意的 \(x \in S\) ,定义函数 \[r(x) = \frac{\omega^T}{\|\omega\|} x+ \frac b{\|\omega...
点我阅读更多...

C 语言指针详解

理解指针这一概念是学习 C 语言和 C++ 的重中之重,对于编程初学者,由于不熟悉计算机程序的运行原理,如果用 C 语言作为入门,将会在指针的理解上陷入泥潭。所以尽管现在的大学教育都纷纷将 C 语言作为通识课程,但是我还是认为这门语言并不适合刚接触编程的同学。 不过话又说回来,C 是一门非常值得掌握的语言,原因就在于它足够接近底层,它能让程序员对硬件有足够的掌控,却又不似汇编那样太过底层。 这篇文章的目的就是记录下个人对于指针的理解,并希望能对后人以启发帮助。 基本类型 首先看如下一段代码 //c1.c #include <stdio.h> int main() { int a = 1; printf("%d\n", a); printf("%d\n"...
点我阅读更多...

算法题:零钱兑换

问题描述与分析 感觉是一道经典的算法题,笔试面试屡试不爽。如果想把一些钱换成零钱,请问有多少兑换种方法?当然可以具体点,比如有 w 元钱,想用 k 种面额的币来兑换(k种面额可以不全部用完)。如果没有掌握一定的技巧,拿到这题是一脸蒙蔽的。首先我们需要将问题表述数学化一点: 设共有 k 种面额的纸币,分别值 \(v_i, (i = 1,,k)\),需要兑换的钱为 w ,求总的兑换方法数量 \(N_{k,w}\)。 这道题的关键是将 \(N_{k,w}\) 拆分成两个部分: 一部分是使用 \(k-1\) 种纸币兑换 \(w\) 元钱的方法数量 \(N_{k-1,w}\) 另一部分用 \(k\) 种纸币兑换成 \(w-v_k\) 这么多钱的方法数量 \(N_{k, w-v_...
点我阅读更多...