matlab - 分类(LDA)函数的作用是什么?

标签 matlab machine-learning classification lda test-data

我正在研究机器学习并使用 LDA 作为起点。我正在关注 MatLab 自己的 LDA 分类教程 ( Here )。

他们使用的是 Fisheriris 数据集,该数据集已在 Matlab 中提供,并且可以轻松加载。在教程中,他们使用这一行进行分类:

ldaClass = classify(meas(:,1:2),meas(:,1:2),species);

我知道:

classify trains a classifier based on the training data and labels (second and third argument), and applies the classifier to the test data (first argument) and ldaClass gives the classes chosen for the test data points, based on the classifier that has been trained using the training data points and labels

那么提供给分类器进行训练的相同数据也用于测试?

我对监督学习的理解是,一旦使用训练集训练了系统,就应该使用未知样本进行测试以测试其预测。如果给它一个训练集中的测试样本,那么它应该能够正确地对其进行分类。对吗?

那么当使用相同的样本进行训练和测试时,classify 是如何错误分类 20% 的标签的呢?

要么 LDA 是一个非常差的分类器,要么我没有完全理解这里的概念。请帮帮我。

最佳答案

你是对的,在现实世界中,最佳实践是在一个样本上训练分类器并在另一个样本上评估它 - 而且如果你在训练样本上评估分类器,这会给你带来偏见对分类器准确性的(过度乐观)估计。

但是,您正在阅读的教程试图教您在应用分类时使用的正确语法,而不是试图教您统计学习的最佳实践。请注意,本教程对此相当明确 - 它强调它计算的错误率是再代入错误率(即在训练样本上计算的过度乐观的错误率)。

但是,您假设每当您在训练的样本上评估分类器时,它就能够正确地对所有样本进行分类,这是不正确的;这根本不是真的。在这种情况下,其中两个类明显重叠,分类器无法完全分离它们,从而产生 20% 的误差。

这并不意味着 LDA 是一个糟糕的分类器;这意味着它是一个简单的模型,无法找到将两个重叠类完全分开的曲折。当数据具有复杂关系时,简单的模型就不好;当关系简单时,以及当关系复杂但数据噪声足够大以至于复杂模型适合噪声而不是复杂关系时,它们都很好。

关于matlab - 分类(LDA)函数的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24806027/

相关文章:

Python音频信号分类MFCC特征神经网络

matlab - 估计Matlab或openCV中棋盘格点的转换

matlab - R中的秒表功能

machine-learning - XGBoost:是否可以预测多个标签并计算它们的 MAPE?

python - 在 Keras 的 Conv2D 和 Dense 期间数据形状如何变化?

r - ConfusionMatrix 中的错误:数据和引用因子必须具有相同的级别数

machine-learning - 用于读取图像的tensorflow cifar10代码修改

python - ValueError : Error when checking target: expected avg_pool to have 4 dimensions, 但得到形状为 (100, 2) 的数组

matlab - 警告:可能是虚假的解决方案。 [solvelib::checkSolutions]

java - 验证编译器生成 Java 1.5 代码