[分享] 《机器学习算法与实现 —— Python编程与应用实例》-- 第二贴 K最邻近算法

传媒学子   2024-7-15 00:48 楼主

引言:

本书第四章讲解了K最近邻算法,本算法在之前的ACM等算法设计大赛中也是比较常见的算法。

什么是K最近邻算法?

kNN(k-Nearest Neighbor)算法,是机器学习中最基础的算法之一,既能用于分类,又可用于回归。核心思想:通过度量给定样本到训练数据集中所有样本的特征距离,将与给定样本特征距离最近的k个样本中出现次数最多的类别指定为该样本最优估计的类别;

K最近邻原理:

分类问题中,对于一个新样本,可以根据距离最近的样本的类别来判断其所属的类别。因为k近邻算法主要依靠周围邻近的有限样本而非判别类别的方法来确定所属类别,所以对类别交叉或重叠较多的待分样本集,较其他方法来说更合适。

 

存在的问题:

样本不平衡时,会产生误判,可以通过加权(与样本距离短的邻居权重大)来改进。

仅适用于数据量少的情况,否则计算复杂度会过高。

 

特征距离计算:

机器学习中常见的距离度量有:曼哈顿距离,欧氏距离等。kNN算法中通常使用的欧氏距离

曼哈顿距离,也称为城市街区距离或出租车距离,是一种计算在标准坐标系上两点之间距离的方法,它表示两个点在南北方向上的距离加上在东西方向上的距离。这种距离的计算方式得名于规划为方形建筑区块的城市,如曼哈顿,其中最短的行车路径(忽略单向车道和特定大道的斜向车道)是通过南北方向和东西方向上的直线距离之和来确定的。

曼哈顿距离的计算公式为:http://www.w3.org/1998/Math/MathML">𝑑(𝑖,𝑗)=∣𝑋1−𝑋2∣+∣𝑌1−𝑌2∣d(i,j)=∣X1−X2∣+∣Y1−Y2∣,其中http://www.w3.org/1998/Math/MathML">(𝑋1,𝑌1)(X1,Y1)和(𝑋2,𝑌2)(X2,Y2)是二维平面上的两个点。这个公式直接反映了曼哈顿距离的定义,即两点在南北方向上的距离加上在东西方向上的距离。

 

曼哈顿距离的概念不仅来源于地理和城市规划,也与数学中的最值问题相关。它的产生是为了解决一类特定的数学问题,通过绝对值的几何意义和函数图像的角度来求解最小值。在计算机科学和数据分析中,曼哈顿距离常用于需要计算在网格状结构上点与点之间距离的场景,如图像处理、路径规划等。

此外,曼哈顿距离与欧几里得距离(即通常所说的直线距离)不同,后者是通过勾股定理计算两点之间的直线最短距离。曼哈顿距离的计算方式更直观地反映了在街道网络中行走的路径,因此也被称为“计程车几何”,因为在出租车行驶时,司机通常会选择直线行驶而不是走弯路以节省时间或距离。

欧氏距离:通常是指直线距离

二维平面的距离公式为:

image-20240715004800-1.png  

可推广到多维空间:

image-20240715004800-2.png  

 

算法实现:

本书利用python演示了从数据生成-算法实施-编程示例以及结果分析一整套kNN算法流程。

 

感悟:

通过kNN算法我们要明白一点,机器学习或者说人工智能算法的核心是数学,数学是人工智能的核心,编程只是人工智能实施的工具,而数据则是算法成长的必备食粮。年轻的朋友们如果想窥探人工智能的世界,请务必要学好数学,高等数学/线性代数/概率论以及研究生的解析几何等数学知识,否则我们只是一个操作工,而且是一个低等的操作工,想成为人工智能学科的科学家,数学是不能绕开的基础。

本帖最后由 传媒学子 于 2024-7-15 00:51 编辑

回复评论 (1)

通过kNN算法我们要明白一点,机器学习或者说人工智能算法的核心是数学,数学是人工智能的核心,编程只是人工智能实施的工具
点赞  2024-7-20 12:14
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复