попытка оценить модель равнозначно для всех молекул, не давая заранее ей знания, к какой категории молекула относится.
— в идеале ей не надо это знание. И я, разумеется, и не предлагал давать модели метку категории.
Как раз отсутствие правильного разбиения приводит к тому, что вы будете переоценивать качество модели за счет очень похожих веществ в обучении и тесте.
Представьте, что у вас есть по фотографии 10 кошек и 10 собак по 10000 на каждую кошку/собаку. Вы утверждаете, что случайное разбиение в данном случае соответствует «равному вкладу». Конечно, нет. Случайное разбиение вполне может привести к выбору модели, которая просто переобучится на ваш датасет.
Но как стартовая конфигурация — случайное разбиение имеет место быть
В условиях data leakage вы не можете выбрать правильную модель. Побеждает та модель, что лучше ловит data leakage.
Смысл простой кросс-валидации состоит больше в подборе параметров, а не в улучшении оценки ошибки.
У бустинга есть набор параметров, типа числа деревьев, их глубины и тд. Вы же использовали дефолтные значения.
Делать кросс-валидацию надо на train, а на тесте смотреть модель, давшую наименьшую ошибку на кросс-валидации.
Потому нет, не было кросс-валидации.
А где они стали стандартом? Сейчас как раз запуустить бустинг из коробки — стандарт. Правда, если авторы не делали кроссвалидации (а по коду — не делали), то логичнее был бы действительно RF, ибо там «просто не трогай параметры и поставь деревье побольше» работает порой лучше и вызывает меньше вопросов
гипотетически, как раз GCN и должна это учиться внутри себя делать пространственное представление молекулы. Точнее — выучивать ту часть, которая связана с растворимостью.
Но насколько она смогла это сделать — большой вопрос, ибо качество от xgboost на фингерпринтах неотличимо (а там еще как тюнили все это у меня вопрос — валидации-то нет). Ну и проблемы разбиения, уже написал.
Чистое GCN работает у авторов очень плохо. Я с утра посмотрел, как будут работать методы «на дурака» — так предсказание XGBoost растворимости по названию молекулы или прямо по SMILES (разбитому на n-граммы) ведет себя лучше (по названию -ошибка 1.2 где-то, для SMILES — 0.7-0.8). И это я не знаю, как тюнили авторы свою модели — валидации-то нет и я могу только с дефолтами запускать, чтоб не жульничать…
То есть кроме 7 и 9 смотреть вообще не надо на модели c GCN.
К школьникам, которые все это делали, претензий нет. Вы — большие молодцы, если освоили все выше написанное за неделю.
Вопрос, естественно, к организаторам и куратору, которые должны были подобные нюансы знать.
Если ваша модель предсказывает растворимость вещества просто по близости к нему веществ из тренировочной выборки — то будет наблюдаться та же картина, которую я продемонстировал.
И да, вы таки правы, подход будет бесполезным.
Что авторам надо было сделать — это ПРАВИЛЬНО разбить все на тренировочную и тестовую выборку. А просто рандомный сплит не дает никакого представления о том, какая из их моделей хороша.
Ибо модель, выучившая «правильный», переносимый на генеральную совокупность признак, может проигрывать модели, выучившей «kNN». И на любом веществе, аналогов которого не было в выборке, выбранная неправильная модель будет сильно ошибаться.
Вот набрал я вещества из датасета, что использовали авторы, содержащие слово toluene
4-Chlorotoluene -3.08
2-Chlorotoluene -3.52
2,4-Dinitrotoluene -2.82
2-Bromotoluene -2.23
o-Nitrotoluene -2.33
2-Ethyltoluene -3.21
2,4,6-Trinitrotoluene -3.22
2-Isopropyltoluene -3.76
2,6-Dinitrotoluene -3.0
4-Ethyltoluene -3.11
p-Toluenesulfonamide -1.74
4-Bromotoluene -3.19
p-Nitrotoluene -2.49
4-Isopropyltoluene -3.77
Toluene -2.21
m-Nitrotoluene -2.44
И допустим предсказывать я буду всем этим toluene среднее по ним. И считаю RMSE.
Получается 0.57.
А в статье модель дает 0.59 по тесту. То есть конкретно на toluene достаточно выгодно предсказывать таким тупым методом.
Кто-то может заметить, что я валидируюсь на обучении. Окей, делаем, как сказали — 90% в train.
Делаем 10000 случайных прогонов
Получаем среднее качество опять же 0.57 (чуть меньше, но округляем)
А я взял совсем простой способ, очевидно, моргановские фингерпринты видят подструктуры намного лучше.
Следует ли из этого, что их модели точно выучили не то, что нужно? Нет.
Следует ли из этого, что выбрать между моделями, выучившими что-то странное и адекватными, они не могли — да.
Как раз отсутствие правильного разбиения приводит к тому, что вы будете переоценивать качество модели за счет очень похожих веществ в обучении и тесте.
Представьте, что у вас есть по фотографии 10 кошек и 10 собак по 10000 на каждую кошку/собаку. Вы утверждаете, что случайное разбиение в данном случае соответствует «равному вкладу». Конечно, нет. Случайное разбиение вполне может привести к выбору модели, которая просто переобучится на ваш датасет.
В условиях data leakage вы не можете выбрать правильную модель. Побеждает та модель, что лучше ловит data leakage.
У бустинга есть набор параметров, типа числа деревьев, их глубины и тд. Вы же использовали дефолтные значения.
Делать кросс-валидацию надо на train, а на тесте смотреть модель, давшую наименьшую ошибку на кросс-валидации.
Потому нет, не было кросс-валидации.
Но насколько она смогла это сделать — большой вопрос, ибо качество от xgboost на фингерпринтах неотличимо (а там еще как тюнили все это у меня вопрос — валидации-то нет). Ну и проблемы разбиения, уже написал.
Чистое GCN работает у авторов очень плохо. Я с утра посмотрел, как будут работать методы «на дурака» — так предсказание XGBoost растворимости по названию молекулы или прямо по SMILES (разбитому на n-граммы) ведет себя лучше (по названию -ошибка 1.2 где-то, для SMILES — 0.7-0.8). И это я не знаю, как тюнили авторы свою модели — валидации-то нет и я могу только с дефолтами запускать, чтоб не жульничать…
То есть кроме 7 и 9 смотреть вообще не надо на модели c GCN.
Вопрос, естественно, к организаторам и куратору, которые должны были подобные нюансы знать.
Если ваша модель предсказывает растворимость вещества просто по близости к нему веществ из тренировочной выборки — то будет наблюдаться та же картина, которую я продемонстировал.
И да, вы таки правы, подход будет бесполезным.
Что авторам надо было сделать — это ПРАВИЛЬНО разбить все на тренировочную и тестовую выборку. А просто рандомный сплит не дает никакого представления о том, какая из их моделей хороша.
Ибо модель, выучившая «правильный», переносимый на генеральную совокупность признак, может проигрывать модели, выучившей «kNN». И на любом веществе, аналогов которого не было в выборке, выбранная неправильная модель будет сильно ошибаться.
Хотя бы по docs.chemaxon.com/display/docs/bemis-murcko-clustering.md.
Почему:
Вот набрал я вещества из датасета, что использовали авторы, содержащие слово toluene
4-Chlorotoluene -3.08
2-Chlorotoluene -3.52
2,4-Dinitrotoluene -2.82
2-Bromotoluene -2.23
o-Nitrotoluene -2.33
2-Ethyltoluene -3.21
2,4,6-Trinitrotoluene -3.22
2-Isopropyltoluene -3.76
2,6-Dinitrotoluene -3.0
4-Ethyltoluene -3.11
p-Toluenesulfonamide -1.74
4-Bromotoluene -3.19
p-Nitrotoluene -2.49
4-Isopropyltoluene -3.77
Toluene -2.21
m-Nitrotoluene -2.44
И допустим предсказывать я буду всем этим toluene среднее по ним. И считаю RMSE.
Получается 0.57.
А в статье модель дает 0.59 по тесту. То есть конкретно на toluene достаточно выгодно предсказывать таким тупым методом.
Кто-то может заметить, что я валидируюсь на обучении. Окей, делаем, как сказали — 90% в train.
Делаем 10000 случайных прогонов
Получаем среднее качество опять же 0.57 (чуть меньше, но округляем)
А я взял совсем простой способ, очевидно, моргановские фингерпринты видят подструктуры намного лучше.
Следует ли из этого, что их модели точно выучили не то, что нужно? Нет.
Следует ли из этого, что выбрать между моделями, выучившими что-то странное и адекватными, они не могли — да.