#ML
Как же у меня все-таки горит с собесов по ML System Design — например, с такого https://telegra.ph/ML-System-Design-Framework-12-29
Интервьюеры, начитавших выжимок из книжек, почему-то ожидают (и в цитируемом сообщении и в опыте прохождения не в рф) что loss ты выберешь раньше чем оффлайн-метрики. А иногда, как здесь -- и модель тоже.
Але, гараж!
Я лосс выбираю / модифицирую / взвешиваю под оффлайн метрики и данные конечно, а не наоборот. Если у меня регрессия и оценивать меня будут по MAPE — я и буду оптимизировать MAPE (например, через взвешенный MSE — хотя можно и напрямую сам MAPE -- с масштабами просто аккуратно надо). В учебном коде для градиента в SGD это выглядело бы так:
def _der_loss(self, x, y, weight = 1):
if self.loss in ['MSE', 'MSE_weighted']:
return -(y - self._f(x)) * x * weight
elif self.loss == 'MAPE':
return -np.sign(y - self._f(x)) * x * weight
PS: Иногда меня мучает вопрос — вот учим мы студентов и в вузах и на курсах, а на собеседованиях они часто попадают к лиду, который лид потому что всех пересидел 🤡.
И вот будет говорить студент правильные вещи — про выбор сначала метрики, потом уже босса или что мультиколлинеарность сильно аффектит бустинги, или что для того чтобы убрать рамку с изображения не нужна сетка, а лид впитывал мифы и подсматривал методички а не разбирался сам — и будет ребят реджектить.
Учить нормально — медвежья услуга, получается? Как думаете?
Как же у меня все-таки горит с собесов по ML System Design — например, с такого https://telegra.ph/ML-System-Design-Framework-12-29
Интервьюеры, начитавших выжимок из книжек, почему-то ожидают (и в цитируемом сообщении и в опыте прохождения не в рф) что loss ты выберешь раньше чем оффлайн-метрики. А иногда, как здесь -- и модель тоже.
Але, гараж!
Я лосс выбираю / модифицирую / взвешиваю под оффлайн метрики и данные конечно, а не наоборот. Если у меня регрессия и оценивать меня будут по MAPE — я и буду оптимизировать MAPE (например, через взвешенный MSE — хотя можно и напрямую сам MAPE -- с масштабами просто аккуратно надо). В учебном коде для градиента в SGD это выглядело бы так:
def _der_loss(self, x, y, weight = 1):
if self.loss in ['MSE', 'MSE_weighted']:
return -(y - self._f(x)) * x * weight
elif self.loss == 'MAPE':
return -np.sign(y - self._f(x)) * x * weight
PS: Иногда меня мучает вопрос — вот учим мы студентов и в вузах и на курсах, а на собеседованиях они часто попадают к лиду, который лид потому что всех пересидел 🤡.
И вот будет говорить студент правильные вещи — про выбор сначала метрики, потом уже босса или что мультиколлинеарность сильно аффектит бустинги, или что для того чтобы убрать рамку с изображения не нужна сетка, а лид впитывал мифы и подсматривал методички а не разбирался сам — и будет ребят реджектить.
Учить нормально — медвежья услуга, получается? Как думаете?