机器学习经典算法之KNN
KNN中文名K近邻,是机器学习经典算法之一,思想就是在特征空间(即一堆的样本数据)中前K个最相似的样本大多属于某一个类别,则要预测的目标就属于该类别
举例说明,小李在深圳大学后街的小吃街,但他由于不熟悉深圳,因此不清楚自己在深圳的哪个区,这时候他通过腾讯的刺激战场发现他附近有n多个游戏玩家,并且最关键的是每一个玩家都清楚自己在深圳的哪个区,这时候小李通过统计前100个玩家所在的区,发现他们可以分为5个类别,南山区33人,宝安区15人,福田区15人,罗湖区20人,龙岗区17人,这时他推断自己应该位于南山区。理由就是他所统计的100个人里面绝大多数都属于南山区,所以他推断自己属于南山区。
通过 这个例子发现,有几个很关键的信息:
- 怎么样去计算每个陌生人跟小李的距离
- 为什么要选前100个玩家,可不可以选前10个,可不可以选前1000个甚至10000个乃至更多
第一个问题:在游戏中不难得知小李跟其它玩家的距离,这个数据腾讯利用手机定位信息已经在游戏中给提供了,然而在预测其它数据的分类的情况下,怎样去计算这个距离呢,这时就要引入一个距离概念,叫做欧氏距离。欧式距离怎样计算呢?粗略介绍就是我们在初高中数学里学的平面直角坐标系求两点之间的距离,在空间直角坐标系求空间中的两个点的距离,只是高中没有引入这个欧式距离这个名称,但实质上是一样的,具体见链接。
第二个问题:为什么要选100,其实这个100也是随意选的,但是实际中,这个数值的选定十分重要,如果选的太小,比如说5个,恰好小李统计的数据大多都是在宝安区,仅有一个是在南山区,因为数据的问题,可能会导致出现预测错误,因为数据也是人统计的,可能会出现偶然性;那换句话说是不是这个数值选的越大越好呢,也不尽然,因为选的太大了,容易受到样本均衡的影响,预测的结果也会不准确,就比如硬币反转,统计10次,正反两面的可能性很难保持50%,但是统计数以百万次乃至更多,会发现,正反两面的概率越来越趋向于50%,所以这个数值的选定不是任选的,一般会试,比如选为10的时候,预测小李所在的区位,预测小王的区位,看预测是否正确,然后再选其它的数值,对比正确率情况,比如当选为100时,正确率相比于其它是最高的,那么可以选取此时的数值最为最优的。
浙公网安备 33010602011771号