为深入了解算法的细节,开始深入代码学习,计划把常见的机器学习算法亲自实现一遍,加深理解。虽然成熟的算法都有非常成熟而且高度优化了的库,但是,手动实现可以对算法有更清晰的认识。而且,大部分算法,工程实现经常无法完全与理论一致。例如在 Batch Normalization 中 test 的参数就是通过训练阶段的 moving average 来计算的,而不是重新跑一遍。
先从最简单的 KNN 开始。KNN 思想非常简单,当一个新的数据输入的时候,把该数据和训练集中的所有的数据比较一下,距离输入数据最近的一个训练样本所属类别就是该输入数据的预测值,这是 NN (最近邻) 算法。如果,把上述过程的最近的一个修改成最近的 k 个,然后这 k 个进行投票来决定预测结果,那么,这就是 kNN. 原理非常简单,实现起来也不难。