首页

K近邻法

发表于2017年02月27日 分类: statistical learning 标签: statistical learning

Table of Contents

  1. k近邻法
  2. k近邻法模型
    1. 模型
    2. 距离度量
    3. k 值选择
    4. 分类决策规则
  3. k近邻法的实现:kd树
    1. 构造kd树
    2. 搜索kd树

基本的分类和回归方法 输入:实例的特征向量,对应于特征空间中的点 输出:实例的类别 通过多数表决等方法进行预测,不具有显式的学习过程。 三要素:k值的选择、距离度量、分类决策规则

k近邻法

对于新的输入实例,在训练集上找到与该实例最邻近的k个实例,这k个实例的多数属于哪个类,就把该实例分类为这个类

算法

k近邻法模型

模型对应于对特征空间的划分,由三个基本要素:距离度量、k值选择、分类决策规则 决定。

模型

距离度量

欧式距离

k 值选择

k 值过小,模型复杂,容易发生过拟合;k 值过大,模型简单。

分类决策规则

多数表决规则, 经验风险最小化

k近邻法的实现:kd树

提高k近邻搜索的效率,减少距离计算的次数。

构造kd树

平衡的kd树的搜索效率未必是最优的。

构造平衡kd树:对于深度为j的结点,选择x(l)为切分的坐标轴,l = j(mod k) + 1, 以该结点区域所有实例的x(l)坐标的中位数为切分点,切分为两个子区域,直至子区域中没有实例存在。

搜索kd树

最近邻搜索:首先找到包含目标点的叶结点;依次回退到父结点;不断查询与目标点最近的结点,当确定不可能存在更近的结点时终止。

更多

Em算法及其推广

发表于2017年02月27日 分类: statistical learning 标签: statistical learning

Table of Contents

  1. EM算法的引入
    1. EM算法
    2. EM算法的导出
    3. EM算法在非监督学习中的作用
    4. EM算法的收敛性
  2. EM算法在高斯混合模型中的应用
    1. 高斯混合模型
    2. 高斯混合模型参数估计的EM算法
  3. EM算法的推广
    1. F函数的极大-极大算法
    2. GEM算法

EM算法及其推广用于含有隐参数的概率模型参数的极大似然估计,或极大后验概率估计。 迭代由两步组成: E步:求期望 M步:求极大

EM算法的引入

最大似然估计需满足一个重要假设:采样是独立同分布的 最大后验概率估计:与最大似然估计类似,但最大的不同是最大后验概率估计融入了要估计量的先验分布在其中。故最大后验概率估计可以看做规则化的最大似然估计。

EM算法

定义Q函数: 完全数据的对数似然函数 2017-2-27-EM算法及其推广_4fbb201e0fbbc0b351773a31475404c2fbf994cc.png关于在给定观测数据Y和当前参数 2017-2-27-EM算法及其推广_1f58ffbe3fae65b88a2efe5f39fc0c6e514cd4de.png 下对未观测数据Z的条件概率的期望称为Q函数, 即 2017-2-27-EM算法及其推广_8ada9c677029cf51d67d1d1645a7f00f9688010d.png

EM算法与选取的初值有关,选择不同的初值得到不同的参数估计值。 EM算法 输入:观测变量数据值Y,隐变量数据Z,联合分布 2017-2-27-EM算法及其推广_b255fb7a6e65ec80a940f3af4dbef14c0e0900d3.png, 条件分布 2017-2-27-EM算法及其推广_0416a8f3db760df5ee9ceb883b482a18e38e0b96.png 。 输出:模型参数 2017-2-27-EM算法及其推广_83b2145fa35bdfdb4340a99f2df5183adcc79e34.png (1)选择参数 2017-2-27-EM算法及其推广_91e72f7b0cb1f8fc8ebeb0219014028b98e0e7a4.png , 开始迭代 (2)E步:记 2017-2-27-EM算法及其推广_3ab3f18ce9983c49e139f8362c89a74e9b182f45.png 为第i次迭代参数 2017-2-27-EM算法及其推广_83b2145fa35bdfdb4340a99f2df5183adcc79e34.png 的估计值,在第i+1次迭代的E步,计算 2017-2-27-EM算法及其推广_4f5964d4b0d544507a5a67a6606b328f8b39f5da.png 2017-2-27-EM算法及其推广_80817cbf2b892b871982263ab3666e153906d499.png (3)M步:求使 2017-2-27-EM算法及其推广_5746d75eac3f4b928a60a099241253f5db110bc4.png 极大化的 2017-2-27-EM算法及其推广_83b2145fa35bdfdb4340a99f2df5183adcc79e34.png,确定第i+1次的估计值2017-2-27-EM算法及其推广_9c365d1cc2cfd27337bb8fa6b5672ec293cd3815.png 2017-2-27-EM算法及其推广_e1fa00686472df14f6b6d6d0a9bf17871d539932.png (4)重复第(2)步和第(3)步,直到收敛。 第二步中的Q函数是EM算法的核心。

EM算法的导出

通过近似求解观测数据的对数似然函数的极大化问题来导出EM算法。看出EM算法的作用。 EM算法通过不断求解下界的极大化逼近求解对数似然函数极大化,不能保证找到全局最优值。

EM算法在非监督学习中的作用

EM算法可以用于生成模型的非监督学习。生成模型由联合概率分布P(X,Y)表示,可以认为非监督学习训练数据是联合分布产生的数据,X是观测数据,Y是未观测数据。

EM算法的收敛性

定理:设 2017-2-27-EM算法及其推广_5fcbd0cedee248b3de9a16abf8a61b36cb79f51f.png 为观测数据的似然函数, 2017-2-27-EM算法及其推广_baec25989778087fca88d7c3f657e4e65943849f.png 为EM算法得到的参数估计序列, 2017-2-27-EM算法及其推广_3166b4b99a219091370261e3d98867950f65d688.png 为对应的似然函数序列,则 2017-2-27-EM算法及其推广_a640b7909c36820f682d176fb34261b67cb6f336.png 是单调递增的。

定理:…. 定理只能保证参数估计序列收敛到对数似然函数序列的稳定点,不能保证收敛到极大值点。 常用方法是选取几个不同的初值进行迭代,然后从得到的各个估计值加以比较,从中选择最好的。

EM算法在高斯混合模型中的应用

EM算法的一个重要应用:高斯混合模型的参数估计

高斯混合模型

高斯混合模型: 2017-2-27-EM算法及其推广_aa651267b16ad43f99f6850d55feeebd93fb49ae.png 其中,2017-2-27-EM算法及其推广_cd15ac83dcf6b62575ebb5f1df064eb0147ec9af.png 是系数, 2017-2-27-EM算法及其推广_803f205a9172efcbcf25bbb405c0404ceb46bc27.png 是高斯分布密度

高斯混合模型参数估计的EM算法

1.明确隐变量,写出完全数据的对数似然函数 隐变量:反映观测数据 2017-2-27-EM算法及其推广_8967da7d6868648145a80d2609472dd26a8b55e5.png 来自第k个分模型的未知数据,记为 2017-2-27-EM算法及其推广_43316877b648d039b610f5da91db9435b7cec512.png 观测数据: 2017-2-27-EM算法及其推广_8967da7d6868648145a80d2609472dd26a8b55e5.png 未观测数据 2017-2-27-EM算法及其推广_43316877b648d039b610f5da91db9435b7cec512.png 完全数据的似然函数: 2017-2-27-EM算法及其推广_5f8bc90906eff01a3d9665a2315f0dc901ef62d7.png

2.EM算法的E步,确定Q函数 2017-2-27-EM算法及其推广_496b87568cdb5b0e02d0b502081601b6e6b33a3f.png
计算 2017-2-27-EM算法及其推广_37173b4bab820b2e19b9075654894595dfe1e983.png 当前模型的第j个观测数据来自第k个分模型的概率, 记为 2017-2-27-EM算法及其推广_aac74fc581ede213a64a37f5d0b049514164b408.png

3.确定EM算法的M步。 用 2017-2-27-EM算法及其推广_a29a9b6e7d6d5da5d2782454f167e7b8ef135c22.png , 2017-2-27-EM算法及其推广_5d3ac290b9fcc877a77a0e76f8e5200da9736a89.png2017-2-27-EM算法及其推广_51402c155e2f0cbc62190e5a118d78a4bbdbd089.png 表示 2017-2-27-EM算法及其推广_d884a16a96f27a624169fc2e8fc9f980e5ffdd22.png 的各参数,通过偏导数为0求的值。 重复上述过程,直至对数似然函数不再有明显变化。

EM算法的推广

EM算法还可以解释为F函数的极大-极大算法,基于这个解释有若个变形和推广 GEM

F函数的极大-极大算法

定义: 隐变量数据Z的概率分布为 2017-2-27-EM算法及其推广_195c13c9cd26d952b1b7b713b865e6324544d20e.png ,定义分布 2017-2-27-EM算法及其推广_0e1cd618a00d27e4cd0102e9845773701317100a.png 与参数 2017-2-27-EM算法及其推广_83b2145fa35bdfdb4340a99f2df5183adcc79e34.png 的函数 2017-2-27-EM算法及其推广_d7abed1d18248d49f6c3b95c0accc7d9c63ec647.png 如下: 2017-2-27-EM算法及其推广_43f0d49a7e3421230d19334ddca8a6493815c539.png 称为F函数, 式中 2017-2-27-EM算法及其推广_3a81c4c9d32c8a5f02f657ba2d15dcf1871b2451.png 是分布 2017-2-27-EM算法及其推广_195c13c9cd26d952b1b7b713b865e6324544d20e.png 的熵。

EM算法的一次迭代可由F函数的极大-极大算法实现 (1) 对固定的 2017-2-27-EM算法及其推广_3ab3f18ce9983c49e139f8362c89a74e9b182f45.png ,求 2017-2-27-EM算法及其推广_91abf3cda096def3ab2b270bbc577b254f6abd6f.png ,使得 2017-2-27-EM算法及其推广_055d11f46041ba1af9f8faf543bccad0eb79ad91.png 最大化。 (2) 对固定的 2017-2-27-EM算法及其推广_91abf3cda096def3ab2b270bbc577b254f6abd6f.png ,求 2017-2-27-EM算法及其推广_9c365d1cc2cfd27337bb8fa6b5672ec293cd3815.png ,使得 2017-2-27-EM算法及其推广_476c59c63dc6ef07073041951bbf997bf1c9c171.png 最大化。

GEM算法

GEM算法1: EM算法的F函数方法表达 GEM算法2: 并不直接求极大,而是找到一个 2017-2-27-EM算法及其推广_83b2145fa35bdfdb4340a99f2df5183adcc79e34.png 使函数值变大。 GEM算法3: 参数 2017-2-27-EM算法及其推广_83b2145fa35bdfdb4340a99f2df5183adcc79e34.png 的维数d>=2时,将M步分解为d次条件极大化。

更多

Pspnet

发表于2017年01月20日 分类: image segmentation 标签: deep learning image segmentation scene parsing

architecture

pyramid scene parsing network
resnet(extract feature) + pyramid pooling module + fcn + deeply supervised loss

overview of pspnet

overview

更多

图像分类网络

发表于2016年03月01日 分类: feature extraction 标签: feature extraction

LeNet-5 1998

conv-5 max pooling 2*2 2
[CONV-POOL-CONV-POOL-CONV-FC]

AlexNet 2012

simplified AlexNet architecture.
[CONV-POOL-NORM-CONV-POOL-NORM-CONV-CONV-CONV-POOL-FC-FC-FC]

VGGNet 2014

only 3*3 CONV stride 1 pad 1 , and 2*2 MAX POOL stride 2

GoogleLeNet 2014

inception module.

ResNet 2015

Revolution of Depth 152 layer.
faster than a VGGNet. Even though it has 8x more layers.

Typical architectures look like
[(CONV-RELU)*N-POOL?]*(FC-RELU)*K, SOFTMAX.
ResNet/GoogleLeNet chanllenge this paradigm.

更多

Sift

发表于2016年03月01日 分类: feature extraction 标签: feature extraction

Scale-invariant feature transform 尺度不变特征变换

检测和描述局部点特征,在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量。
用不同尺度(标准差)的高斯函数对图像进行平滑,然后比较平滑后图像的区别。

包换5个步骤:
1.构建尺度空间,检测极值点,获得尺度不变性。
2.特征点过滤并进行精确定位,剔除不稳定的特征点。
3.在特征点处提取特征描述符,为特征点分配方向。
4.生成特征描述子,利用特征描述符寻找匹配点。
5.计算变换参数。

更多

Lstm&rnn

发表于2016年03月01日 分类: sequence learning 标签: sequence learning deep learning

(vanilla) Recurrent Neural Network



LSTM(长短期记忆人工神经网络)

是一种时间递归神经网络(RNN),适用于处理和预测时间序列中间隔和延迟比较长的重要事件。
四个S函数单元
input、forget、output.
输入信息、忘记信息、输出信息


LSTM

更多

Bag Of Words

发表于2016年03月01日 分类: nlp 标签: nlp

bag-of-words(BOW)

信息检索领域常用的文档表示方法。
构造字典,统计每个单词出现的次数,形成文档向量。
缺点:未表示出单词的次序关系。

将BOW应用于图像表示。

(1)特征检测
利用SIFT算法提取视觉词汇

(2)单词表的构造
利用K-Means算法(基于样本间相似性度量的间接聚类方法) 将词性相近的词汇合并,作为单词表中的基本词汇。

(3)利用单词表中的词汇表示图像。
从图像中提取特征点,用单词表中的单词近似代替,统计词频。

更多

Effective c++

发表于2016年02月04日 分类: c++ 标签: c++

让自己习惯C++

Rule 01: 视c++为一个语言联邦

次语言:c、Object-Oriented c++、Template C++、 STL

Rule 02: 尽量以const、enums、inline 代替 #define

编译器代替预处理器
/#define 不重视定义域,不提供封装性

enum{NumTurns = 5};  //"the enum hack" 

tempplate<typename T>
inline void callWithMax(const T&a, const T& b){
	f(a>b ? a : b); // f:调用函数
}

Rule 03: 尽可能地使用const

const 出现在号左边,被指物为常量, 出现在号右边,指针自身为常量
const_iterator
令函数返回一个常量值,降低因客户错误而造成的意外,而又不至于放低安全性和高效性。

Rational a, b, c;
if(a*b = c) //comparison error

将某些东西声明为const 可帮助编译器检测出错误语法
令non-const 版本调用const版本可以避免代码重复。

Rule 04: 确定对象被使用前已先被初始化

使用成员初始化列表来代替赋值操作。
设为default,成员初始化列表指定为空。

C++成员初始化次序
base classes > derived class
class 成员变量以声明的次序被初始化

晦涩错误:成员变量的初始化带有次序性,例:array 指定大小

C++对于定义在不同文件中的non-local static 对象的初始化顺序没有明确的顺序。
解决方法:通过函数调用(返回一个reference指向local static)代替non-local static的访问。

构造/析构/赋值运算

Rule 05: 了解C++默默编写并调用了哪些函数

class Empty{};
//is the same as
class Empty{
public:
	Empty(){...};                        //default 构造函数
	~Empty(){...};                       //析构函数
	Empty(const Empty& rhs){...};        //copy函数
	Empty &operator =(const Empty& rhs){...};      //copy assignment
}

Rule 06: 若不想使用编译器自动生成的函数,就该明确拒绝

class Uncopyable{
protected:
	Uncopyable(){};
	~Uncopyable(){};
private:
	Uncopyable(const Uncopyable&)
	Uncopyable & operator =(const Uncopyable &);
}

class HomeForSale: private Uncopyable{
}

Rule 07:为多态基类声明virtual析构函数

当derived class 对象经由一个base class 指针被删除,而该base class 带有一个non-virtual 析构函数,其结果未有定义,实际执行时通常发生的是对象的derived 成分没有被销毁。造成资源泄露、败坏的数据结构等。
若class不含virtual函数,意味着不是一个base class,不应将析构函数设为virtual。
实现virtual函数对象需要实现vptr,与其它语言不再具有移植性。
std::string 的析构函数是non-virtual。
不要企图继承标准容器或者带有non-virtual析构函数的class。
pure virtual 函数导致abstract classes。不能被实体化。
析构函数的运作方式:最深层的class的析构函数最先被调用。然后是其每一个上层的base class。

Rule 08:别让异常逃离析构函数

析构函数绝对不要吐出异常。如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕捉异常并吞下或者结束程序。
如果需要对异常做出反应,那么应该提供一个普通函数执行该操作。

Rule 09:绝不在构造和析构函数中调用virtual函数

会带来意想不到的结果。与java和c#不同的地方。
调用virtual函数会下降到derive class 阶层。使用对象内部尚未初始化部分=危险

Rule 10:令operator= 返回一个 reference to *this

Rule 11: 在operator=中处理“自我赋值”

Widget& Widget::operator=(const Widget& rhs){
	Widget tmp(rhs);
	swap(rhs, tmp);
	return *this;
}

Rule 12:复制对象时勿忘其每一个成分

为derive class 撰写copy 函数时要复制其base class 成分。那些成分往往是private,应调用base class 相应的函数进行复制。

不要尝试以某个copying函数实现另一个copying函数,应该将共同的机能放在第三个函数中。

资源管理

Rule 13:以对象管理类型资源

void f()
{
	std::auto_ptr<Investment> pInv(createInvestment());
	...
}

RAII
获得资源后立即放进管理对象。
管理对象运行析构函数确保资源释放。

auto_ptr被销毁时自动删除它的所指之物,勿让多个auto_ptr指向同一个对象。对象被删除多次 = 未定义行为

auto_ptr不寻常的性质:通过copy、copy assignment 复制他们,它们会变成null,而复制所得的指针将取得资源的唯一拥有权。

引用计数型智慧指针

void f()
{
	...
	std::tr1::share_ptr<Investment> pInv(createInvestment());
	...
}

在c++11引入share_ptr

Rule 14:在资源管理类中小心copy行为

Rule 15:在资源管理类中提供对原始资源的访问

Rule 16:成对使用new 和delete时要采取相同形式

待续….

更多

关于我

发表于2015年10月23日 分类: about 标签: 关于

aovoc

来自胡建,身在浙江上学的小小码农。

我的Github地址:aovoc

更多