原文: https://machinelearningmastery.com/learning-vector-quantization-for-machine-learning/
K 最近邻的缺点是你需要坚持整个训练数据集。
学习向量量化算法(或简称 LVQ)是一种人工神经网络算法,可让您选择要挂起的训练实例数,并准确了解这些实例的外观。
在这篇文章中,您将发现学习向量量化算法。阅读这篇文章后你会知道:
- 实际保存到文件的 LVQ 算法使用的表示形式。
- 可用于使用已学习的 LVQ 模型做出预测的过程。
- 如何从训练数据中学习 LVQ 模型。
- 用于从 LVQ 算法获得最佳表现的数据准备。
- 在哪里可以找到有关 LVQ 的更多信息。
这篇文章是为开发人员编写的,并没有统计或数学方面的背景。该文章重点介绍了算法的工作原理以及如何将其用于预测性建模问题。
如果您对 LVQ 有任何疑问,请发表评论,我会尽力回答。
让我们开始吧。
学习机器学习的向量量化 摄影: Holly Victoria Norval ,保留一些权利。
LVQ 的表示是码本向量的集合。
LVQ 已经开发出来并且最好被理解为分类算法。它支持二进制(两类)和多分类问题。
码本向量是与训练数据具有相同输入和输出属性的数字列表。例如,如果您的问题是类 0 和 1 的二分类,以及输入宽度,长度高度,那么代码簿向量将包含所有四个属性:宽度,长度,高度和类。
模型表示是从训练数据中学习的固定的码本向量池。它们看起来像训练实例,但每个属性的值都是根据学习过程进行调整的。
在神经网络的语言中,每个码本向量可以被称为神经元,码本向量上的每个属性被称为权重,并且码本向量的集合被称为网络。
方便的机器学习算法思维导图的样本。
我已经创建了一个由类型组织的 60 多种算法的方便思维导图。
下载,打印并使用它。
使用 LVQ 码本向量以与 K 最近邻相同的方式做出预测。
通过搜索 K 个最相似的实例的所有码本向量并总结那些 K 个实例的输出变量,对新实例(x)做出预测。对于分类,这是模式(或最常见)类值。
通常,预测是在 K = 1 的情况下进行的,匹配的码本向量称为最佳匹配单元(BMU)。
为了确定训练数据集中的哪个 K 实例与新输入最相似,使用距离度量。对于实值输入变量,最流行的距离测量是欧几里德距离。欧几里德距离被计算为每个属性 j 的新点(x)和现有点(xi)之间的平方差之和的平方根。
EuclideanDistance(x,xi)= sqrt(sum((xj - xij)^ 2))
LVQ 算法从训练数据中学习码本向量。
您必须选择要使用的码本向量数,例如 20 或 40.您可以通过测试训练数据集上的不同配置找到要使用的最佳码本向量数。
学习算法以随机码本向量池开始。这些可以是来自训练数据的随机选择的实例,或者是与训练数据具有相同比例的随机生成的向量。码本向量具有与训练数据相同数量的输入属性。它们还有一个输出类变量。
训练数据集中的实例一次处理一个。对于给定的训练实例,从池中选择最相似的码本向量。
如果码本向量具有与训练实例相同的输出,则码本向量移动到更接近训练实例。如果不匹配,则会进一步移动。向量移动的量由称为 learning_rate 的算法参数控制。
例如,如果类匹配如下,则将码本向量的输入变量(x)移动到更接近训练输入值(t)的学习量中的量:
x = x + learning_rate *(t - x)
将码本变量的输入变量从训练实例移开的相反情况计算如下:
x = x - learning_rate *(t - x)
这将针对每个输入变量重复。
因为选择一个码本向量用于每个训练实例的修改,所以该算法被称为赢者通吃算法或一种竞争学习。
对训练数据集中的每个实例重复此过程。训练数据集的一次迭代称为迭代。该过程已完成您必须选择的多个时期(max_epoch),例如 200。
您还必须选择初始学习率(例如 alpha = 0.3)。学习率随着时期而减少,从您在时期 1 指定的大值开始,这对于码本向量进行最大的改变并且在最后一个时期以接近零的小值结束,从而对码本向量进行非常小的改变。
每个时期的学习率计算如下:
learning_rate = alpha *(1 - (epoch / max_epoch))
其中 learning_rate 是当前时期(0 到 max_epoch-1)的学习率,alpha 是在训练开始时为算法指定的学习率,而 max_epoch 是运行算法的时期总数,也是在跑步的开始。
学习过程的直觉是,码本向量池是将训练数据集压缩到最能表征类别分离的点。
一般来说,为 LVQ 准备数据是一个好主意,就像为 K 最近邻准备数据一样。
- 分类:LVQ 是一种分类算法,适用于二进制(两类)和多分类算法。该技术已适用于回归。
- 多次通过:LVQ 的良好技术涉及在码本向量上执行训练数据集的多次传递(例如,多次学习运行)。第一个具有较高学习率来解决池码本向量,第二个以较小的学习率来微调向量。
- 多个最佳匹配:LVQ 的扩展选择多个最佳匹配单元以在学习期间进行修改,例如分别针对和远离训练样本绘制的相同类和不同类之一。其他扩展使用每个码本向量的自定义学习率。这些扩展可以改善学习过程。
- 归一化输入:传统上,输入被归一化(重新缩放)到 0 到 1 之间的值。这是为了避免一个属性支配距离测量。如果输入数据被归一化,则可以选择码本向量的初始值作为 0 和 1 之间的随机值。
- 特征选择:可以减少输入变量维数的特征选择可以提高方法的准确率。 LVQ 在作为 K 最近邻做出预测时遭受同样的维度诅咒。
该技术由 Kohonen 开发,他编写了关于 LVQ 的开创性书籍和姐妹方法 Self-Organizing Maps,名为:自组织地图。
如果您对 LVQ 感兴趣,我强烈推荐这本书。
- 维基百科上的学习向量量化。
- 学习向量量化章节来自我的书“自然启发算法”。
- LVQ_PAK 由 Kohonen 负责 LVQ 的官方软件实现。
- LVQ 作为 WEKA (我多年前创建)的插件。
在这篇文章中,您发现了 LVQ 算法。你了解到:
- LVQ 的表示是一小部分码本向量,小于训练数据集。
- 码本向量用于使用与 K 最近邻相同的技术做出预测。
- 码本向量是从训练数据集中学习的,当它们匹配良好时将它们移近,当它们是不匹配时将它们移开。
- 码本向量是训练数据的压缩,以最好地分离类。
- 传统上,数据准备涉及将输入值标准化为 0 到 1 之间的范围。
您对此帖子或 LVQ 算法有任何疑问吗?发表评论并提出您的问题,我会尽力回答。