Привет! Может тут кто-то занимался задачей ранжирования? У меня метрики

по mrr 0.95 val, но в предикте шляпа, как модель не учил... Данные предстовляют собой вектора. Оценки бинарыне 0 или 1. На каждый класс по +- 100 примеров.
Те исходные данные имеют вид таблицы
| вектор запроса | вектор из БД | оценка (y) | класс (index) |
Обучаю так:
train.sort_values(by='index',inplace=True)
test.sort_values(by='index',inplace=True)

X_train = train.drop(['index', 'y'], axis=1).values
y_train = train['y'].values
queries_train = train['index'].values

X_test = test.drop(['index', 'y'], axis=1).values
y_test = test['y'].values
queries_test = test['index'].values

train = Pool(
data=X_train,
label=y_train,
group_id = queries_train,
has_header=False
)

test = Pool(
data=X_test,
label=y_test,
group_id = queries_test,
has_header=False
)

default_parameters = {
'iterations': 10000,
'custom_metric': ['MRR:top=10'],
'verbose': False,
'random_seed': 0,
}

parameters = {}

def fit_model(loss_function, additional_params=None, train_pool=train, test_pool=test):
parameters = deepcopy(default_parameters)
parameters['loss_function'] = loss_function
parameters['train_dir'] = loss_function

if additional_params is not None:
parameters.update(additional_params)

model = CatBoostRanker(**parameters)
model.fit(train_pool, eval_set=test_pool, plot=True)

return model

model = fit_model('QueryRMSE', {'custom_metric': ['MRR:top=10', 'MRR:top=5'], 'task_type': 'GPU'})

затем делаю предикт. беру все вектора из базы и попрано их соединяю. Отправляю в модель. возвращаю столбец с классами делаю сортировку, получаю mrr около 0.014.

10 ответов

70 просмотров

Что значит “попрано их соединяю. Отправляю в модель. возвращаю столбец с классами делаю сортировку, получаю mrr около 0.014.”. Если задача ранжирования то причем здесь классы? И что за попарное соединение?

Andrei Kh
Что значит “попрано их соединяю. Отправляю в модел...

[насколько я понял из питона, тут "класс" имеет смысл group id]

Artem-Katsnelson Автор вопроса
Andrei Kh
Что значит “попрано их соединяю. Отправляю в модел...

У меня маленький поисковик, на вход приходит вектор и есть df (бд) с различными вариантами (векторами). Существует несколько верных пар, но только в рамках одного group_id. Нужно это все отранжировать. В качестве обучающих данных у меня есть бинарные оценки, соответстует ли пара друг другу или нет. В качестве X я и подаю вектор запроса 512 и вектор из бд тоже 512, а X будет 1024. Класс это group_id, те множество векторов, которы либо принадлежит вектор запроса, или не принадлежит, цель как раз и определить group_id запроса, поскольку я не знаю, как связаны вектор запроса и его правильный вектор из БД, там нелинейная зависимость.

вот тут ты пишешь, что после предикта сортируешь если это так, то проблема в этом

Artem-Katsnelson Автор вопроса
Евгений Петров
вот тут ты пишешь, что после предикта сортируешь е...

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

Artem Katsnelson
У меня маленький поисковик, на вход приходит векто...

если я правильно понял, получается у вас есть x - эмбеддинг запроса d - пары эмбеддинг и group_id y - правильный group_id для текущего x получается сэмл данных вида x - (d, group_id_d1) - group_id_y - 1 x - (d, group_id_d2) - group_id_y - 0 x - (d, group_id_d3) - group_id_y - 0 x - (d, group_id_d4) - group_id_y - 0 x - (d, group_id_d5) - group_id_y - 0 x - (d, group_id_d6) - group_id_y - 1 x - (d, group_id_d7) - group_id_y - 0 и хочется выучить такую функцию чтобы на инференсе уметь f(x, d) -> [0, 1] вопрос: при чем тут ранжирование? выглядит как обычная классификация

проверь, пожалуйста, что после сортировки сэмплы и "оценки" (y) по прежнему соответствуют друг другу

Михаил Марьин
если я правильно понял, получается у вас есть x - ...

разрешите вопрос. если в такой постановке мы делаем точечное ранжирование (т.е. без учёта групп), то это бинарная классификация по всем объектам. но если мы делаем списочное ранжирование то это бинарная классификация по объектам внутри группы в этом случае. я не правильно понимаю?

Artem-Katsnelson Автор вопроса
Михаил Марьин
если я правильно понял, получается у вас есть x - ...

нет, чуть-чуть не так x - это 2 соединных вектора (запрос|вектор из бд) y - бинарная оценка (1 - позитивная пара, 0 - негативная пара) group_id - класс, которому принадлежит вектор из БД Да с виду это чистая классификация, только беда в том, что мне надо видеть с какой вероятностью именно этот класс будет выбран. А это уже ранжирование

Похожие вопросы

Обсуждают сегодня

1. https://www.kaggle.com/code/ahmadrezagholami2001/housing-estimation-linear-regression 2. https://www.kaggle.com/code/ahmadrezagholami2001/uncovering-quality-in-wines-logis...
Ahmadreza
1
Hi! Could you please upvote my new notebook? thanks a lot. https://www.kaggle.com/code/melissamonfared/anime-character-generation-dsgan-gan
məru
4
upvote plz https://www.kaggle.com/code/bassetkerouche/swapping-face?scriptVersionId=207300096
benkerrouche Statoinary
1
-- Привет всем. -- Есть csv, проблема в том что он содержит очень много повторов по столбцам и по строкам. -- Решил перекинуть это в базу данных, чтобы было проще. Но я не ша...
Oleg Ivanov
1
Как считаете - вопрос на собесе: «Как быстрее всего запустить ec2 машину в aws (в чистом аккаунте) и показать вывод от любой команды с нее» не очень ли сложный для условного м...
Sergey
50
Господа, у меня вопрос. Что вообще такое этот ваш data science и data scientists? А то гуглю, а мне какую-то расплывчатую фигню говорят.
Inkosta
44
Исходя из ваших комментариев, получается, что чтобы получить марты в CH из данных в PG, неправильно тянуть сырые данные в CH и там их обрабатывать, лепить справочники и джойни...
unhingedlunatic
42
Hi could you please help me with my two new projects? https://www.kaggle.com/code/hesankazemnia/rice-image-classification-cnn-pytorch https://www.kaggle.com/code/hesankazemnia...
Hesan
6
hi, Can you upvote? https://www.kaggle.com/code/durjoychandrapaul/rag-q-a-system-by-langchain-huggingface-for-pdf?scriptVersionId=204704280
A
1
Could you upvote and comment please? https://www.kaggle.com/code/tatianapetrushkevich/beginner-images https://www.kaggle.com/code/tatianapetrushkevich/python-for-beginners1 ...
Tazziyana
7
Карта сайта