2013年11月23日

凸优化(Convex Optimization)浅析

摘要: 本博客已经迁往http://www.kemaswill.com/, 博客园这边也会继续更新, 欢迎关注~在机器学习中, 很多情况下我们都需要求得一个 问题的全局最优值(global optimum). 大多数的全局最优值很难求得, 但是对于凸问题, 我们可以比较高效的找到其全局最优值, 这是由凸问题的性质决定的.我们将逐步的介绍凸集, 凸函数, 凸问题等.1. 凸集(convex set)对于一个集合\(C\), 如果对于任意两个元素\(x,y \in C\), 以及任意实数\(\theta \in \mathbb{R}\)且\(0 \leq \theta \leq 1\)都满足$$\thet 阅读全文

posted @ 2013-11-23 22:47 潘的博客 阅读(10839) 评论(0) 推荐(1) 编辑

2013年11月17日

判别式模型 vs. 生成式模型

摘要: 1. 简介 生成式模型(generative model)会对\(x\)和\(y\)的联合分布\(p(x,y)\)进行建模,然后通过贝叶斯公式来求得\(p(y|x)\), 最后选取使得\(p(y|x)\)最大的\(y_i\). 具体地, \(y_{*}=arg \max_{y_i}p(y_i|x)=arg \max_{y_i}\frac{p(x|y_i)p(y_i)}{p(x)}=arg \max_{y_i}p(x|y_i)p(y_i)=arg \max_{y_i}p(x,y_i)\). 判别式模型(discriminative model)则会直接对\(p(y|x)\)进行建模. 关于二者之 阅读全文

posted @ 2013-11-17 02:28 潘的博客 阅读(20474) 评论(6) 推荐(2) 编辑

2013年11月13日

计算广告学-多点归因模型(Multi-Touch Attribution Model)

摘要: 计算广告学中的一个重要的问题是, 如果用户产生了一次转化(conversion, 比如购买, 注册等), 且该用户在转化之前看过大量不同频道(比如搜索, 展示, 社交等等)的广告, 那么我们如何确定是哪个(或)那些频道的广告导致的这次转化呢? 这就是归因(Attribution)问题, 如下图所示: 工业界采取的两种方法是“最后阅读获胜”(Last View Win)和“最后点击获胜”(Last Click Win), 前者会把转化归因于这个用户最后一次阅读的广告属于的频道, 后者会归因于最后一次点击的广告属于的频道(如果一直没有点击, 则归因于最后一次阅读的广告属于的频道). 以上两种方法. 阅读全文

posted @ 2013-11-13 00:05 潘的博客 阅读(7940) 评论(0) 推荐(1) 编辑

2013年11月11日

线搜索(line search)方法

摘要: 在机器学习中, 通常需要求某个函数的最值(比如最大似然中需要求的似然的最大值). 线搜索(line search)是求得一个函数\(f(x)\)的最值的两种常用迭代方法之一(另外一个是trust region). 其思想是首先求得一个下降方向,在这个方向上\(f(x)\)会下降, 然后是求得\(f(x)\)在这个方向上下降的步长. 求下降方向的方法有很多, 比如梯度下降, 牛顿方法和Quasi-Newton方法, 而步长可以是固定值, 也可以通过诸如回溯线搜索来求得. 1. 线搜索(line search) 线搜索是一种迭代的求得某个函数的最值的方法. 对于每次迭代, 线搜索会计算得到搜索的. 阅读全文

posted @ 2013-11-11 20:36 潘的博客 阅读(26410) 评论(0) 推荐(3) 编辑

2013年11月3日

Python-数据结构

摘要: 本文主要是对Python2.7.5官方文档的翻译.1. 把列表当做栈来使用 我们可以使用列表的append和pop两个方法来构造一个栈: 1 >>> stack = [3, 4, 5] 2 >>> stack.append(6) 3 >>> stack.append(7) 4 >>> stack 5 [3, 4, 5, 6, 7] 6 >>> stack.pop() 7 7 8 >>> stack 9 [3, 4, 5, 6]10 >>> stack.pop()11 6 阅读全文

posted @ 2013-11-03 11:04 潘的博客 阅读(920) 评论(0) 推荐(1) 编辑

2013年10月13日

优化算法-BFGS

摘要: BGFS是一种准牛顿算法, 所谓的"准"是指牛顿算法会使用Hessian矩阵来进行优化, 但是直接计算Hessian矩阵比较麻烦, 所以很多算法会使用近似的Hessian, 这些算法就称作准牛顿算法(Quasi Newton Algorithm). 1. 牛顿算法(Newton Algorithm) 牛顿算法考虑了函数的二阶单数, 是一种二阶优化方法, 并且是所有其他二阶优化方法的鼻祖. 作为对比, 梯度下降(Gradient Descent)只考虑了函数的一阶导数, 是一阶优化方法. 推导过程: 我们考虑函数的二阶泰勒展开式: \(\mathit{f_{quad}}(\m 阅读全文

posted @ 2013-10-13 01:11 潘的博客 阅读(20244) 评论(0) 推荐(4) 编辑

2013年10月1日

Sparse AutoEncoder简介

摘要: 1. AutoEncoder AutoEncoder是一种特殊的三层神经网络, 其输出等于输入:\(y^{(i)}=x^{(i)}\), 如下图所示: 亦即AutoEncoder想学到的函数为\(f_{W,b} \approx x\), 来使得输出\(\hat{x}\)比较接近x. 乍看上去学到的这种函数很平凡, 没啥用处, 实际上, 如果我们限制一下AutoEncoder的隐藏单元的个数小于输入特征的个数, 便可以学到数据的很多有趣的结构. 如果特征之间存在一定的相关性, 则AutoEncoder会发现这些相关性. 2. Sparse AutoEncoder 我们可以限制隐藏单元的个数... 阅读全文

posted @ 2013-10-01 23:42 潘的博客 阅读(4679) 评论(0) 推荐(0) 编辑

2013年9月28日

Sparse Filtering简介

摘要: 当前很多的特征学习(feature learning)算法需要很多的超参数(hyper-parameter)调节, Sparse Filtering则只需要一个超参数--需要学习的特征的个数, 所以非常易于进行参数调节.1.特征分布及其特性 基本上所有的参数学习算法都是要生成特定的特征分布, 比如sparse coding是要学得一种稀疏的特征, 亦即学到的特征中只有较少的非零项. 基本上所有的特征学习算法都是为了优化特征分布的某些特性的.Sparse Filtering也是这样的一种特征学习方法, 其目的是为了学到拥有一下特定特性的特征, 为了简洁, 首先定义一下符号表示, 令M为特征分布. 阅读全文

posted @ 2013-09-28 12:13 潘的博客 阅读(3276) 评论(0) 推荐(0) 编辑

2013年8月20日

基于受限玻尔兹曼机(RBM)的协同过滤

摘要: 受限玻尔兹曼机是一种生成式随机神经网络(generative stochastic neural network), 详细介绍可见我的博文《受限玻尔兹曼机(RBM)简介》, 本文主要介绍RBM在协同过滤的应用。1. 受限玻尔兹曼机简单介绍 传统的受限玻尔兹曼机是一种如下图所示, 其由一些可见单元(visible unit,对应可见变量,亦即数据样本)和一些隐藏单元(hidden unit,对应隐藏变量)构成,可见变量和隐藏变量都是二元变量,亦即其状态取{0,1}。整个网络是一个二部图,只有可见单元和隐藏单元之间才会存在边,可见单元之间以及隐藏单元之间都不会有边连接。 将该模型应用到协同过滤需. 阅读全文

posted @ 2013-08-20 10:36 潘的博客 阅读(8162) 评论(2) 推荐(1) 编辑

2013年8月19日

Grep学习笔记

摘要: Grep(Global search Regular Expression and Print out the line)是一种强大的文本搜索工具。1. 正则表达式的基本组成部分正则表达式描述^行首标记$行尾标记.任意一个字符[]包含在[]中的任意一个字符[^]不包含在[]中的任意一个字符[-][]指定范围内的任意一个字符?匹配之前的字符1次或0次+匹配之前的字符1次或多次*匹配之前的字符0次或多次()创建一个用于匹配的字符串{n}匹配之前的项n次{n,}匹配之前的项至少n次{n,m}匹配之前的项n-m次|匹配|两边的任意一项\对之前的字符进行转义,不转义则代表字符本身2. POSIX字符类相 阅读全文

posted @ 2013-08-19 16:19 潘的博客 阅读(871) 评论(0) 推荐(0) 编辑

导航