Pull to refresh

Comments 22

Тут важно понимать что они понимают под растворимостью. Способность к диссоциации или способность кристалла распадаться на молекулярные комплексы окруженные сольватной оболочкой.

Почему вместо RSME не использовать доброе русское среднеквадратичное отклонение?

чтобы единицы измерения были те же, в которых величина. принципиального отличия-то нет, а человеку не в теме объяснить проще
К сожалению, в подобных задачах очень важно правильное разбиение на обучение и тест.
Хотя бы по 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 (чуть меньше, но округляем)
А я взял совсем простой способ, очевидно, моргановские фингерпринты видят подструктуры намного лучше.

Следует ли из этого, что их модели точно выучили не то, что нужно? Нет.
Следует ли из этого, что выбрать между моделями, выучившими что-то странное и адекватными, они не могли — да.
Да, вы правы: как и упоминалось в статье, разбиение на тренировочную и тестовую выборку в этой задаче очень важно. Но предсказывать везде среднее в отличие от обучения модели не является масштабируемым подходом, что является важным фактором в пользу метода, описанного в статье. Надеюсь смог ответить на ваш вопрос.
К сожалению, вы не поняли сути претензии.

Если ваша модель предсказывает растворимость вещества просто по близости к нему веществ из тренировочной выборки — то будет наблюдаться та же картина, которую я продемонстировал.
И да, вы таки правы, подход будет бесполезным.

Что авторам надо было сделать — это ПРАВИЛЬНО разбить все на тренировочную и тестовую выборку. А просто рандомный сплит не дает никакого представления о том, какая из их моделей хороша.

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

В датасете присутствуют очень разнообразные молекулы, которые можно всячески группировать.

При разработке сложных нейросетевых моделей цель состоит в создании такой архитектуры, которая при минимальном ручном feature engineering может выучить взаимосвязи исходных структур и конечной предсказанной величины для широкого спектра молекул. При таком подходе использование случайного разбиения — не признак слабоумия, а попытка оценить модель равнозначно для всех молекул, не давая заранее ей знания, к какой категории молекула относится.

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

Но как стартовая конфигурация — случайное разбиение имеет место быть)
попытка оценить модель равнозначно для всех молекул, не давая заранее ей знания, к какой категории молекула относится.
— в идеале ей не надо это знание. И я, разумеется, и не предлагал давать модели метку категории.
Как раз отсутствие правильного разбиения приводит к тому, что вы будете переоценивать качество модели за счет очень похожих веществ в обучении и тесте.

Представьте, что у вас есть по фотографии 10 кошек и 10 собак по 10000 на каждую кошку/собаку. Вы утверждаете, что случайное разбиение в данном случае соответствует «равному вкладу». Конечно, нет. Случайное разбиение вполне может привести к выбору модели, которая просто переобучится на ваш датасет.

Но как стартовая конфигурация — случайное разбиение имеет место быть

В условиях data leakage вы не можете выбрать правильную модель. Побеждает та модель, что лучше ловит data leakage.
как хорошо SMILES описывает пространственную структуру молекул? интересно насколько сильно оптимизация молекулы тем же MNDO методом повлияет на растворимость
гипотетически, как раз GCN и должна это учиться внутри себя делать пространственное представление молекулы. Точнее — выучивать ту часть, которая связана с растворимостью.
Но насколько она смогла это сделать — большой вопрос, ибо качество от xgboost на фингерпринтах неотличимо (а там еще как тюнили все это у меня вопрос — валидации-то нет). Ну и проблемы разбиения, уже написал.

Чистое GCN работает у авторов очень плохо. Я с утра посмотрел, как будут работать методы «на дурака» — так предсказание XGBoost растворимости по названию молекулы или прямо по SMILES (разбитому на n-граммы) ведет себя лучше (по названию -ошибка 1.2 где-то, для SMILES — 0.7-0.8). И это я не знаю, как тюнили авторы свою модели — валидации-то нет и я могу только с дефолтами запускать, чтоб не жульничать…
То есть кроме 7 и 9 смотреть вообще не надо на модели c GCN.
Интересно почему использовались именно эти методы, а не ставшие стандартом Support Vector Machines SVM и Random Forest RF?
А где они стали стандартом? Сейчас как раз запуустить бустинг из коробки — стандарт. Правда, если авторы не делали кроссвалидации (а по коду — не делали), то логичнее был бы действительно RF, ибо там «просто не трогай параметры и поставь деревье побольше» работает порой лучше и вызывает меньше вопросов
Кросс валидация была использована. Например «GCN with additional features 10 Folds» означает что GCN обученная с дополнительными свойствами из бэйзлайна была обучена и протестирована на 10 фолдах, после чего ошибка была усреднена.
Смысл простой кросс-валидации состоит больше в подборе параметров, а не в улучшении оценки ошибки.
У бустинга есть набор параметров, типа числа деревьев, их глубины и тд. Вы же использовали дефолтные значения.
Делать кросс-валидацию надо на train, а на тесте смотреть модель, давшую наименьшую ошибку на кросс-валидации.
Потому нет, не было кросс-валидации.
На самом деле при кросс-валидации подбирались параметры такие какие: размер фингерпринта, латентное пространство полносвязной нейросети и другие. Но вы правы, надо было это более подробно описать в статье.
А у XGBoost как подбирались? В вашем коде (которыый вы выложили), есть только train-test разбиение
Кросс-валидация на тренировочной выборке.
Спасибо. И какие в итоге параметры? В вашем примере кода используется default.
Мы в итоге остановились на default параметрах, потому что при других результат только ухудшался.
Sign up to leave a comment.