我正在研究和阅读一些使用SOM算法的论文。我不明白人们将他们的数据集分解为SOM的训练/测试集的逻辑。我的意思是,例如,当使用C4.5决策树时,经过训练的结构包括一些新的数据集(测试)来分类数据时应用的规则。但是,系统通过SOM进行培训后会生成什么样的规则或类似的规则?如果我将100%的数据应用于SOM系统,而不是30%先进行培训,然后再使用70%进行测试,那将会有什么不同呢?提前感谢您的回答。将数据分解为SOM中的培训/测试的原因是什么?
回答
对于每个与数据相关的系统(未来应该会暴露于新数据中),拿出部分现有数据来进行测试,可以强有力地预测它在部署后的预测方式。对于SOM,您将学习特定的数据嵌入。如果您将所有数据用于培训,并且稍后想要使用在数据前从未见过的训练好的SOM,则无法保证它将如何表现(这种表示对于任务的表现有多好)。拥有一个支持让你有能力在受控环境中测试这一点 - 你在部分数据上训练SOM表示,然后将其应用于嵌入保持(测试),它模拟“如果我得到新数据并希望使用会发生什么我的SOM“。这同样适用于每一种使用数据的算法,不管它是否受到监督,如果你打算根据这个模型部署某些东西,你需要一个测试集来建立你自己解决方案的信心。另一方面,如果您只是对“封闭”数据集进行探索性分析,那么无监督方法就可以简单地应用于所有数据(如果您只是问“这个特定数据集中的结构是什么)。”
看起来你不明白为什么SOM(无监督机器学习)应该像其他机器学习技术一样对待,因此您的陈述为:“......训练有素的结构包括一些新规则(测试)时应用的规则该数据有分类。”
一般来说,培训(包括SOM)的过程中,你的目标是最终 一组
final weights
(给我们你的话; “应用的规则为 ”)用于新的,以前未见过的数据集。训练集应该包含各种各样的功能,通常是您希望应用的数据类型的良好代表。
这将使final weights
尽可能准确和尽可能可靠。 至于“通过SOM训练系统后会产生什么样的规则或类似的东西?”final weights
组成将应用于SOM的任何新数据的“规则”。因此,SOM将根据其final weights
中的值给出结果。
将数据分解为训练和测试可帮助您在投入生产前获得训练有素的SOM性能的信心。
另一方面,测试集可以让您看到训练的SOM的表现如何。您将训练集的结果与测试集的结果进行比较。在申请并开始使用训练有素的SOM之前,这很重要。如果您发现训练集和测试集的结果差异很大,您应该查看训练集 - 可能在训练集中包含更多不同的特征。
简而言之,通过培训和测试集可以确保SOM在实施时的性能。如前所述here:
“......我们创建测试分区给我们提供诚实的评估我们的预测模型的性能 数学推理的没有量和操纵基础上, 训练数据的结果将是。说服一位有经验的观察员。“
- 1. 在MATLAB中监督SOM的培训
- 2. 我们是否需要将数据集划分为测试和培训?
- 3. 为什么在svmlight中培训和测试文件相同
- 4. 培训和测试分类文本文件的数据集
- 5. 培训和测试集拆分
- 6. 将完整列表划分为k折培训和测试集?
- 7. removeSparseTerms培训和测试集
- 8. 培训和测试数据结构:槌子分类器
- 9. 培训和测试集不是秧鸡
- 10. 在MATLAB中将数据拆分为训练/测试数据集?
- 11. libsvm中的大型培训和测试数据
- 12. randperm在训练和测试数据中的作用是什么?
- 13. 情绪分析的培训数据
- 14. 没有测试的咖啡培训
- 15. 从Android SensorManager中部分丢失数据的原因是什么?
- 16. SSAS数据挖掘:测试和培训数据集...请详细解释
- 17. 用于培训和测试的神经网络数据
- 18. 培训和测试数据的偏差图
- 19. 培训验证面部表情数据集的测试集拆分
- 20. Tensorflow分批培训数据批量
- 21. Python培训和测试错误
- 22. kNN:培训,测试和验证
- 23. LDA主题建模 - 培训和测试
- 24. 大数据中的CNN培训方法
- 25. 这个单元测试失败的原因是什么?
- 26. 结合培训,验证和测试数据集
- 27. 什么是训练和测试数据集
- 28. OPENCV haar培训期间出现此错误的原因?
- 29. tf.estimator的分布式培训导致更多的培训步骤
- 30. 将数据目录拆分为保存子目录结构的培训和测试目录