Классификация и теория вероятностей
От: Gattaka Россия  
Дата: 17.12.16 15:49
Оценка:
Чтобы долго не рассказывать попробую выдумать задачу и адаптировать для нее. Предположим я прогнозирую список из 5 книг, которые купит пользователь с наибольшей вероятностью. Всего книг 24 возможных. У меня есть модель которая по фичам пользователя дает прогноз, она неплохо работает, но не учитывает изменения популярности книг со временем. А она значительна.
Предположим я обучался на 06 месяце 2015 года и мне надо сделать прогноз для 06 месяца 2016 года. Для некоторого пользователя получен прогноз:

[ 0.00273501 0.00273501 0.21609817 0.00411186 0.00925567 0.1917159
0.04742743 0.00293886 0.00331788 0.01592568 0.00443959 0.00344877
0.04274225 0.01281825 0.00274041 0.01408142 0.00274985 0.12125014
0.01134686 0.00730866 0.00296034 0.10991038 0.04232292 0.12561873]

Номер позиции в массиве это и есть книга. Далее он сортируется и берется 5 с наибольшими вероятностями. Но не суть.
В 15 году было куплино следующее количество книг

[ 1 0 3878 5 2347 40
531 226 131 0 0 46
2709 61 3 22 7 279
4248 183 7 5488 5513 10163]

В 16 году это количество изменилось

[ 0 0 6731 9 1872 8
211 216 152 290 33 956
1205 245 4 19 8 2933
4684 152 3 5082 8147 9031]

И я хотел бы сделать коррекцию прогноза на величину изменения популярности. Например, третья книга почти в два раза выросла по популярности. Казалось бы нужно разделить количество в 16 году на 15 год и умножить на вероятности прогноза. Но так делать нельзя. Т.к. для 6-й книги получится неоправданно большой (40/8) коэффициент. Т.е. нужно еще и общее число как-то учитывать. Вопрос как это делают?
Re: Классификация и теория вероятностей
От: С3141566=Z http://sdeniskos.blogspot.com/
Дата: 17.12.16 17:02
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>И я хотел бы сделать коррекцию прогноза на величину изменения популярности. Например, третья книга почти в два раза выросла по популярности. Казалось бы нужно разделить количество в 16 году на 15 год и умножить на вероятности прогноза. Но так делать нельзя. Т.к. для 6-й книги получится неоправданно большой (40/8) коэффициент. Т.е. нужно еще и общее число как-то учитывать. Вопрос как это делают?

Через условную вероятность -- апостериорная это в простейшем случае произведение факторов (популярность книги общая * популярность с учетом твоей модели), самая проблемная часть -- получить нормировочный фактор, чтобы это все было вероятностью, в грубом приближении достаточно просто получившееся произведение нормировать на 1 для данного пользователя. Если не будет работать на практике -- надо думать.
<Подпись удалена модератором>
Re[2]: Классификация и теория вероятностей
От: Gattaka Россия  
Дата: 17.12.16 17:16
Оценка:
Здравствуйте, С3141566=Z, Вы писали:

СZ>Здравствуйте, Gattaka, Вы писали:


G>>И я хотел бы сделать коррекцию прогноза на величину изменения популярности. Например, третья книга почти в два раза выросла по популярности. Казалось бы нужно разделить количество в 16 году на 15 год и умножить на вероятности прогноза. Но так делать нельзя. Т.к. для 6-й книги получится неоправданно большой (40/8) коэффициент. Т.е. нужно еще и общее число как-то учитывать. Вопрос как это делают?

СZ>Через условную вероятность -- апостериорная это в простейшем случае произведение факторов (популярность книги общая * популярность с учетом твоей модели), самая проблемная часть -- получить нормировочный фактор, чтобы это все было вероятностью, в грубом приближении достаточно просто получившееся произведение нормировать на 1 для данного пользователя. Если не будет работать на практике -- надо думать.
Ага, то есть если вдруг есть очень редкая книга, но моя модель точно знает что пользователь ее купит. Дает прогноз 0.9565 или что-то вроде этого. Общая популярность у нее крайне мала 0.004. Я перемножаю и получаю 0.003826, т.е. общая вероятность по факту забивает мою модель. Именно это должно разруливаться нормировочным фактором? Т.е. если прогноз модели для данной книги слишком большой — берем его. Или я не правильно понимаю?

И второй вопрос, а что если просто линейную регрессию построить по двум переменным, прогноз модели и общая популярность. Так не делают?
Re: Классификация и теория вероятностей
От: akochnev Россия  
Дата: 19.12.16 11:05
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>И я хотел бы сделать коррекцию прогноза на величину изменения популярности. Например, третья книга почти в два раза выросла по популярности. Казалось бы нужно разделить количество в 16 году на 15 год и умножить на вероятности прогноза. Но так делать нельзя. Т.к. для 6-й книги получится неоправданно большой (40/8) коэффициент. Т.е. нужно еще и общее число как-то учитывать. Вопрос как это делают?


Попробуй включить этот коэффициент в качестве фичи.
В общем случае, если у тебя результат зависит от времени, то нужно добавлять фичи, зависящие от времени. Например, уже существующие фичи считать на некотором backwindow (напрмер за последний год), там где это имеет смысл.
Как правило, каждая модель позволяет оценить вклад каждой фичи в результат, соответственно можно будет увидеть, какие оказались полезными, а какие нет.
Re[2]: Классификация и теория вероятностей
От: Gattaka Россия  
Дата: 19.12.16 11:16
Оценка:
Здравствуйте, akochnev, Вы писали:

A>Попробуй включить этот коэффициент в качестве фичи.

A>В общем случае, если у тебя результат зависит от времени, то нужно добавлять фичи, зависящие от времени. Например, уже существующие фичи считать на некотором backwindow (напрмер за последний год), там где это имеет смысл.
A>Как правило, каждая модель позволяет оценить вклад каждой фичи в результат, соответственно можно будет увидеть, какие оказались полезными, а какие нет.
Уже пробовал, результат даже ухудшился. Возлагал на это большие надежды. Сейчас разрулил тупо паттерном if и вручную рулю предсказаниями — есть положительный результат, но жутко не универсально.
Re[3]: Классификация и теория вероятностей
От: akochnev Россия  
Дата: 19.12.16 11:28
Оценка:
Здравствуйте, Gattaka, Вы писали:

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

Интересно разобраться почему. Что в основе модели? Деревья, сети?
Как поменялся результат для примера из исходного поста?
Из моего опыта, если результат работы модели противоречит конкретному очевидному примеру, то стоит внимательно присмотреться — вдруг где-то при формировании фичи закралась ошибка?
Re[4]: Классификация и теория вероятностей
От: Gattaka Россия  
Дата: 19.12.16 12:28
Оценка:
Здравствуйте, akochnev, Вы писали:

A>Здравствуйте, Gattaka, Вы писали:


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

A>Интересно разобраться почему. Что в основе модели? Деревья, сети?
В основе деревья.
A>Как поменялся результат для примера из исходного поста?
Для конкретно этого примера не смотрел, вполне возможно что именно для этого не поменялся. У меня метрика map@7 было что-то вроде 0.822704318474, а после добавления фич 0.810530596046
Т.е. поменялось, но слабо в худшую сторону — я так прикинул, что фиг найдешь где хуже стало. Хотя если подумать нужно было поискать, ща попробую...

A>Из моего опыта, если результат работы модели противоречит конкретному очевидному примеру, то стоит внимательно присмотреться — вдруг где-то при формировании фичи закралась ошибка?

Я так понимаю, что оно просто не чувствует зависимость. У меня 12 месяцев и 22 фичи, если было бы месяцев было штук 70 или 700 — оно бы почувствовало.
Re[3]: Классификация и теория вероятностей
От: С3141566=Z http://sdeniskos.blogspot.com/
Дата: 20.12.16 14:57
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Ага, то есть если вдруг есть очень редкая книга, но моя модель точно знает что пользователь ее купит.

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

G>И второй вопрос, а что если просто линейную регрессию построить по двум переменным, прогноз модели и общая популярность. Так не делают?

От логарифмов считай регрессию тогда она сойдется при параметрах (а == 1, b == 1) к перемножению условных вероятностей. При других будет что=то более адекватное твоему представлению как оно должно быть.
<Подпись удалена модератором>
Re[4]: Классификация и теория вероятностей
От: Gattaka Россия  
Дата: 22.12.16 10:27
Оценка:
Здравствуйте, С3141566=Z, Вы писали:

G>>Ага, то есть если вдруг есть очень редкая книга, но моя модель точно знает что пользователь ее купит.

СZ>Откуда он знает, если выборка очень маленькая? перемножение факторов работает в том числе как регуляризация.
Я не уверен. Возьмем к примеру градиентный бустинг. Мультиклассовая классификация. Есть данные — всего 100 000 кейсов. Причем 200 кейсов абсолютно точно классифицируются как класс 2. Допустим это пользователи и, скажем, при возрасте 20 лет это четко 2-й класс. Так вот какова будет вероятность класса — 100% как я думаю? Или как вы написали что-то около 200/100 000 — 0.002. Не знаю как ведет себя GBM в таком случае. Вы знаете?

G>>И второй вопрос, а что если просто линейную регрессию построить по двум переменным, прогноз модели и общая популярность. Так не делают?

СZ>От логарифмов считай регрессию тогда она сойдется при параметрах (а == 1, b == 1) к перемножению условных вероятностей. При других будет что=то более адекватное твоему представлению как оно должно быть.
Есть еще другой вариант — обучающую выборку сформировать таким образом, чтобы распределение классов там соответствовало прогнозируемому. Это будет работать, но не очень практично, придется каждый месяц строить модель исходя из прогноза по классам.
Re[5]: Классификация и теория вероятностей
От: С3141566=Z http://sdeniskos.blogspot.com/
Дата: 24.12.16 11:48
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Здравствуйте, С3141566=Z, Вы писали:


G>>>Ага, то есть если вдруг есть очень редкая книга, но моя модель точно знает что пользователь ее купит.

СZ>>Откуда он знает, если выборка очень маленькая? перемножение факторов работает в том числе как регуляризация.
G>Я не уверен. Возьмем к примеру градиентный бустинг. Мультиклассовая классификация. Есть данные — всего 100 000 кейсов. Причем 200 кейсов абсолютно точно классифицируются как класс 2. Допустим это пользователи и, скажем, при возрасте 20 лет это четко 2-й класс. Так вот какова будет вероятность класса — 100% как я думаю? Или как вы написали что-то около 200/100 000 — 0.002. Не знаю как ведет себя GBM в таком случае. Вы знаете?

В этом случае, вероятность покупки будет раскладываться как P(покупки) = Нормировочный множитель * P(покупки | класс) * P(класс), нормировку можешь взять путем усреднения ответов всех классификаторов. Как ты тренируешь модель (бустингом или еще чем) значения почти не имеет,точнее в тонких случаях имеет, но это к данной ситуации не имеет отнощения.

G>Есть еще другой вариант — обучающую выборку сформировать таким образом, чтобы распределение классов там соответствовало прогнозируемому. Это будет работать, но не очень практично, придется каждый месяц строить модель исходя из прогноза по классам.

Хрень получится, либо перетрен.
<Подпись удалена модератором>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.