3

Даже с простым классификатором, таким как ближайший сосед, я не могу судить о его точности и, следовательно, не могу его улучшить.Как я могу эффективно найти точность классификатора

Например, с кодом ниже:

IDX = knnsearch(train_image_feats, test_image_feats); 
    predicted_categories = cell([size(test_image_feats, 1), 1]); 
    for i=1:size(IDX,1) 
     predicted_categories{i}=train_labels(IDX(i)); 
    end 

Здесь train_image_feats является 300 на 256 матрицу, в которой каждая строка представляет собой изображение. То же самое относится к структуре test_image_feats. train_labels - это метка, соответствующая каждой строке обучающей матрицы.

Книга, которую я прошу, просто сказала, что вышеприведенный метод достигает точности 19%.

Как автор пришел к такому выводу? Есть ли способ судить о точности моих результатов с этим классификатором или другим?

Затем автор использует другой метод извлечения объектов и говорит, что он улучшил точность на 30%.

Как я могу найти точность? Будь это графически или просто через простой процент.

ответ

5

Точность при обучении и классификации машин обычно рассчитывается путем сравнения ваших прогнозируемых выходов вашего классификатора по сравнению с наземной истиной. Когда вы оцениваете точность классификации вашего классификатора, вы уже создали прогностическую модель, используя набор тренировок с известными входами и выходами. На этом этапе у вас будет комплект с входами и выходами, которые были не для обучения. Для целей этого поста, назовем это наземной истины набор данных. Этот базовый набор данных истины помогает оценить точность вашего классификатора, когда вы предоставляете входные данные для этого классификатора, который он не видел раньше. Вы берете свои входы из своего тестового набора и запускаете их через свой классификатор. Вы получаете выходы для каждого входа, и мы вызываем коллекцию этих выходов прогнозируемых значений.

Для каждого прогнозируемого значения вы сравниваете с соответствующим значением истинности истины и смотрите, является ли оно одинаковым. Вы суммируете все случаи, когда выходы соответствуют между предсказанной и истиной земли. Добавление всех этих значений вверх и деление на общее количество точек в вашем тестовом наборе дает долю случаев, когда ваша модель точно предсказала результат по сравнению с земной истиной.

В MATLAB это очень просто вычислить. Предположим, что ваши категории для вашей модели были перечислены от 1 до N, где N - общее количество меток, с которыми вы классифицируете. Пусть groundTruth будет вашим вектором меток, обозначающим основную истину, а predictedLabels обозначим ваши метки, созданные из вашего классификатора. Точность вычисляется по формуле:

В первой строке кода вычисляется, насколько точность вашей модели равна доле. Вторая строка вычисляет это как процент, где вы просто умножаете первую строку кода на 100. Вы можете использовать либо или, если хотите оценить точность. Один из них только что нормализован между [0,1], а другой - от 0% до 100%. Что делает groundTruth == predictedLabels, так это то, что он сравнивает каждый элемент между groundTruth и predictedLabels.Если значение i th в groundTruth соответствует значению i th в predictedLabels, мы выводим 1. Если нет, мы выводим 0. Это будет вектор 0s и 1s, поэтому мы просто суммируем все значения, равные 1, которые красноречиво заключены в операцию sum. Затем мы делим на общее количество точек в нашем тестовом наборе, чтобы получить окончательную точность классификатора.

С примером игрушки, предположит, я имел 4 этикетки, и мои groundTruth и predictedLabels векторов были это:

groundTruth =  [1 2 3 2 3 4 1 1 2 3 3 4 1 2 3]; 
predictedLabels = [1 2 2 4 4 4 1 2 3 3 4 1 2 3 3]; 

Точность с использованием вышеуказанных векторов дают нам:

>> accuracy 

accuracy = 

    0.4000 

>> accuracyPercentage 

accuracyPercentage = 

    40 

Это означает, что мы имеем 40% -ную точность или точность 0,40. Используя этот пример, модель прогнозирования смогла точно классифицировать 40% тестового набора, когда вы вводите каждый тестовый набор через классификатор. Это имеет смысл, потому что между нашими прогнозируемыми выходами и истиной земли только 40% или 6 выходов совпадают. Это 1, 2, 6, 7, 10 и 15 элементы. Существуют и другие показатели для вычисления точности, такие как ROC curves, но при расчете точности машинного обучения это обычно делается.

+0

Это было отлично объяснено. Спасибо большое :) – StuckInPhD

+0

@FarazKhan - Мое удовольствие :) Всего наилучшего! – rayryeng

+0

Простое и подробное объяснение, приятно, спасибо – TraffyT

Смежные вопросы