我们常说机器学习三大件:模型、损失函数、优化算法。
模型:线性回归、逻辑回归、SVM、CNN、RNN、LSTM、Transformer等等。
损失函数:均方误差、交叉熵、对比损失。
优化算法:梯度下降、Adam、RMSProp、牛顿法等等。
其中损失函数通过衡量模型预测值和真实值之间的距离来评估模型的好坏,并将结果反馈给优化算法来调整模型参数,以此来最小化损失函数。
常见的距离衡量包括:欧氏距离、曼哈顿距离、余弦相似度、KL散度等。
均方误差基于欧式距离、交叉熵基于KL散度、对比损失基于余弦相似度。
欧式距离在ML中是比较常用的,但它有个特点,就是假设所有特征之间是相互独立的,也就是它不会考虑特征之间相关性信息。
因此,如果特征是相关的,欧几里得距离将产生误导性的结果。例如,考虑下面的这个虚拟数据集:
很明显,特征之间是相关的,这里,考虑其中三个数据点P1,P2,P3。
根据数据分布,P2更接近P1,因为P1,P2都在分布内,而P3在分布外。
然而,如果根据欧式距离计算公式可得P2,P3与P1之间的距离是相等的。
马哈拉诺比斯距离(Mahalanobis distance)克服了这个缺点,它计算距离时考虑了数据分布信息。
前面的数据集,如果应用Mahalanobis distance,P2比P3距离P1更近。
它是如何工作的?
概括一下就是:它的目标是构建一个新的坐标系,新坐标系的各个轴之间是相互独立的,也就是相互正交。
具体步骤如下:
● 步骤 1:将列转换为不相关的变量。
● 步骤 2:对新变量进行缩放,使其方差等于 1。
● 步骤 3:在这个新的坐标系中找到欧几里得距离。
其中步骤1是通过对数据的协方差矩阵进行变换,使得新的变量之间没有线性相关性,类似于主成分分析(PCA)的思想,详细过程见附录。
虽然最终还是用到了欧式距离,但步骤1的变换已经使数据满足了欧式距离的假设。
Mahalanobis distance最重要的应用就是异常检测,例如,前面例子中的P3。
因为P1是分布的重心,如果欧式距离,P2,P3都不是异常值,用Mahalanobis distance结果就很明显了。
这在高维空间,没办法数据可视化式尤为有用。
附录:PCA主成分分析
假设我们有一个简单的二维数据集,其中包含两个特征
假设我们有以下样本:
从这些数据中,我们可以看到
步骤 1:计算协方差矩阵并进行变换
计算均值
我们先计算每个特征的均值:构建协方差矩阵
协方差矩阵衡量的是每对特征之间的线性相关性。假设我们得到以下协方差矩阵:
其中,矩阵中的每个元素代表对应的特征之间的协方差,非对角线元素表示
3.特征值分解
接下来我们对协方差矩阵进行特征值分解(Eigenvalue Decomposition),得到特征值和特征向量。假设我们得到以下特征向量和特征值:
4.转换变量
使用特征向量,我们可以将原始数据 转换为新的变量 ,这些新变量之间不再相关。转换的方式是通过特征向量进行线性变换:
这里,
在上面的例子中,X经过特征向量矩阵变换后维度没有变化,而在实际应用中,通常选择前k个特征值对应的特征向量,然后X投影到新的基上,这样新的特征不仅正交,而且还起到了降维的作用。