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

по 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 ответов

35 просмотров

Что значит “попрано их соединяю. Отправляю в модель. возвращаю столбец с классами делаю сортировку, получаю 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 - класс, которому принадлежит вектор из БД Да с виду это чистая классификация, только беда в том, что мне надо видеть с какой вероятностью именно этот класс будет выбран. А это уже ранжирование

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

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

Только сейчас дошли руки до Orange pi 5. Это нормально что на нем YOLOv5s выдает 1 кадр раз в 2-3 секунды на CPU? Это без оптимизаций и прочих настроек, просто голый запуск че...
Denis
10
Доброе утро. Подскажите, если если 4 корутины, внутри которых VideoCapture, то будут ли они работать асинхронно? Т.к. нагуглил, что Videocapture в моменте может быть открыт то...
Alexander👨‍💻
19
Всем привет! подскажите пожалуйста как можно увеличить качество фото?
Evgeniy
19
Всем привет! Подскажите пожалуйста С помощью OpenCVSharp работаю с rtsp потоком Но почему-то через +- 2 минуты поток зависает без всяких ошибок В какую сторону копать? С ...
Evgeniy
4
Кто работал с NPU на Рокчипе, можете подсказать, инициализирую модель (см. скрин 1), запускаю и на "init_runtime" выдает ошибку "undefined symbol: rknn_set_core_mask" (см. скр...
Denis
1
Я пожалуй ещё раз брошу клич: кто-нибудь хочет в рабство в ОЭЗ Алабугу на позицию инженера CV? Работы много, задачи сложные, ЗП высокая. Я передам контакт напрямую в HR.
Maxim 👀 Osminin #Slowpoke3D
13
А вы в атоме работаете да?
Alexander x*❄️❅❆
11
I have this grayscale image in opencv I want to change gray quadrilaterals to black like others It means i want to change gray color of specific color to black How can i do th...
@. .@
7
Could you upvote please? https://www.kaggle.com/code/mehmetisik/sentiment-analysis-twitter-nlp-machine-learning https://www.kaggle.com/code/mehmetisik/user-based-collaborati...
MHT Mht
1
всем драсте, занимаемся активно макетами печатной продукции каждый раз при закае нам шлют pdf или ai, любой вектор кароч чтоб внести заказ нужно каждый раз вручную создавать ...
Vlados
4
Карта сайта