2013-06-11 3 views
9

У меня около 4000 сообщений блога со мной. Я хочу оценивать все должности в соответствии со следующими значениями:Алгоритмы ранжирования

Upvote Count => P 
Comments Recieved => C 
Share Count => S 
Created time in Epoch => E 
Follower Count of Category which post belongs to => F (one post has one category) 
User Weight => U (User with most number of post have biggest weight) 

Ожидающий ответ в псевдокоде.

+0

Голосование, чтобы закрыть как слишком широкое. –

ответ

19

Ваша проблема относится к категории regression (link). В терминологии машинного обучения у вас есть коллекция features (link) (которую вы перечисляете в своем вопросе), и у вас есть оценка значение, которое вы хотите предсказать с учетом этих возможностей.

Что предлагает Тед Хопп в основном linear predictor function (link). Это может быть слишком простой модель для вашего сценария.

Рассмотрите возможность использования logistic regression (link). Вот как вы могли бы использовать его.

1. Создайте модель обучения набора данных

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

Для каждого сообщения в блоге m оценивайте, как «хорошо» с номером от 0 до 1. Если это поможет, вы можете подумать об этом, используя 0, 1, 2, 3, 4 «Звезды» для значений 0, 0.25, 0.5, 0.75, 1.

У вас теперь есть m сообщений в блогах, каждый из которых имеет набор функций и оценки.

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

2. изучить вашу модель

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

В этом разделе я больше не буду рассказывать, потому что в Интернете полно деталей, и это законченный процесс.

Википедия ссылка:

3. Нанести Ваши модели

Изучив вашу модель логистической регрессии, теперь вы можете применить его, чтобы предсказать оценку как «хороший» новый пост в блоге! Просто вычислите набор функций (и производных функций), затем используйте свою модель для сопоставления этих функций с оценкой.

Опять же, в Интернете полно деталей этого раздела, который является законсервированным процессом.


Если у вас есть какие-либо вопросы, обязательно спросите!

Если вам интересно узнать больше о механизме обучения, вам следует подумать о принятии the free online Stanford Machine Learning course on Coursera.org. (Я не являюсь аффилированным лицом со Стэнфордом или Курсерой.)

+0

Я действительно чувствую, что эта модель является излишним. Как сказал Тед, вы хотите выяснить, насколько важен каждый фактор/функция и вычислить оценку. Это именно то, что этот ответ требует сделать на шаге 1. Как бы вы назначили ранг блогам в тренировках, установленным рационально и последовательно, не присваивая некоторые весовые функции. Теперь, если вы явно присвоили весы, проблема уже решена, зачем использовать алгоритм регрессии для «предсказания» ранга. – Gmu

+1

@Gmu После еды в ресторане, просмотра фильма, чтения книги и т. Д., Можете ли вы оценить общий опыт по шкале от 0 до 5 звезд? Когда вы оцениваете ресторан, осознаете ли вы свой рейтинг на очень низких уровнях, таких как «Жирный контент», «Содержание углеводов», «Дружественность сервера» и т. Д., А затем объединив их с весами, которые вы сознательно решили? Возможно нет. Тем не менее, вы можете оценивать рестораны «рационально и последовательно» (в некоторой степени). –

+0

спасибо за разъяснение. поэтому он выявляет скрытые веса, которые ваш разум подсознательно назначает. Количественное определение качественного ответа на последовательность в качественных ответах/оценках. – Gmu

9

Я бы предложил средневзвешенное значение отдельных баллов для каждого сообщения в блоге. Назначьте вес, который отражает как относительную важность каждого значения, так и различия в шкале значений (например, E будет очень большим по сравнению с другими значениями). Затем вычисляем:

rank = wP * P + wC * C + wS * S + wE * E + wF * F + wU * U; 

Вы не дают никакой информации об относительной важности каждого значения или даже то, что значения означают в терминах ранга. Поэтому невозможно быть более конкретным. (Должно ли старое время создания нажимать сообщение вверх или вниз по ранге? Если вниз, то wE должен быть отрицательным.)

Смежные вопросы