背景
一直在搞高维数据检索,研究成果没出多少,爱钻牛角尖。时间长了,发现连基本的解决问题的能力都没有了。视野太狭窄,所以决定到kaggle上恶补一番。
Digit Recognition是一个最基本的手写识别问题,是对数字[0-9]手写的识别。共有42000份训练样本,28000份待识别样本。
kNN初步尝试
先提交第一份结果建立自信吧。感谢wepon_的kaggle入门帖的启发。原来自己一直在研究的k近邻(k nearest neighbor, kNN)查询技术竟然可以直接用于解该问题。
原理:
- 将每个28 x 28的图像转化成784维的向量,直接作为该图像的特征向量,这是最简单的特征向量构建方案
- 如果两份图像表示的内容相似,则两幅图像特征向量的距离(我用的是欧式距离)就会很小
- 因此,将42000份训练图像作为kNN查询的基本数据集(baseset),28000份图像作为kNN的查询集合(queryset),为每个查询向量在baseset中搜索