主页

Adaboost

Adaboost算法boost的思想是组合一堆弱分类器来组成一个强分类器,Adaboost便是其中一个最著名的例子。Adaboost的推导可以由以下式子来完成:首先Adaboost是一堆弱分类器的组合,可以写为$f_m(x) = \frac{1}{2}\sum_{j}^m\alpha_jy_j(x)$,它的损失函数采用loss损失函数,所以最终可以写为:$$L(x) = \sum_i^n\exp(

svm

SVMLagrange对偶问题首先一个约束问题$$\begin{cases}\min \ f(x) \\ s.t.\ \ g_i(x) \ge 0\\ \quad \quad h_j(x) = 0\end{cases}$$ 该问题可以转化成为等价的问题,引入拉格朗日函数$$L(x, w, v) = f(x) - \sum_iw_ig_i(x) - \sum_jv_jh_j(x),w_i \ge 0

采样方法

对一些常用的采用进行总结,主要参考了PRML。 整个采样的关键思想:求$$E[f] = \int f(z)p(z)dz$$ 但是通常数值分析的方法很难求,寻求一种近似的方法$$E[f] = \frac{1}{L}\sum f(z^{(l)})$$ 其中$z^{(l)} \sim P(z)$,通常来说10~20个样本就可以很好的拟合,并且这个方法是不取决于z的维度的。 但是通常情况下,可能一些非常小

决策树

常用分类方法的一种,对于训练数据来说,每次找到最优的一个特征,对该特征进行划分。划分之后得到不同的子集,再分别在不同的子集进行划分,直到满足某个划分标准则停止。 如何选择最优的特征有不同的算法。常见的决策树算法有ID3,C4.5算法,对于ID3算法,采用信息增益最大的特征来选择最优的特征。算法流程如下:对于在未划分之前,首先算出该数据集$D$的熵。假设该数据集有$K$类,训练集大小为$N$.其中属

K近邻

$k$近邻是最简单的分类算法了,对于一个实例$x$,找到它最近的邻居,根据邻居的类标来进行一个投票。 对于找到k近邻而言,对每个点采用暴力遍历,取前k个最小的即可。然后进行投票。 代码如下:k_nearest_neighbours 产生的决策面如下所示: 对于最近邻,可能暴力搜索会造成过高的耗时,为了减少这种耗时,采用了一种叫做KD树的数据结构。思想是将空间进行划分,拿二维平面举例:首先按照某个轴

ElasticNet

Linear Regression with Elastic Net线性回归线性回归最简单的形式为$$y = wx$$ 损失函数为$$L(y,x;w) = \frac{1}{2n}\sum_{i}||y_i - w^Tx_i||_2^2$$ 这个问题可以直接求解,令梯度为0,得到$$w = (X^TX)^{-1}X^Ty$$ 但是通常来说$(X^TX)$不是满秩的,数值计算上会有问题,将会有无穷多

Gaussian Process

高斯过程对于基本的线性回归,我们会假设$f(x)$的一个形式,比如说$f(x) = mx + c$或者$f(x) = ax^2 + bx + c$等等,然而高斯过程不直接假设函数的形式,而是让数据自己说话,对函数的分布进行推断。即后验$p(f|D)$,但是对函数后验$p(f|D)$分布进行推断比较困难,我们对这些函数在$x_1, x_2, \cdots, x_n$上的值进行推断。高斯过程即假设$p

数据降维

给定数据$x_1,x_2,\cdots,x_N$,其中每个$x_i$是一个$D$维向量,现在要将其降低到M维,降维有以下几种方法: PCAPCA可以以两种方式来看待,一是最大化方差,二是最小化误差 最大化方差考虑$D=2$的情况,假设$M=1$,找到的投影方向为$\mu_1$,那么最大化方差即为$$\max v = \frac{1}{N}\sum_{i=1}^{N}(\mu_1^Tx_i - \m

神经网络求导细节

最近终于把RNN的求导细节给弄明白了,写一篇文章来总结一下DNN,CNN以及RNN的具体求导细节。在网上搜索资料的同时,发现很多时候RNN的求导大多数给的是矢量化的形式,并不容易去理解,比如说$y$是一个标量,$y = \sum_n||y_n - t_n||^2$,通常用的error形式,对一个权重矩阵$w$求导,也应该是一个矩阵的形式。但是一旦涉及到微积分的链式法则,通常很难以去理解。比如说$$

EMAlgorithm

EM算法具体例子为Gaussian Mixture Model,由k个component组成。$$P(z_k = 1) = \pi_k, \sum_k\pi_k = 1, 0 \le \pi_k \le 1$$$$P(x|z) = \prod_k\mathcal{N}(x|\mu_k,\Sigma_k)^{z_k}$$$$P(x) = \sum_zP(z)P(x|z) = \sum_k\pi_k\