Image Classification: Data-driven Approach, k-Nearest Neighbor, train/val/test splits
关于KNN
首先讲Nearest Neighbor,然后扩展到KNN。就是将所有的training data映射到R维空间中,然后定义某种距离度量计算方法,比如L1、L2等等。然后将要predict的data依同样方法映射到该R维空间中,找出与该点距离最近的点,NN的话就找最近的一个点,KNN的话就由K个点投票决定。
KNN的优点在于简单易实现,并且train的时间复杂度是O(1),因为train的时候不需要任何计算,只是单纯的记住所有training data。但是,它的缺点也很突出,那就是它在predict的时候时间复杂度为O(N),因为需要计算predict点与所有train data的距离。这与我们期望的恰恰相反,因为我们可以接受长时间的训练过程,但是预测过程希望越快越好。KNN的另外一个缺点是,如果空间维度很高,即R很大的时候,如果要“填满”该R维空间,我们需要随R指数级增长的训练数据点。
L1/L2的选择
在notes里简单的提了一句:
In particular, the L2 distance is much more unforgiving than the L1 distance when it comes to differ