#r #machine-learning
#r #машинное обучение
Вопрос:
Я прогнозирую показатели экологической пригодности видов. Для этого я использую пакет каретки и выполняю задачи классификации. В литературе рекомендуется использовать непрерывный индекс Бойса (CBI) в качестве показателя производительности для надежности модели (см. 1). В настоящее время я настраиваю модели так, чтобы максимизировать AUC, а не CBI. Тем не менее, я получаю отличные оценки CBI (корреляция 1) как для данных обучения, так и для данных тестирования, используя ecospat ::ecospat.boyce, а также adamlilith / enmSdm::contBoyce2x, доступные через rdrr.io .
Я не уверен, совершаю ли я ошибку и ввожу неправильные векторы. Соответствующий результат логистической регрессии выглядит примерно так:
head(lg$pred)
pred obs absence presence rowIndex parameter Resample
1 presence absence 0.4144518 0.5855482 1 none Fold1
2 presence presence 0.4402172 0.5597828 2 none Fold1
3 presence presence 0.3647270 0.6352730 3 none Fold1
4 absence absence 0.7154779 0.2845221 6 none Fold1
5 presence presence 0.1574952 0.8425048 9 none Fold1
6 presence presence 0.0146231 0.9853769 10 none Fold1
Я вызываю функции следующим образом
Ecospat::ecospat.boyce
fit = векторный или растровый слой, содержащий прогнозируемые значения пригодности
obs = вектор, содержащий прогнозируемые значения пригодности или xy-координаты (если «fit» является растровым слоем) точек проверки (записей присутствия)
ecospat::ecospat.boyce(fit=lg$pred$presence,obs=lg$pred$presence[lg$pred$obs=="presence"],PEplot=T)
adamlilith/enmSdm::contBoyce2x
pres = числовой вектор. Прогнозируемые значения в местах присутствия.
bg = числовой вектор. Прогнозируемые значения на отсутствующих / фоновых сайтах.
contBoyce2x(pres=lg$pred$presence[lg$pred$obs=="presence"],bg=lg$pred$presence[lg$pred$obs=="absence"],graph=T)
Правильно ли я понял входные аргументы? Возможно ли получить идеальную оценку CBI, даже не пытаясь настроить модели для максимизации этого показателя?
(1) Хирцель, А.Х., Ле Лей, Г., Хелфер, В., Рандин, С., Гисан, А. (2006). Оценка способности моделей пригодности среды обитания предсказывать присутствие видов. Экологическое моделирование 199, 142-152.
Комментарии:
1. Я не очень хорошо знаком с функцией ecospat, но я написал contBoyce2X и contBoyce в enmSdm. Я согласен, что хорошо быть подозрительным, но, похоже, здесь вы все делаете правильно.
2. Обратите внимание, что есть два способа интерпретировать, как Хирцель и др. описывают, как вычислять CBI … вы можете разделить пространство на ячейки, которые перекрываются так, что большинство точек покрывается дважды (например, ячейки типа 0-0.1, 0.05-0.15, 0.1-0.2, …) что и делает contBoyce2X. Вы также можете разделить его на ячейки, которые перекрывают точки несколько раз, например 0-0.01, 0.01-0.11, 0.02-0.12, и т.д. Это делает contBoyce в enmSdm. Известны различия между этими функциями в enmSdm и ecospat (см. Справку по contBoyce в enmSdm для примера). На практике различия очень незначительны (~ 0,02 или около того)
3. Спасибо за ваш ответ! Приятно знать, что я не допустил неосторожной ошибки. Я подробнее рассмотрю, что может привести к идеальным результатам
4. @Eden, интересно, может ли размер выборки иметь значение для различий между
contBoyce
иcontBoyce2x
? Я попробовал обе функции для вида с очень низким размером выборки и там, где карта визуально корректна (у меня 17 точек присутствия, все в классах высокой пригодности).contBoyce2x
Дает положительный CBI (0,83), тогдаcontBoyce
как дает отрицательный CBI (-0,67), несмотря на то, что 15 из 17 точек присутствия имеют пригодность выше 0,97.5. @Boris Я видел ту же проблему с CBI — он очень чувствителен к точным данным, которые вы используете (статистически он имеет низкую погрешность, но высокую дисперсию). CBI показывает, насколько события отличаются от фона, поэтому, если ваша модель предсказывает высокую пригодность во многих местах, CBI может быть низким. Кстати, версия CBI ecospat выдает почти те же значения (есть некоторая разница в том, как эта функция обрабатывает повторяющиеся значения, которые я не понимаю), поэтому проблема не сводится к
contBoyce
orcontBoyce2X
. Проблема больше в CBI. — Адам Смит