机器学习中的度量——字符串距离

??????机器学习是时下流行AI技术中一个很重要的方向,无论是有监督学习还是无监督学习都使用各种“度量”来得到不同样本数据的差异度或者不同样本数据的相似度。良好的“度量”可以显著提高算法的分类或预测的准确率,本文中将介绍机器学习中各种“度量”,“度量”主要由两种,分别为距离、相似度和相关系数,距离的研究主体一般是线性空间中点;而相似度研究主体是线性空间中向量;相关系数研究主体主要是分布数据。本文主要介绍字符串距离。

1 汉明距离——等长字符串对应位置差异

??????在信息论中,两个等长字符串之间的汉明距离(Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。

??????汉明重量是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是1的个数,所以11101的汉明重量是4。例如:

??????1017101与1007001之间的汉明距离是2
??????9143896与9233796之间的汉明距离是3。
??????karolin与kathrin之间的汉明距离是3。

??????如图1给出了汉明距离几何意义,所示任意两个顶点之间的最小距离是两个二进制字符串之间的汉明距离。

图1 汉明距离的几何意义

??????汉明距离是以理查德·卫斯里·汉明的名字命名的,汉明在误差检测与校正码的基础性论文中首次引入这个概念。在通信中累计定长二进制字中发生翻转的错误数据位,所以它也被称为信号距离。汉明重量分析在包括信息论、编码理论、密码学等领域都有应用。但是,如果要比较两个不同长度的字符串,不仅要进行替换,而且要进行插入与删除的运算,在这种场合下,通常使用更加复杂的编辑距离等算法。下面介绍另一个常用的字符串距离——编辑距离。

2 编辑距离——一个串变为另一个串的距离

??????编辑距离是针对二个字符串(例如英文字)的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串,处理只包括插入一个字符、删除一个字符、新增一个字符。编辑距离可以用在自然语言处理中,例如拼写检查可以根据一个拼错的字和其他正确的字的编辑距离,判断哪一个(或哪几个)是比较可能的字。以下为编辑距离的例子
"kitten" and "sitting"的编辑距离是3,这是因为:

??????第一次处理:kitten → sitten (替换一个字符,"s" 替换了 "k")

??????第二次处理:sitten → sittin (替换一个字符, "i" 替换了 "e")

??????第三次处理:sittin → sitting (插入一个字符, 字符串末尾插入了 "g").

??????那么编辑距离如何计算了?假定函数dist(A, B)表示字串A转变到字串B的编辑距
离,那么对于下面3种极端情况,我们很容易给出解答(NULL表示空串)。

??????dist(NULL, NULL) = 0
??????dist(NULL, s) = s的长度
??????dist(s, NULL) = s的长度

??????对于一般的情况,dist(A, B)我们应该如何求解呢?假定我们现在正在求解dist(A+c1, B+c2),在这里A和B是字符串,c1和c2都是字符。dist(A+c1, B+c2)也就是把"A+c1"转变成"B+c2"。在这个转变过称中,我们要分情况讨论:

(1) A可以直接转变成B。这时我们只要把c1转成c2就可以了(如果c1 != c2)。

(2) A+c1可以直接转变成B。这时我们处理的方式是插入c2。

(3) A可以直接转成B+c2。这时的情况是我们需要删除c1。

??????综合上面三种情况,dist(A+c1, B+c2)应该是三者的最小值。因此我们可以定义这样一个函数——edit(i, j),它表示第一个字符串的长度为i的子串到第二个字符串的长度为j的子串的编辑距离。显然可以有如下动态规划公式:

??????if i = 0 且 j = 0,edit(i, j) = 0
??????if i = 0 且 j > 0,edit(i, j) = j
??????if i > 0 且j =0,edit(i, j) = i
??????if i ≥ 1 且 j ≥ 1, 若A第i个字符等于B第j个字符edit(i, j)=min{edit(i-1, j) + 1, edit(i, j-1) + 1, edit(i-1, j-1)};否则edit(i, j)=min{edit(i-1, j) + 1, edit(i, j-1) + 1, edit(i-1, j-1) + 1}。

??????结合"kitten" and "sitting"可得图2编辑距离矩阵,矩阵右下角数值就是两个字符串编辑距离。

图2 kitten和sitting编辑距离矩阵

原文地址:https://www.cnblogs.com/Kalafinaian/p/10992023.html

时间: 2024-10-09 18:59:00

机器学习中的度量——字符串距离的相关文章

机器学习中的度量——统计上的距离

??????机器学习是时下流行AI技术中一个很重要的方向,无论是有监督学习还是无监督学习都使用各种"度量"来得到不同样本数据的差异度或者不同样本数据的相似度.良好的"度量"可以显著提高算法的分类或预测的准确率,本文中将介绍机器学习中各种"度量","度量"主要由两种,分别为距离.相似度和相关系数,距离的研究主体一般是线性空间中点:而相似度研究主体是线性空间中向量:相关系数研究主体主要是分布数据.本文主要介绍统计上的距离. 1 马

机器学习中的度量——相关系数

??????机器学习是时下流行AI技术中一个很重要的方向,无论是有监督学习还是无监督学习都使用各种"度量"来得到不同样本数据的差异度或者不同样本数据的相似度.良好的"度量"可以显著提高算法的分类或预测的准确率,本文中将介绍机器学习中各种"度量","度量"主要由两种,分别为距离.相似度和相关系数,距离的研究主体一般是线性空间中点:而相似度研究主体是线性空间中向量:相关系数研究主体主要是分布数据.本文主要介绍相关系数. 1 皮尔逊

机器学习中的距离度量

在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance).采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否. 本文的目的就是对常用的相似性度量作一个总结. 本文目录: 1. 欧氏距离 2. 曼哈顿距离 3. 切比雪夫距离 4. 闵可夫斯基距离 5. 标准化欧氏距离 6. 马氏距离 7. 夹角余弦 8. 汉明距离 9. 杰卡德距离 & 杰卡德相似系数 10. 相关系数 & 相关距离

ML 07、机器学习中的距离度量

机器学习算法 原理.实现与实践 —— 距离的度量 声明:本篇文章内容大部分转载于July于CSDN的文章:从K近邻算法.距离度量谈到KD树.SIFT+BBF算法,对内容格式与公式进行了重新整理.同时,文章中会有一些对知识点的个人理解和归纳补充,不代表原文章作者的意图. 1. 欧氏距离 欧氏距离是最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,如点 $x = (x_1,\cdots,x_n)$ 和$y = (y_2,\cdots,y_n)$之间的距离为: $$

【转载】机器学习中的相似性度量,方法汇总对比

机器学习中的相似性度量,方法汇总对比 人工智能  林  1周前 (01-10)  876℃  0评论 作者:苍梧 在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance).采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否. 本文的目的就是对常用的相似性度量作一个总结. 本文目录: 1. 欧氏距离 2. 曼哈顿距离 3. 切比雪夫距离 4. 闵可夫斯基距离 5. 标准化欧氏距离 6. 马

机器学习中的相似性度量

在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的"距离"(Distance).采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否. 本文的目的就是对常用的相似性度量作一个总结. 本文目录: 1. 欧氏距离 2. 曼哈顿距离 3. 切比雪夫距离 4. 闵可夫斯基距离 5. 标准化欧氏距离 6. 马氏距离 7. 夹角余弦 8. 汉明距离 9. 杰卡德距离 & 杰卡德相似系数 10. 相关系数

机器学习中的相似性度量(Similarity Measurement)

机器学习中的相似性度量(Similarity Measurement) 在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance). 采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否.在其他领域也经常见到它的影子, 现在对常用的相似性度量作一个总结. 目录: 1. 欧氏距离 2. 曼哈顿距离 3. 切比雪夫距离 4. 闵可夫斯基距离 5. 标准化欧氏距离 6. 马氏距离 7. 夹角余弦

机器学习中的相似性度量(转载)

在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的“距离”(Distance).采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否. 本文的目的就是对常用的相似性度量作一个总结. 本文目录: 1. 欧氏距离 2. 曼哈顿距离 3. 切比雪夫距离 4. 闵可夫斯基距离 5. 标准化欧氏距离 6. 马氏距离 7. 夹角余弦 8. 汉明距离 9. 杰卡德距离 & 杰卡德相似系数 10. 相关系数 & 相关距离

机器学习中的数据清洗与特征处理综述

背景 随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多,这些数据是美团做为一个团购平台最宝贵的财富.通过对这些数据的分析和挖掘,不仅能给美团业务发展方向提供决策支持,也为业务的迭代指明了方向.目前在美团的团购系统中大量地应用到了机器学习和数据挖掘技术,例如个性化推荐.筛选排序.搜索排序.用户建模等等,为公司创造了巨大的价值.本文主要介绍在美团的推荐与个性化团队实践中的数据清洗与特征挖掘方法.主要内容已经在内部公开课"机器学习InAction系列"讲过,本博客的内容主要是