Несоответствие между матрицей смешения и классифицированным изображением - PullRequest
0 голосов
/ 23 октября 2019

Из-за вычислительных ограничений моего программного обеспечения ГИС я пытаюсь реализовать случайные леса в R для целей классификации изображений. Мой ввод - это многоканальное изображение TIFF, которое обучается в шейп-файле ArcGIS (целевые значения 0 и 1). Технически код работает и выдает корректный вывод. Когда я просматриваю матрицу путаницы, я получаю следующее:

     0    1    class.error
0    11    3    0.214285714
1    1    13    0.071428571

Это разумно для моих данных. Однако, когда я строю выходные данные классификации изображений в моем программном обеспечении ГИС (двоичный файл, реклассифицированный tiff со значениями 0 и 1), он предсказывает тренировочные данные с вероятностью успеха 100%. Другими словами, нет ошибки классификации с выходным изображением. Как это так, когда матрица путаницы показывает, что есть ошибки классификации?

Я что-то упускаю здесь действительно очевидное? Фрагмент кода ниже.

rf.mdl <- randomForest(x=samples@data[, names(PredMaps)], y=samples@data[, ValueFld], ntree=501, proximity=TRUE, importance=TRUE, keep.forest=TRUE,keep.inbag=TRUE)

ConfMat = rf.mdl$confusion
write.csv(ConfMat,file = "ConfMat1.csv")

predict(PredMaps, rf.mdl, filename=classifiedPath, type="response", na.rm=T, overwrite=T, progress="text")

Я ожидал, что выходное классифицированное изображение неправильно классифицирует 1 из тренировочных баллов Value = 1 и неправильно классифицирует 3 тренировочных балла Value = 0 на основе того, что указано в матрице путаницы.

1 Ответ

0 голосов
/ 23 октября 2019

Алгоритм Random Forest - это метод упаковки в пакеты. Это означает, что он создает многочисленные слабые классификаторы, а затем каждый слабый классификатор «голосует», чтобы создать прогноз конца. В РФ каждый слабый классификатор - это одно дерево решений, которое обучается на случайной выборке наблюдений в обучающем наборе. Подумайте о случайных выборках, на которых обучается каждое дерево решений, как о «пакете» данных.

То, что отображается в матрице путаницы, - это то, что называется «ошибкой вне пакета» (ошибка OOB). Эта ошибка OOB является точной оценкой того, как ваша модель будет обобщена на данные, которые она никогда не видела раньше (эта оценка обычно достигается путем тестирования вашей модели на удерживаемом наборе тестирования). Поскольку каждое дерево решений обучается только на одной сумке из ваших обучающих данных, остальные данные (данные, находящиеся «вне сумки») могут заменять эти скрытые данные.

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

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

По сути, вы должны доверять матрице путаницы, которая использует ошибку OOB. Это надежная оценка того, как модель будет обобщаться для невидимых данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...