PCA与SVD 03.04日机器学习视频主题之一,关于主成分分析(PCA)和奇异值分解(SVD)。在PCA优化过程中,要求矩阵\(\frac{1}{m}\Sigma^m_i x^{(i)^{T}}x^{(i)}\)的最大几个特征值对应的特征向量,但对于高维数据(比如500*500图像,\(x \in \mathcal{R}^{250,000}\))计算\(\Sigma\)及其特征向量较为困难。于是在计算\(\Sigma\)前,先对X进行SVD分解,直接得到\(\Sigma\)所对应的特征向量,即可取最大特征值的k个对应的特征向量使用。\(\textit{X} = UDV^T\),取\(U\)的前k行或\(V\)的前k列。 和广西讨论了一下,SVD和PCA关系比较纠缠,其实可以看做一个东西的两种描述(或侧重): PCA较为偏重的是降维,SVD强调的是分解 一个表格 Model F(x) Not problistic Subspace Factor Analysis PCA Clumps/groups Mixture of Gaussian K-means 上面表格,是对之前几讲内容的整合。左边标注场合,上面标注类型。 可以看到,因子分解和高斯混合两个模型都对数据的分布进行了逼近(无论是降维之后的子空间,还是本征数据集上)给我的感觉上,都有一些生成模型的意思;而PCA和K临近,则是只使用非概率方法,对数据进行了表征,使用数据本身特点(而非勾画分布)进行处理,有点儿判别模型的意思(?个人想法)。于是引出第三个话题 生成模型vs判别模型 生成模型是分布主导 判别模型是数据主导 ——广西和某知乎用户 或者再引一个知乎用户回答 生成模型使用联合分布建模,判别模型直接使用条件分布建模。 自然的,生成模型用以生成一些数据,而判别模型则对已有feature进行判别。 什么是生成模型? 需要继续思考和尝试回答这个问题。 …
t-SNE笔记(1)
1. 从 SNE(Stochastic Neighbor Embedding)讲起 对要进行降维的数据点,先将两点在高维上的欧氏距离转化为条件分布。方法如下: 对于原数据集上的点 \({x_i}\),以其为中心建立高斯分布,将点 \(x_j\)与\(x_i\)的相似度转化为\(x_j|x_i\)的条件概率\(p_{j|i}\): \(p_{j|i} = \frac{exp(-||x_i - x_j||^2 / 2 \sigma_i^2)}{\sum_{k \ne i} exp(-||x_i - x_k||^2 / 2 \sigma_i^2)}\) 对于每个数据点上分布方差\(\sigma\)的选取,对于不同的点\(x_i\)不存在一个唯一的值(例如较为密集的点需选取较小的\(\sigma\),而稀疏的点则需要较大的\(\sigma\))。分布P的熵随着\(\sigma\)的增大而增大。在用户确定困惑度的情况下,SNE对\(\sigma\)进行二分法搜索,困惑度定义为:\(Perp(P_i) = 2^{H(P_i)}\)其中\(H(P_i)\)是\(P_i\)以2为底的香农熵: \(H(P_i) = - \sum_j p_{j|i} log_{2}p_{j|i}\)。困惑度可被视为对邻居的有效数量的平滑测量。(个人见解:规定上下界,使用二分对sigma进行搜索,用困惑度衡量每次sigma取值后,所获得的高斯与样本的契合程度,逼近最优sigma) 将数据\(x\)映射到低维上后得到\(y\),并以上式相似的方式定义了在低维空间上的相似性 \(q_{j|i}\):\(q_{j|i} = \frac{exp(-||y_i - y_j||^2)}{\sum_{k \ne i} exp(-||y_i - y_k||^2)}\)(注意,所有标准差项都被设置为\(\frac{1}{\sqrt{2}}\)) 目标就是让低维空间的分布q尽量接近高维上的分布p,其中衡量两个分布相似性使用KL散度: \(C = \sum_i KL(P_i||Q_i) = \sum_i \sum_j p_{j|i} log \frac{p_{j|i}}{q_{j|i}}\) (注意,KL散度的定义可知,低维空间上的不同错影响并不一致,例如,高维空间的相近两点在低维空间上被拉开时所产生的影响较大,而高维中远离的两点在低维中被拉近时所产生的影响较小。所以SNE的损失函数较为关注于局部结构) SNE中,目标即使两个分布相近,即KL散度最小。使用梯度下降法获得最优模型。其中式子\(C\)对\(y_i\)的梯度为: \(\frac{\delta C}{\delta y_i} = 2 \sum_j (p_{j|i} - q_{j|i} +p_{i|j} - q_{i|j} )(y_i - y_j)\)。故可将该梯度视为低维表示中,两个点之间的弹簧,在\((y_i-y_j)\)的方向上,根据两点之间过于接近或远离给出斥力或引力, 力的大小与两点之间的距离相关,亦与数据在高维与低维上的失配有关\((p_{j|i} - q_{j|i} +p_{i|j} - q_{i|j} )(y_i - y_j)\) ?????. SNE有各种各样的问题。。。比如目标函数难以优化(要加许多项,比如精细调整的的高斯噪音,比如大的动量以加快优化),和拥挤问题 2. t-SNE(SNE with Student-t distribution) 为了解决SNE的上述问题,作者提出了t-SNE。t-SNE的目标函数与SNE有两大不同:1. 使用对称的目标函数,2.低维空间中,不再使用高斯分布表达两点的相似度,而使用学生t分布。 2.1 对称的SNE...…
极大似然估计vs贝叶斯估计
贝叶斯推断: 频率学角度: 假设存在固定但未知的参数\(\theta\) 用已观察到的事实估计\(\theta\) 使用估计的\(\theta\)做预测 贝叶斯角度: 表达关于未知参数\(\theta\)的不确定性 使用概率量化不确定性 将未知参数视为随机变量 运用概率论规律进行预测 取未知参数的期望值 对于数据集\(D\),存在一组参数最优\(\theta\)用以描述\(D\)。 可使用贝叶斯法则来对参数\(\theta\)进行推断: \[p(\theta | D) = \frac{p(D|\theta) * p(\theta)}{\int_\theta p(D|\theta) * p(\theta)d(\theta)}= \frac{p(D|\theta) * p(\theta)}{p(D)}\] 即 \(posterior = \frac{likelihood * prior}{evidence}\) 极大似然估计 :在极大似然估计中,我们寻找最大化似然函数 \(p(D|\theta)\)的点\(\theta\),将其标注为\(\hat{\theta}\)。注意,这里\(\hat{\theta}\)是一个点,不是随机变量。 换句话说,极大似然估计法将\(\frac{p(\theta)}{p(D)}\) (\(\frac{prior}{evidence}\))视为一个常量,并不允许我们将自己对于参数\(\theta\)的先验知识\(p(\theta)\)带入计算中。(或者可以认为我们对于\(\theta\)的出现做了等概率的假设) 贝叶斯估计:相反的,贝叶斯估计将所有的后验分布 \(p(\theta|D)\)全都计算了。贝叶斯推断中,将\(\theta\)视为随机变量。与最大似然估计不同的是,在贝叶斯估计中,我们输入一个概率密度函数,并得到一个概率密度函数(关于参数\(\theta\)的概率分布),而不是一个MLE中的单点。 对于所获得的分布 \(p(\theta|D)\)中所有可能的\(\theta\),我们需要合理地选择最可能的值。例如,在分布的协方差(或方差)较小的情况下,我们可以使用\(\theta\)的期望。从后验分布中得到的方差,使我们可以表示我们对所选择估计值的信心。如果方差过大,我们甚至可以得出无法获得较好的\(\theta\)估计值的结论。 用一个简答的例子来再总结一下。 比如你是班里的班长,你有个问题想知道答案,你可以问所有的班里的学生。 一种方案是,问一个学习最好的同学。 另一种方案是,问所有的同学,然后把答案综合起来,但综合的时候,会按照每个同学的成绩好坏来做个权重。例子来源于李文哲的听课笔记 第一种方案的思想类似于ML,MAP,第二种方案类似于贝叶斯模型。 小总结,最大似然是对点估计,贝叶斯是对分布估计。即,假设求解参数\(\theta\),最大似然是求出最有可能的\(\theta\)值,而贝叶斯则是求解\(\theta\)的分布 …
新MBP的到来!!!
11月18日凌晨 我的MacBook Pro 2016到了 …
Machine Learning Note, P8
Machine Learning diagnostic: a test that you can run to gain insight what is/isn’t working with a learning algorithm and gain guidance on how best to improve the performance Evaluating the hypothesis Cross validation. Divide the data set into two parts: Training Set(70%) and Test Set(30%). Learn the parameters from the training set and implement them on test set, find out the errors. Choose the model with least test error As the learning algorithm will work well on dataset we got, the error of the model we choose on test set, is likely to be more optimistic than the generalized...…
Machine Learning Note, P7
Parameters Unrolling, as thetas for every layer in Neuron Network is a matrix, but when we’re doing cal in matlab, we have to pass in vectors. We’ll need to unroll theta into a long vector Reshape the vectors into matrices inside the cost function, to use as theta vectors, easy to cal Gradient Checking. Some errors might happen in our implementation of neuron network and lead to disaster,especially on back propagation, it’s better to have a way to evaluate our gradient calculation. Use two-side-epsilon method to calculate the approximation of gradient, use it to compare with the gradient we’ve got...…