一.问题提出
众所周知,电影可以按照题材分类,然而题材本身是如何定义的?怎么来判定某部电影属于哪个题材?动作片中也会存在接吻镜头,而爱情片中同样存在打斗场景,我们不能单纯依靠是否存在打斗或者亲吻来判断影片的类型。但是我们发现爱情片中的亲吻镜头更多,动作片中的打斗场景也更频繁,基于此类场景在某部电影中出现的次数,我们可以通过使用k-近邻算法构造程序,对电影进行分类。
二.K-近邻算法概述
简单来说,K-近邻算法采用不同特征值之间的距离方法进行分类。
优点:精度高、对异常值不敏感、无数据输入假定
缺点:计算量大,空间复杂度高,与决策树模型相比,KNN算法的可解释性不强
适用数据范围:数值型和标称型
三.K-近邻算法的工作原理
K-近邻算法(K-NearestNeighbor)的工作原理:对于一个新样本,K近邻算法的目的就是在已有数据中寻找与它最相似的K个数据,或者说是离它最近的K个邻居,并在这K个数据里进行统计,找到对应数据最多的类别,则该样本也属于这个类别。下面就以刚刚所提出的如何辨别动作片和爱情片为例,对KNN算法进行解释。
电影名称 | 打斗镜头 | 接吻镜头 | 电影类型 |
California Man | 3 | 104 | 爱情片 |
He‘s Not Really into Dudes | 2 | 100 | 爱情片 |
Beautiful Woman | 1 | 81 | 爱情片 |
Kevin Longblade | 101 | 10 | 动作片 |
Robo Slayer 3000 | 99 | 5 | 动作片 |
Amped ll | 98 | 2 | 动作片 |
? | 18 | 90 | 未知 |
在KNN算法中,我们采用欧式距离公式,计算出未知电影和已知电影的距离。