Комментарии 128
Интересно как машинное обучение в этой области себя проявляет.
Заголовок выглядит как "Цивилизация Русские открыли Гончарное дело"
Это если коротко. Статьи пока нет, но было бы интересно?
ждем побед на kaggle :)
import catboost as…? :)
Было бы неплохо дополнить примером с решением конкретной задачи: чему учили, что получили.
Русская библиотека, а документации на родненьком нет. Не патриотично совсем.
Английский сам по себе не является проблемой, но тема довольно специфичная. Устранение языкового барьера значительно упросило бы погружение.
Для рисерча с самыми передовыми штуками от скалы все-таки приходится отказываться
На больших данных, если возникает проблема с недостатком памяти, алгоритму можно при помощи специального параметра указать, сколько памяти у вас есть, и алгоритм за счет небольшого замедления в обучении уместится в такую память.
Что касается скорости обучения, здесь все зависит от данных — чем больше данных, тем больше времени требуется на их обработку.
Видимо, тут имеется в виду сервис Яндекс.Погода. Без обид ребята, но прогноз погоды работает далеко от категории «точно». Порой даже постфактум Яндекс.Погода показывает неверные данные. Хотя, полагаю все дело в самой погоде — она такая непредсказуемая.
Оба раза спустя пять минут после этого начинался ливень, который шёл около часа-двух, то есть, не мелкий пятиминутный дождик.
Яндекс.Погода, кстати, реагировала на это — каждый раз спустя десять минут после начала дождя рисовала этот ливень.
Я тоже отреагировал — снёс приложение с телефона :)
Хотя поначалу очень интересно было смотреть на карте как движется дождь по Москве.
И вот результаты (чем меньше, тем лучше):
Мне непонятно, на какой части данных делалось сравнение методов. Это отложенные выборки?
Также не ясно, как был проведен тюнинг: с кроссвалидацией или без нее.
Поправьте ссылку в README.md
, про это даже issue есть.
Доброго дня…
А как поставить? Через pip Ошибка DLL при импорте, а .exe установщик не запускается… У кого-нибудь заработал?
Библиотека написана на python? Есть ли интерфейс на с++?
На плюсах, если что. Неужели так сложно заглянуть в репозиторий (например, https://github.com/catboost/catboost/tree/master/catboost/libs/algo) и посмотреть глазами?
Я думаю, в течение года появятся проверки алгоритма на разных данных и независимое сравнение с другими методами. Тогда можно будет говорить, реально ли вы добились меньшей переобученности и побеждаете другие топовые бустинг-алгоритмы. Спасибо. На R использовать можно, да?
1. под Windows не компилируется (под Linux и macos получилось)
2. Пример под caret некорректный (в примере в сетку выведены пять параметров, реально можно только три). Проброс параметров не удался.
3. Также в примере титаника есть NA, которые по умолчанию в Caret не заменяется, в примере нет метода импутации
4. Оптимизируемая метрика через сaret только точность, попытки привязать логлосс, как встроенный, так и самописный не увенчались успехом
А вот еще вопрос — скорее к авторам — есть ли встроенная функция MAE? В XGBoost ее не было, а писать производные было весьма не тривиально.
В GBM такая ф-ия потерь есть по умолчанию.
Спасибо, Яндекс.
И вот только что ваш ИИ подобрал мне «Сплинов» и «Выхода нет» :)
Не всё и не всегда гладко у вас, но такие моменты, как эти, радуют.
слушаю Apple Music, и все отлично :)
И практически нет возможности сказать этому ИИ, что вот этого и этого — не надо.
А так да, много годных исполнителей нашлось, о которых иначе бы и не узнал никогда, скорее всего.
Вообще серьезная заявка на победу — потягаться с lgbm и xgb.
Очень вдохновляет.
Использует ли catboost все ядра машины, или в один поток работает?
Как насчет ускорения частей на GPU?
И почему дока не на домене .yandex? :-)
Правильно ли я понял, что алгоритм сам приводит текстовые данные к цифровому виду?
Если да, что как алгоритм решает, например, что категории облаков («кучевые», «слоистые», «перисто-кучевые») лучше представить в виде One-hot, а, к примеру, категориям «сильный ветер», «слабый ветер» нужно присвоить категориальные признаки?
Ошибся, не категориальные, ранговые
Поэтому в этой ситуации каждому товару просто присваивают порядковый id (к примеру, в соответствии с программой учета в магазине). Порядок этих чисел ничего не значит, однако алгоритм будет этот порядок использовать и делать из него ложные выводы.
но ведь у того же lgbm можно пометить categorical features в датаcете и это уже не проблема. Вопрос: в документации к тестам этого не указано, хотел бы уточнить: lgbm тренировался с обозначенными categorical features?
Метод catboost.caret не работает под оболочкой caret. Проверьте, пожалуйста, пример на странице https://tech.yandex.com/catboost/doc/dg/concepts/r-usages-examples-docpage/
Насколько уместно и эффективно, и возможно ли вообще применение CatBost для задач администрирования и модерирования сайтов и приложений?
Спасибо.
При запуске catboost-0.1.1.exe на Windows 7 (32 bit) выдаёт ошибку:
С ее помощью можно эффективно обучать модели на разнородных данных, в том числе таких, которые трудно представить в виде чисел (например, виды облаков или категории товаров).
Так чем же CatBoost отличается от других открытых аналогов?
И CatBoost разработан нами так, чтобы одинаково хорошо работать «из коробки» как с числовыми признаками, так и с категориальными.В итоге в статье ни слова о том, как же обрабатываются категориальные признаки.
Коллеги, расскажите подробней что же делаете с категориальными признаками. Уже увидел, что используете счетчики, но какие статистики считаете? Используете при расчете только целевую переменную, или есть статистики для хорошо коррелирующих с целевой вещественных признаков?
Ну и второй вопрос — что делать с сильно разряженными датасетами? Бытует мнение, что на них деревья работают хуже линейных моделей. В xgb есть возможность указать тип элементарных алгоритмов. Но у вас, подозреваю, все заточено под деревья. Есть какое-то решение на этот счёт? Или catboost изначально проектировался с учётом таких задач?
Сейчас нет возможности указать тип элементарных алгоритмов, но мы думаем над тем, чтобы в будущем такую возможность добавить. Что касается разреженных данных, то специальной поддержки для них пока что не реализовано, но вообще нужно экспериментировать с вашими конкретными данными, пробовать, что именно будет лучше всего работать.
P.S. Лучи добра Яндексу за опенсорс!
Решил ради интереса воспользоваться CatBoost в качестве замены xgboost для линейной регрессии. Натравил на тот же самый датасет со своими данными.
Однако вопреки ожиданиям получил совершенно ужасный результат, много хуже всех прочих методов регрессии. Вероятно что-то делаю не так… интересно, с кем /где можно было бы проконсультироваться по этому поводу и задать конкретные вопросы?
Тут надо понимать одну простую вещь, чтобы получить неплохое предсказание, системе вовсе не обязательно знать, что такое время и куда оно движется, это и для людей вопрос сложный. Так что можно действовать в таком порядке:
1. По максимум выжать из анализа просто россыпи измерений, отсеять возможные временные инварианты, условно, у кошки как было в моде 4 ноги 50 лет назад, так и осталось, нам не нужно время, чтобы опознать кошку. Так и для нахождения закономерностей на подборке измерений, во многих случаях не так важно, как они упорядочены.
2. Чуть более учитывающий время когортный подход. Взяли, например, все компании, которые сегодня на бирже пошли вниз и все компании, которые пошли вверх, дальше наблюдаем на интервале большем, чем использованный для начального разделения, дальше продолжаем разбивать, строя деревья.
3. Следущий простой вариант — таймер как фича, условно нарезали сутки/месяц/год на 256/1024/10500 фрагментов, загнали как линейный признак, смотрим где выстрелит. Дальше, чтобы слишком уже мелко не резать — спектральный анализ/разбор, и мы опять можем работать с мелкими деталями, имея крупные фичи.
4. Ловля микропаттернов, наличие каждого во временном окне отмечаем как фичу есть/нет и получаем удобные для заправки в деревья решений матрицы.
Второй существенный момент — все хорошие временные признаки цикличны, сезонны, суточны, да хоть кратны простым числам, как бывает в экологии, нахождения максимума из циклических закономерностей — это лучшее, на что можно ориентироваться и расчитывать, и я не уверен, что пока кто-то всерьез может лучше, грубо говоря прогнозировать временную динамику плохо знакомых ситуаций, ну или уверенно выделять модель высокой мерности фазового пространства (условно, у нас в пруду водятся щуки, караси, окуни, лягушки и комары, каждые со своими циклами развития, питания и воспроизводства и мы хотим узнать, что будет, если добавить туда улиток), которая была бы стабильна на протяжении времени.
Соответственно, исходя из из ограниченности черепной коробки и инструментов, можно поставить две вполне достижимые задачи — намайнить временных инвариантов, отделить то, что ведет себя одинаково, вне зависимости от времени, когда это произошло. Это уже будет модель с ненулевой предсказательной силой. Для оставшегося попробовать нащупать каким не будь неочевидные фичи, грубо говоря связи популяций бабочек в Бразилии с состоянием фондового рынка, тут CatBoost и аналогичные решения очень полезны, так как позволяют пахать по площадям, и находить неожиданные, но предсказуемо ведущие себя фазовые пространства. За любым успешным применением подобного инструментария обычно стоит целая история с выбором и дизайном фичей для анализа.
Надеюсь, что мой ответ был полезен.
1. Возможно я не так понял описание алгоритма, но кодирование категорий в цифры происходит вне зависимости от прошлых деревьев или прошлых сплитов текущего дерева. Я правильно понял?
2. У вас довольно слабый априори. Вы добавляете только одно псевдоиспытание. При классификации априори получается всегда мультимодальным бета-распределением. У вас на практике получилось, что такой априори лучше всего работает?
Яндекс открывает технологию машинного обучения CatBoost