
机器学习
文章平均质量分 94
五道口纳什
wx公众号/B站:五道口纳什
展开
-
Kernel Trick——核机制,更高维空间内积的快速计算
当他们在谈论核的时候,到底在谈什么?Kernel是什么?如何在机器学习和模式识别的算法中实现Kernel机制?本文将从通俗的观点开始,逐步引入Kernel机制的作用,探究Kernel的历史根源,分析Kernel的工作机制,最后以一个小例子,来实现Kernel机制。原创 2015-09-26 18:09:31 · 17471 阅读 · 1 评论 -
模式识别经典算法——Kmeans图像聚类分割(以最短的matlab程序实现)
kmeans之于模式识别,如同“hello world”之于C、之于任何一门高级语言。原创 2015-10-01 09:54:02 · 44255 阅读 · 19 评论 -
BP神经网络从理论到应用(一):C++实现
为什么基于数学原理的程序会那么难以实现?因为缺乏一定的训练。事实上,基于数学定理的算法并不比「数据结构与算法」的算法复杂更多,它们往往并不需要高级的数据结构作为支撑,也不要高级的语法特性完成某一功能,算法所赖以实现的基石仍是基本的循环分判断等机制。为什么基于数学原理的程序会那么难以阅读?因为缺乏程序语言向数学公式的转换的训练,还是缺乏训练。原创 2015-09-30 18:31:33 · 2300 阅读 · 1 评论 -
模式识别经典算法——FCM图像聚类分割(最简matlab实现)
从kmeans各个样本所属类别 的非此即彼(要么是0要么是1,如果建立一个归属矩阵$N*k$,每一行表示样本的归属情况,则会得到,其中一个entry是1,其他是0),到走向模糊(Fuzzy),走向不确定性(此时的归属(fuzzy membership)阵$P(\mu_i|x_j)\;i\in 1,\ldots k,\;j\in 1,\ldots N$,每个元素都会是[0-1]之间的概率值,行和要求为1)。无疑,基于[原创 2015-10-02 10:57:36 · 28754 阅读 · 12 评论 -
python 机器学习——从感知机算法到各种最优化方法的应用(python)
- 为什么说通过感知机算法的推导和实践便迈进了机器学习的大门?- 感知机算法的学习策略是怎样的?- 不同感知机算法之间的真正区别是什么?- 关于感知机算法都有哪些损失函数和权重更新的形式?- 为什么需要对数据进行标准化或者叫特征缩放?- 如何对数据进行标准化?- 如何利用python实现感知机算法及其不同的变体?- 如何利用python(matplotlib)实现对数据的可视化工作?原创 2015-10-25 07:59:21 · 8648 阅读 · 9 评论 -
机器学习——边角料
单层神经网络的增广(augmentation)形式 z=w1x1+w2x2+…+wdxdϕ(z)={0ifz≤θ1ifz>θ\begin{equation} z=w_1x_1+w_2x_2+\ldots+w_dx_d\\ \phi(z)=\left \{ \begin{array}{l} 0\qquad if \quad z \leq \theta\\ 1\qquad if \qua原创 2015-11-23 22:04:16 · 1200 阅读 · 0 评论 -
BP神经网络——如何进行权值的初始化
如果以面向对象(OOP)的方式进行BP神经网络系统的设计与实践的话,因为权值的初始化以及类的构造都只进行一次(而且发生在整个流程的开始阶段),所以自然地将权值(全部层layer之间的全部权值)初始化的过程放在类的构函数中,而权值的初始化,一种trivial常用的初始化方法为,对各个权值使用均值为0方差为1的正态分布(也即np.random.randn(shape))进行初始化,也即:class Ne原创 2015-11-29 21:05:46 · 30489 阅读 · 2 评论 -
Python 机器学习——线性代数和矩阵运算:从matlab迁移到python
诚然,没有一门语言能够撼动matlab的矩阵或科学计算在学术圈的地位,因其简洁的语法(matrix是其基本数据类型),因其矩阵运算的便捷,因其术业有专攻(matlab:为科学计算而生),因其名字matlab:matrix laboratory,所在的公司名mathworks:math works。我在写过一些matlab和python的代码之后,油然发过一句感慨“没有一门语言能比matlab还更具数学感”。原创 2015-10-26 16:20:56 · 14588 阅读 · 1 评论 -
机器学习常用公式(二)
机器学习常用数学公式(一)条件概率logp(X|θ)=logp(X,z|θ)−logp(z|X,θ)\log p(X|\theta)=\log p(X,z|\theta)-\log p(z|X,\theta)利用的是条件概率计算公式: p(A|B)=p(A,B)p(B)p(A|B)=\frac{p(A,B)}{p(B)}p(A,B)p(A,B):表示联合概率,joint probabilit原创 2016-01-08 11:06:55 · 1506 阅读 · 0 评论 -
Python机器学习——概念及其物理解释
将现实中出现的概念、意义或者内含赋予数学公式以及定理中的某一记号,以帮助记忆和理解,是数学家惯常的一个套路。此专题用来梳理和整理机器学习以及进行编程实践中出现的一个常用或者不太常用的概念或者说法。score vs activation对一个Multi-layer Multi-neuron的神经网络的每一层而言,每一层的输入为score,每一层的输出为activation(激活值):zℓ=wℓ⋅aℓ原创 2015-11-27 21:20:21 · 1682 阅读 · 0 评论 -
机器学习算法mini版
SGD(stochastic gradient descent)SGD=S+GD\mathrm{SGD=S+GD}SGD要点有二:随机S:Stochastic\mathrm{S:Stochastic}的实现——shuffle\mathrm{shuffle}:np.random.shuffle(training_data)或者先随机地获得一次排列组合,再进行shuffle:r = np.random原创 2015-11-26 16:11:56 · 1326 阅读 · 0 评论 -
从 GMM 到 EM 算法
X={x1,x2,…,xN}X=\{x_1, x_2,\dots,x_N\} 其 joint density 或者叫 log joint density:logP(X)=∑i=1Nlog∑ℓ=1kαkN(xi|μℓ,σℓ)\log P(X)=\sum_{i=1}^N\log\sum_{\ell=1}^k\alpha_k\mathcal{N}(x_i|\mu_\ell,\sigma_\ell)原创 2016-01-07 09:01:21 · 1707 阅读 · 0 评论 -
从PCA到Kernel PCA(Python)
PCA均值化的数据: ∑ixi=0\sum_i\mathrm{x}_i=0# python >>> X-np.mean(X, 0) # 一个二维矩阵减去一维向量?对, # 这里用到的技术是numpy中broadcasting(广播机制)样本协方差矩阵(sample-covariance matrix CC) C=1N∑ixi原创 2016-01-10 15:56:51 · 13804 阅读 · 1 评论 -
Python 机器学习——解决过拟合的方法
四种常用的解决过拟合(tackle overfitting)的方法,以思维导图的方式展示如下。原创 2015-10-29 16:09:12 · 2993 阅读 · 0 评论 -
算法直观与对模型的理解(二)
迭代所谓迭代,即是存在这样一个递推关系式: θ(g+1)=f(θ(g))\theta^{(g+1)}=f(\theta^{(g)})比如,E-M算法为GMM给出的关于参数的递推式为:θ(g+1)=argmaxθ∫P(X,z|θ)P(z|X,θ)dz\theta^{(g+1)}=\arg\max_{\theta}\int P(X,z|\theta)P(z|X,\theta)dzzz 是算法提原创 2016-01-08 09:25:01 · 1261 阅读 · 0 评论 -
机器学习基础(三十一)—— 岭回归(Ridge Regression)到 LASSO
如果数据集的特征比样本点还多(XN×d,d>NX_{N\times d},d> N)怎么办?是否还可以使用线性回归来做预测?答案是否定的,因为在计算 (XTX)−1(X^TX)^{-1} 的时候会出错。为了解决这个问题,统计学家引入了岭回归(ridge regression)的概念。简单说来,岭回归就是在矩阵 XTXX^TX 上加一个 λI\lambda I 使得矩阵非奇异,进而能对 XX+λIX^原创 2016-03-29 13:00:13 · 9346 阅读 · 0 评论 -
机器学习基础(三十二) —— 使用 Apriori 算法进行关联分析
Apriori 在拉丁语中指“来自以前”。当定义问题时,通常会使用先验知识或者假设,这被称作“一个先验”(a priori)。在贝叶斯统计中,使用先验知识作为条件进行推断也很常见。先验知识可能来自领域知识、先前的一些测量结果。从大规模数据集中寻找物品间的隐含关系被称作关联分析(association analysis)或者关联规则学习(assocation rule learning)。 关联原创 2016-03-29 15:14:14 · 1280 阅读 · 0 评论 -
Agglomerative Hierarchical Algorithms(凝聚式层次聚类)
A hierarchical clustering algorithm is a clustering algorithm that divides a dataset into a sequence of nested partitions. Hierarchical clustering algorithms can be classified into two categories:agglo原创 2016-03-15 21:02:32 · 4390 阅读 · 0 评论 -
机器学习基础(三十三)—— 皮尔逊相关度评价
除了欧几里得距离,还有一种更复杂一些的方法可以用来判断人们兴趣的相似度(相似一定发生在两个之间)。那就是皮尔逊相关系数,该相关系数是判断两组数据与某一直线拟合程度的一种度量。它在数据不是很规范(normalized)的时候(比如,某影评者对影片的评价总是相对于平均水平偏离很大时),会倾向于给出更好的结果。如果某人总是倾向于给出比另一个人高的分值,而二者的分差又始终保持一致,也即二者呈线性关系,则会得原创 2016-03-30 11:46:02 · 2398 阅读 · 0 评论 -
机器学习基础(十四)—— 统计计数、majority count 与其数学记号
编程与数学,程序语言与数学语言,如此完美地呼应,虽在表达上、在实现上略有差异。获取一个序列中出现次数最多的元素,也即如果序列的每个位置都比做一个人(或者一个分类器),该位置上的值表示他做出的选择、投出的票(分类器的输出),则返回的是票数最多的结果:def majCnt(classList): classCnt = {} for label in classList:原创 2016-03-24 21:52:58 · 1854 阅读 · 0 评论 -
机器学习基础(三十四)—— 协同过滤(之获得推荐)
为未被某人评分的电影的进行打分,我们当然可以查找品味与此人最为接近(依据相似性度量)的人的相应评分,但是这样做过于简单和随意(permissive)。这种做法的问题在于:我们会找到一个热衷某部电影的古怪评论者,而根据 topMatch 的结果,所有其他的评论者都不看好这部电影。也即将评分完完全全依赖于一个未知可信度的人的评分是有风险的。所以一种稳妥的做法即是根据用户之间的相似度对打分进行加权平均(w原创 2016-03-30 21:41:09 · 1057 阅读 · 0 评论 -
机器学习基础(三十五)—— 协同过滤(从匹配用户到匹配商品)
考虑如下的用户对影片的打分,由嵌套字典定义:critics = {'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5, 'Just My Luck': 3.0, 'Superman Returns': 3.5, 'You, Me and Dupree': 2.5,原创 2016-03-30 21:56:44 · 1586 阅读 · 0 评论 -
机器学习基础(三十六)—— 非规整数据(值缺失、异常值)的处理
(1)非规整(2)值缺失(3)异常值(outlier)一般来说,现实中的数据会存在信息不完整、数据点缺失和异常值的情况,理想情况下,我们会去尝试修复非规整数据,但很多数据集都源于一些难以重现(不可再现)的收集过程(比如网络活动数据和传感器数据),因此实际上很难修复。值缺失和异常值也很常见,且处理方式可与非规整信息类似。总的来说,大致的处理过程如下:(1)过滤掉或删除非规整或有值缺失的数据:这原创 2016-03-31 21:53:06 · 3836 阅读 · 0 评论 -
机器学习基础(三十七) —— 处理类别特征
当类别特征仍保持原始形式时,其取值来自所有可能取值构成的集合而不是一个数字,故不能作为输入。当各个取值之间是没有顺序关系的并列关系,这样的类别特征称为 名义(nominal)变量。相反,那些存在顺序关系的(比如评级,评级5的会好于评级1的),则被称为 有序(ordinal)变量。将类别特征表示为数字形式,常可借助 1-of-k 这样的编码方法进行。假设变量的取值有 k 个,如果对这些值用 1 到 k原创 2016-03-31 22:42:29 · 4167 阅读 · 0 评论 -
机器学习基础(三十八) —— 从几率到逻辑斯函数
odds 几率,又称事件的优势比。几率和概率的关系如下:o=p1−pp=o1+oo=\frac p{1-p}\\p=\frac o{1+o}Logistic 回归模型的因变量只有 1/0 两种取值。假设在 pp 个独立自变量 x1,x2,…,xpx_1,x_2,\ldots,x_p 作用下,记 yy 取 1 的概率 p=P(y=1|x)p=P(y=1|\mathbf x),取 0 的概率是 1原创 2016-04-01 15:27:59 · 2120 阅读 · 0 评论 -
机器学习基础(一)——如何避免浮点数下溢
浮点数的下溢一般是由很多很小的数的连乘造成的,读者可以在 Python 中尝试用很多很小的数相乘,最后四舍五入后会得到 0.一种解决办法是对乘积取自然对数,在对数中有: lna⋅b=lna+lnbln∑ixx=∑ilnxi\ln a\cdot b=\ln a+\ln b\\\ln \sum_i x_x=\sum_i\ln x_i避免了太小的数之间的连乘,而且当 x<e−1x<e^{-1} 时原创 2016-03-23 23:25:33 · 6793 阅读 · 0 评论 -
机器学习基础(二)——词集模型(SOW)和词袋模型(BOW)
(1)词集模型:Set Of Words,单词构成的集合,集合自然每个元素都只有一个,也即词集中的每个单词都只有一个(2)词袋模型:Bag Of Words,如果一个单词在文档中出现不止一次,并统计其出现的次数(频数)为文档生成对应的词集模型和词袋模型考虑如下的文档:dataset = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'plea原创 2016-03-23 23:52:09 · 15522 阅读 · 2 评论 -
机器学习基础(四)——持久化分类器
我们以决策树分类器为例。构造决策树是很耗时的任务,即使处理很小的数据集,如果数据集很大,将会耗费更多的计算时间。然而用创建好的决策树解决(新样本)的分类问题,则可很快完成。因此,为了节省计算时间,最好能够在每次执行对新样本的分类问题时调用已经构造好的决策树,也即我们需使用训练集离线训练(offline training)决策树。为了解决这个问题,我们可以使用 Python 的 pickle 模块序列原创 2016-03-24 09:16:00 · 1616 阅读 · 0 评论 -
机器学习基础(四十)—— 将距离转换为权重
KNN 算法的缺陷是可能最终会选择距离太近的近邻,一种补偿的方法是根据距离的远近为其赋以相应的权值。商品越是相近,彼此间的距离也就越小,我们需要一种方法将距离转换为权重。1. 反函数(inverse function)def invweight(dist, num=1., const=0.1): return num / (dist + const)加入常量 const 的目的是避免,样本间原创 2016-04-06 11:28:57 · 8325 阅读 · 0 评论 -
机器学习基础(四十一)—— KNN
K 近邻的数学表达所谓 K 近邻的数学表达,也即统计计数(再进行表决)的数学表达。y=argmaxcj∑xi∈Nk(x)I(yi=cj),i=1,2,…,N;j=1,2,…,Ky=\arg\max_{c_j}\sum_{x_i\in N_k(x)}I(y_i=c_j),\quad i=1,2,\ldots,N;\;j=1,2,\ldots,Kk 值的选择k 值的选择会对 k 近邻法的结果产生重大原创 2016-04-06 12:21:14 · 1327 阅读 · 0 评论 -
聚类——层次聚类(Hierarchical Clustering)
Hierarchical Clustering,一如其字面意思,是层次化的聚类,得出来的是树形结构(计算机科学的树是一棵根在最上的树,:-D)。原创 2016-03-13 12:43:32 · 12741 阅读 · 1 评论 -
机器学习基础(四十三)—— kd 树( k 近邻法的实现)
实现 k 近邻法时,主要考虑的问题是如何对训练数据进行快速 k 近邻搜索,这点在如下的两种情况时,显得尤为必要:(1)特征空间的维度大(2)训练数据的容量很大时k 近邻法的最简单的实现是现行扫描(linear scan),这时需计算输入实例与每一个训练实例的距离,但训练集很大时,计算非常耗时,这种方法是不可行的。为了提高 k 近邻搜索的效率,可以考虑使用特殊的结构存储训练数据,以减少计算距离的原创 2016-04-06 16:12:22 · 2088 阅读 · 0 评论 -
机器学习基础(八)——感知机(iterative optimization)
感知机的迭代优化(iterative optimization)求解的更新公式如下:wt+1←wt+1sgn(wTtxn)≠ynynxnw_{t+1}\leftarrow w_t+1_{\text{sgn}(w_t^Tx_n)\neq y_n}y_nx_n该梯度更新公式,概括了感知机的全部内含以及 iterative optimization 的迭代优化算法。公式胜前言。进一步又可将上式看做更泛原创 2016-03-24 14:30:57 · 1613 阅读 · 0 评论 -
机器学习基础(十一)—— Logistic Regression 梯度更新公式的推导
Logistic Regression 所要最佳化的问题是: minw1N∑n=1Nln(1+exp(−ynwTxn))Ein(w)\min_{\mathbf{w}}\;\underbrace{\frac1N\sum_{n=1}^N\ln\left (1+\exp(-y_n\mathbf{w}^T\mathbf{x}_n)\原创 2016-03-24 15:21:05 · 2449 阅读 · 0 评论 -
机器学习基础(九)—— iterative optimization
统计学习的核心步骤:模型、策略、算法。优化(optimization)是算法的一种,迭代优化(iterative optimization)又是优化的一种。iterative optimization 的一般框架:wt+1←wt+ηvw_{t+1}\leftarrow w_t+\eta\;v采用 iterative optimization 优化的模型主要有:perceptron 感知机算法wt原创 2016-03-24 14:42:08 · 2296 阅读 · 0 评论 -
决策树(Decision Tree)
布尔函数与二分决策树原创 2016-03-14 08:08:30 · 2024 阅读 · 0 评论 -
机器学习基础(十六)—— bootstrap
bootstrap:抽出来、记录下来、放回去bootstrapping:一个统计工具,对同一份数据集,进行不同的重采样(re-sample)以模拟不同的数据集出来,避免了 cross-validation 中数据量的减少。在集成学习(ensemble learning)中,我们所要集成的对象是不同的分类器,分类器间的差异性(diversity)是集成学习成功的关键要素,差异性主要有以下来源:(1原创 2016-03-24 23:35:23 · 4864 阅读 · 0 评论 -
机器学习基础(十七)—— boosting
boosting 一种和 bagging(Bootstrap AGgregation)很类似的技术,不论是在 boosting 还是在 BAGging 中,所使用的多个分类器的类型都是一致的。但在 boosting 之中,不用的分类器是通过串行训练(存在先后顺序)得到的,每个分类器都根据已训练出的分类器的性能来进行训练。boosting 通过关注被已有分类器错分的那些数据来获得新的分类器。由于 bo原创 2016-03-25 09:38:32 · 1415 阅读 · 0 评论 -
机器学习算法工程师的经典面试问题
如何确定聚类算法的类别数 k在计算样本距离时如何处理非数值型特征(类别型)原创 2016-03-13 21:51:02 · 2932 阅读 · 0 评论 -
协方差矩阵(covariance matrix)
Xn×d⇒(XTX)d×dX_{n\times d}\Rightarrow \left (X^TX\right )_{d\times d}(1)协方差矩阵:半正定(semi-positive definite)(2)原创 2016-03-14 20:01:17 · 4147 阅读 · 0 评论