使用KNN分类方法需要注意的问题

1、临近性用距离度量:比如欧几里得距离,两个点或者元组X_{1}(X_{11},X_{12},X_{13},X_{14}.......X_{1n})和X_{2}(X_{21},X_{22},X_{23},X_{24}.......X_{2n})d的距离是dist(x_{1},x_{2}) = \sqrt{ \sum(x_{1}-,x_{2})^{2}},换而言之,对于每个数值属性,取元祖,X_{2}

该属性对应值的差,取差的平方并累计,并取累计距离技术的平方根,通常在使用上述公式之前,要将每个属性进行规范化,这样有助于防止具有较大初始值域的属性(收入)比具有较小初始值域(如二元属性)的属性的权重过大。可以通过如下公式进行规范化,使用最小——最大规范化将数值属性A的值v变换到[0,1]之间的v^{'}=\frac{v-min_{a}}{max_{a}-min_{a}},min和max分别代表属性A中的最大值和最小值。另外一种标准化的方式是中心化处理

2、但是如果属性不是数值而是分类的(比如颜色),如何计算他们之间的距离,上面计算距离的方法主要是属性A的值都是数值型的,对于分类属性,一种简单的方法,是比较元组X_{1}X_{2}对应属性的值。如果二者相同,例如二者都是蓝色(X_{1}的属性值是蓝色,X_{2}的属性值是蓝色),则二者的之间的差值是0.如果二者去不同的颜色,(X_{1}的属性值是红色,X_{2}的属性值是蓝色)一个是蓝色,一个是红色,则二者之间的差为1。其他方法可能采用更复杂的方案(例如,对蓝色和白色赋予比蓝色和黑色更大的差值)

3、遇到缺失值的解决办法。假设X_{1}X_{2}对应属性A的值,假定每个属性值都被映射到[0,1]之间。对于分类变量(属性),X_{1}X_{2}中A属性对应的值如果一个或者两个缺失,就取差值为1。对于数值型,如果对应的X_{1}X_{2}都缺失,其差值取1.如果一个值缺失,而另一个存在并且已经规范化,则取差1-v^{'}和-v^{'}的绝对值的最大者。

4、k值得取值方法为了避免欠拟合和过拟合的问题,一般取值是在3~10之间。一种常见的做法就是设置k等于训练集中案例数量的平方根。另一种是基于各种测试集来测试多个k值,并选择一个可以提供最好分类性能的k值。

猜你喜欢

转载自blog.csdn.net/weixin_42099676/article/details/81437028