#r #xgboost
#r #xgboost
Вопрос:
Это мой первый вопрос здесь, поэтому я прошу прощения, если он задан неправильно.
Я играю с xgboost
функцией в R, и мне было интересно, есть ли простой параметр, который я мог бы изменить, чтобы моя линейная регрессия objective=reg:linear
имела ограничение только на неотрицательные коэффициенты? Я знаю, что могу использовать nnls
для неотрицательной регрессии методом наименьших квадратов, но я бы предпочел какое-то пошаговое решение, подобное тому, которое xgboost
предлагает.
Если нет простого способа, а есть сложный, я тоже был бы рад это услышать. Я читал, что есть возможность создавать пользовательские целевые функции. Так что, может быть, вы могли бы изменить reg:linear
функцию в какой-то момент, чтобы получить неотрицательность?
Заранее большое спасибо за ваш совет!
Комментарии:
1. Это легко сделать с помощью преобразования. зарегистрируйте свою целевую переменную, и она изменится с положительной на неограниченную. Возведите свои результаты в степень, чтобы вернуть их к исходному масштабу.
2. Спасибо! Я действительно не думал об изменении своих данных. Я попробую это.
3. Это очень гибкий метод. Все, что ограничено только с одной стороны, может быть преобразовано (при необходимости перевернуто, а затем сдвинуто) в положительное, а затем занесено в журнал. Все, что ограничено с двух сторон, может быть масштабировано и сдвинуто в [0,1], а затем вы можете использовать логистическое преобразование.
4. На данный момент все мои данные ограничены [0, 1020000]. В моей объясняющей переменной и в моих независимых переменных тоже довольно много нулей. Итак, простое использование функции log в R не дает того эффекта, о котором я думаю?
5. Немного измените нули. Добавьте
1e-6
к ним что-нибудь.