机器学习的数学基础(1)

本文介绍了几种常见的向量间距离度量方法,包括欧式距离、曼哈顿距离、切比雪夫距离及夹角余弦等,并提供了Python代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象是指含有一组特征的行向量,一个特征表示为矩阵中的一列。
1. 相似性度量

两个向量之间的距离(此时向量最为n维坐标系中的点)计算,在数学上称为向量的距离,也可以称为样本间的相似性度量,它反映某类事物在距离上接近或远离的程度。
在介绍向量间的各类距离公式前,先介绍下范数的概念:
范数:向量的范数可以简单理解为向量的长度,或者向量到坐标系原点的距离,或者相应空间内的两点之间的距离。
L1范数: ||x||为x向量各元素绝对值之和
L2范数:||x||2 为x向量元素平方和的开方,(又称作Euclidean范数或者Frobenius范数)
Lp范数:||x||p为x向量各个元素绝对值p次方和的1/p次方
L范数: ||x||为向量各个元素绝对值最大的那个元素

2. 各类距离的意义和Python实现

  • 闽可夫斯基距离

严格上来说,闽可夫斯基是一组距离:
两个n为变量A(x11,x12,....,x1n)B(x21,x22,....,x2n)间的闽可夫斯基距离为:

d12=k=1n(x1kx2k)pp

其中,当p=1时,为曼哈顿距离。p=2时,为欧式距离。p=无穷时,为切比雪夫距离
  • 欧式距离

欧式距离是最常见也是最容易理解的一类距离:
两个n为变量A(x11,x12,....,x1n)B(x21,x22,....,x2n)间的欧式距离为:

d12=k=1n(x1kx2k)2

表示为向量运算形式:
d12=(AB)(AB)T
  • 曼哈顿距离

曼哈顿距离:比如开车从一个街区到另一个街区,实际上走的距离就是曼哈顿距离(L1范数)。
两个n为变量A(x11,x12,....,x1n)B(x21,x22,....,x2n)间的曼哈顿距离为:

d12=k=1n|x1kx2k|
  • 切比雪夫距离

两个n为变量A(x11,x12,....,x1n)B(x21,x22,....,x2n)间的契比雪夫距离为:

d12=max|x1kx2k|

另一种等价形式:
d12=limk(i=1m|x1kx2k|k)1k
  • 夹角余弦

几何中的夹角余弦可以用来衡量两个方向向量之间的差异,在机器学习中借用这一概念来很衡量样本向量之间的差异。
在二维中,向量A(x1,y1)B(x2,y2)的夹角余弦:

cosθ=x1x2+y1y2x21+y21x22+y22

两个n为变量A(x11,x12,....,x1n)B(x21,x22,....,x2n)间的夹角余弦:
cosθ=AB|A||B|=nk=1x1kx2knk=1x21knk=1x22k

夹角余弦取值范围[-1, 1],夹角余弦越大,表示两个向量的夹角越小,两个向量距离越近。
#! usr/bin/env python
# -*- coding : utf-8 -*-
"""
相似性度量
范数: 简单来说范数了理解为向量的长度,或者向量到原点的距离,或者相应空间内两点之间的距离
各类距离:
闽可夫斯基距离、欧式距离、曼哈顿距离、切比雪夫距离、汉明距离、杰卡德相似系数
"""

import numpy as np

def E_Dist(X, Y):
    '欧式距离,输入为两个矩阵形式'
    # import numpy as np
    return np.sqrt((X - Y) * (X - Y).T)

def M_Dist(X, Y):
    '曼哈顿距离(L1范数), 如从一点开车去另一点的实际距离(街区距离)'
    return np.sum(np.abs(X - Y))

def C_Dist(X, Y):
    '切比雪夫距离(L无穷范数),两个n维点X(x_11, x_12,,,,x_1n) 和 Y , 切比雪夫距离:max(|x_1i - x_2i|)'
    return np.abs(X - Y).max()

def Cosin_Dist(X, Y):
    '夹角余弦'
    return np.sum(np.multiply(A, B))/(np.linalg.norm(X) * np.linalg.norm(Y)) # multiply矩阵点乘


if __name__ == '__main__':
    A = np.mat([1, 2, 3])
    B = np.mat([4, 7, 5])
    print('欧式距离: ',  E_Dist(A, B))
    print('曼哈顿距离: ', M_Dist(A, B))
    print('夹角余弦: ', Cosin_Dist(A, B))

输出:

欧式距离:  [[ 6.164414]]
曼哈顿距离:  10
夹角余弦:  0.929669680201
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值