写博客的素材

写在前面:
Normalization:是指归一化,比如将数据集各个特征变换到0均值,单位方差的方法就是一种归一化
Regularization:是指正则化,一般用在损失函数中,防止出现过拟合

一、机器学习

1.1、机器学习算法

PCA 与SVD

最大方差理论
信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。因此我们认为,最好的 k 为特征既是将 n 维样本点转换为 k 维后,每一维上的样本方差都很大

降维当然意味着信息的丢失,不过鉴于实际数据本身常常存在的相关性,我们可以想办法在降维的同时将信息的损失尽量降低。
举个例子,假如某学籍数据有两列M和F,其中M列的取值是如何此学生为男性取值1,为女性取值0;而F列是学生为女性取值1,男性取值0。此时如果我们统计全部学籍数据,会发现对于任何一条记录来说,当M为1时F必定为0,反之当M为0时F必定为1。在这种情况下,我们将M或F去掉实际上没有任何信息的损失,因为只要保留一列就可以完全还原另一列。
当然上面是一个极端的情况,在现实中也许不会出现,不过类似的情况还是很常见的。例如上面淘宝店铺的数据,从经验我们可以知道,“浏览量”和“访客数”往往具有较强的相关关系,而“下单数”和“成交数”也具有较强的相关关系。这里我们非正式的使用“相关关系”这个词,可以直观理解为“当某一天这个店铺的浏览量较高(或较低)时,我们应该很大程度上认为这天的访客数也较高(或较低)”。后面的章节中我们会给出相关性的严格数学定义。
这种情况表明,如果我们删除浏览量或访客数其中一个指标,我们应该期待并不会丢失太多信息。因此我们可以删除一个,以降低机器学习算法的复杂度。


白化(whitening)


SVM


Normalization(标准化)的原因、方法和作用详解


K-Means 与 K-Medoids

K-Means聚类算法的优化方法是根据EM(Expectation-Maximization)推导而来,因此可以在学习完K-Means算法后学习EM算法来加深对K-Means算法的理解。
* http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html
* http://blog.pluskid.org/?p=17
* http://blog.pluskid.org/?p=40
* 刘新旺ppt lecture8.
* kmeans++算法


GMM(高斯混合模型)与EM(Expectation-Maximization)算法

统计学习的模型有两种,一种是概率模型,一种是非概率模型。
所谓概率模型,是指训练模型的形式是P(Y|X)。输入是X,输出是Y,训练后模型得到的输出不是一个具体的值,而是一系列的概率值(对应于分类问题来说,就是输入X对应于各个不同Y(类)的概率),然后我们选取概率最大的那个类作为判决对象(软分类–soft assignment)。所谓非概率模型,是指训练模型是一个决策函数Y=f(X),输入数据X是多少就可以投影得到唯一的Y,即判决结果(硬分类–hard assignment)。
所谓混合高斯模型(GMM)就是指对样本的概率密度分布进行估计,而估计采用的模型(训练模型)是几个高斯模型的加权和(具体是几个要在模型训练前建立好)。每个高斯模型就代表了一个类(一个Cluster)。对样本中的数据分别在几个高斯模型上投影,就会分别得到在各个类上的概率。然后我们可以选取概率最大的类所为判决结果。
从中心极限定理的角度上看,把混合模型假设为高斯的是比较合理的,当然,也可以根据实际数据定义成任何分布的Mixture Model,不过定义为高斯的在计算上有一些方便之处,另外,理论上可以通过增加Model的个数,用GMM近似任何概率分布。

注意:GMM假设各个高斯函数的变量的各个维度是相互独立的,比如说对于SIFT特征(128维),GMM要求这128维每个维度都是相互独立的。也就说GMM除了要求各个高斯函数相互独立外,还假设每个高斯函数的变量的各个维度之间之间是相互独立的。也就是说各个高斯函数的协方差矩阵除了对角线外都是零,说以一般认为每个高斯函数的协方差矩阵只有对角线元素几个变量。这也就是一般在将SIFT特征输入到GMM前需要先进行PCA进项降维的原因(去除特征向量内部的关联,使它们保持相互独立)。论文ImageClassification with the Fisher Vector: Theory and Practice中的一个实验就反应了这一点,一个没有经过PCA处理的FV的分类效果相对于经过PCA处理的FV要差很多。


判别模型、生成模型与朴素贝叶斯方法


ANN 算法:

每逢碰到这个ANN的简称,小白菜总是想到Artificial Neural Network人工神经网络,不过这里要展开的ANN并不是Artificial Neural Network,而是已被小白菜之前写过很多次的Approximate Nearest Neighbor搜索。虽然读书的那会儿,这一块的工作专注得比较多,比如哈希,也整理过一个像模像样的工具包hashing-baseline-for-image-retrieval,以及包括KD树、PQ乘积量化等近似最近邻搜索,但这些东西放在今天小白菜的知识体系里来看,依然自以为还非常的散乱。所以借再次有专研的机会之际,再做一次整理,完善自己在索引这方面的知识体系。

在具体到不同类的索引方法分类前,小白菜以为,从宏观上对ANN有下面的认知显得很有必要:brute-force搜索的方式是在全空间进行搜索,为了加快查找的速度,几乎所有的ANN方法都是通过对全空间分割,将其分割成很多小的子空间,在搜索的时候,通过某种方式,快速锁定在某一(几)子空间,然后在该(几个)子空间里做遍历。可以看到,正是因为缩减了遍历的空间大小范围,从而使得ANN能够处理大规模数据的索引。

根据小白菜现有的对ANN的掌握,可以将ANN的方法分为三大类:基于树的方法、哈希方法、矢量量化方法。这三种方法里面,着重总结典型方法,其中由以哈希方法、矢量量化方法为主。

基于树的方法

KD树是其下的经典算法。一般而言,在空间维度比较低时,KD树的查找性能还是比较高效的;但当空间维度较高时,该方法会退化为暴力枚举,性能较差,这时一般会采用下面的哈希方法或者矢量量化方法。

基于哈希的方法

LSH(Locality-Sensitive Hashing)是其下的代表算法。文献[7]是一篇非常好的LSH入门资料。 对于小数据集和中规模的数据集(几个million-几十个million),基于LSH的方法的效果和性能都还不错。这方面有2个开源工具FALCONN和NMSLIB。

矢量量化(Vector Quantization)的方法

在矢量量化编码中,关键是码本的建立和码字搜索算法。比如常见的聚类算法,就是一种矢量量化方法。而在相似搜索中,向量量化方法又以PQ(Product Quantization)方法最为典型。

对于大规模数据集(几百个million以上),基于矢量量化的方法是一个明智的选择,可以用用Faiss开源工具。

Product Quantization(乘积量化的方法)

图像检索的几种常用编码方法:

BoW (Bag of visual word)、VLAD (Aggregating local descriptors)以及FV (Fisher Vector)是三种非常经典的将局部特征表示成全局特征的编码方法,在图像检索领域,这图像检索领域,这三种编码方法是必须面对的三名剑客。下面是小白菜结合自己的理解,对这三种编码方法的原理和一些实践经验的总结。
* http://yongyuan.name/blog/CBIR-BoF-VLAD-FV.html

BOW (Bag of visual word):
VLAD (Aggregating local descriptors)
FV (Fisher Vector)

CNN(Convolutional Neural Network)

ImageNet和 ILSVRC比赛
OverFeat网络

独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别和联系

一天搞懂深度学习-学习心得

Fine-tuning教程

*吐血推荐:图像检索:layer选择与fine-tuning性能提升验证



1.2、图像处理

高斯滤波


SIFT特征



1.3、图像检索

图像检索综述



1.4、机器学习资料收集

大融合

机器学习各种数据集

与机器学习相关的会议及期刊截稿时间

深度学习课程

1、 吴恩达deeplearning.ai出品的deep learning课程听课有感
2、深度学习名校课程大全
3、 2017年8月都柏林城市大学深度学习研讨会

该研讨会包含了深度学习的各个方面,内容深入浅出,很不错,链接为:https://telecombcn-dl.github.io/dlmm-2017-dcu/

4、台湾大学 李宏毅老师深度学习和机器学习课程(2017年秋持续更新中)

1.5、机器学习框架学习

Digits安装和使用教程



二、Python

python的官方教程和翻译


pyc的作用


python的执行顺序和”if name == ‘main‘:”的功能


python引入模块时import与from … import的区别

  • http://www.cnblogs.com/xxoome/p/5880693.html
    在python用import或者from…import来导入相应的模块。模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中,我们就可以使用了。这类似于C语言中的include头文件,Python中我们用import导入我们需要的模块。
  • http://blog.csdn.net/windone0109/article/details/8996184
    在python用import或者from…import来导入相应的模块。模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中,我们就可以使用了。这类似于C语言中的include头文件,Python中我们用import导入我们需要的模块。
  • https://www.zhihu.com/question/38857862

Python Import机制-模块搜索路径(sys.path)、嵌套Import、package Import


python中包和模块的区别


python的类的定义:



三、工作环境配置

OpenCV的配置(关于完善CSDN博客中OpenCV配置的内容)


Ubuntu配置VNC

Zotero使用教程

Zotero及Docear联合使用

诸多文献管理软件的优劣比较如何?你有哪些使用心得? - 研之成理的回答 - 知乎

论文写作和文献管理工具使用相关系列教程

四、英语学习

6个月掌握流利的外语学习方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值