Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / предложите алгоритм / 12 сообщений из 12, страница 1 из 1
25.06.2014, 13:05
    #38679621
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
Здравствуйте, коллеги. Вот как бы вы решали подобную задачу:
есть пользователи системы, порядка 80 000. Эти пользователи делают некоторые действия. Нужно посчитать вероятность того что пользователь сделает следующее действие. Если проще:
есть 80 000 булевых массивов разной длинны, в каждом из массивов часть флагов =0, часть =1. Мне нужно понять с какой вероятностью следующий элемент массива будет =1. Простое среднее не подходит, так как пользователь мог уехать на дачу, мог "забить" на сервис, мог умереть и хз что еще. К примеру если пользователь сделал 10 действий подряд, а потом не делал 5 действий, я могу предположить что, скорее всего, он не сделает и 6-ое, с другой стороны если он не делал 10 действий, а потом сделал 2 подряд - наверняка сделает и третье.
Можно считать общий алгоритм, можно по каждому юзеру, можно комбинировать, возможно стоит расставить веса, прогнав алгоритм по истории, можно еще как угодно. Алгоритм очень важный в системе так как определяет маржинальность предприятия.
...
Рейтинг: 0 / 0
25.06.2014, 13:16
    #38679637
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
Denis.Простое среднее не подходит, так как пользователь мог уехать на дачу, мог "забить" на сервис, мог умереть и хз что еще.
Отфильтруй таких кто не доделал, а дальше простое среднее подойдет.
...
Рейтинг: 0 / 0
25.06.2014, 14:59
    #38679827
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
Мне кажется эту задачу можно решать анализируя лог действий. И булева матрица
будет не нужна.
...
Рейтинг: 0 / 0
25.06.2014, 16:18
    #38680003
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
Denis., погружаетесь в common conversion activities?
...
Рейтинг: 0 / 0
25.06.2014, 16:23
    #38680012
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
Сейчас модно использовать язык R для таких вещей
...
Рейтинг: 0 / 0
25.06.2014, 19:25
    #38680278
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
Denis.,

это очень просто, тут и считать ничего не надо. Вероятность, что пользователь сделает следующее действие — 1/2.
Либо сделает, либо не сделает.
...
Рейтинг: 0 / 0
26.06.2014, 05:49
    #38680428
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
Denis, а можно для особо одарённых подробней объяснить, и пример привести. Мне пока не понятно что вам нужно, и в чём проблема
...
Рейтинг: 0 / 0
26.06.2014, 13:17
    #38680765
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
MasterZivDenis.,

это очень просто, тут и считать ничего не надо. Вероятность, что пользователь сделает следующее действие — 1/2.
Либо сделает, либо не сделает.

+1. Не поспоришь!

Denis, данных, которые ты предлагаешь, не достаточно для определения алгоритма...

Ну например... аналогия с твоим случаем... мы хотим предугадать стоимость доллара на завтра... У нас есть его стоимость за последних 5 лет. Сможем ли мы по ним определить завтрашний курс? НЕТ!!!
для этого надо знать соответственные биржевые индексы, стоимость нефти (которая в большой мере диктует курс доллара как я знаю), все последние события, аля "умер директор газпрома, а новый уже 2 недели не может вступить в должность"... И тому подобное.
И даже при этом, бывают случаи, когда самые лучшие эксперты ошибаются, так как наступает некий форсмажом (например, русский газопровод был повреждён стихией и без газа осталась половина Европы, ремонтные работы ведутся уже несколько дней. Соответственно рубль начинает обесцениваться).

Потому как уже правильно сказал MasterZiv при наличие тех данных, что ты даёшь, можно лишь сказать что вероятность выполнения действия 50/50... Единственное, можно оценить периодичность совершения данного действия человеком, или например, если действия последовательны, то процентное соотношение завершённых цепочек... Это может процентов на 10 скорректировать общую картину (от 40 до 60 думаю)... Большего думаю добиться невозможно. Факторов сотни (например, с женой поругался, ушёл в запой, действие не совершил), а учитывается лишь один-два.
...
Рейтинг: 0 / 0
26.06.2014, 14:58
    #38680913
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
В наиболее общей постановке эта наука называется "прогнозирование". Но мне кажется
автору достаточно анализировать дату последнего логона юзера в систему. И рубить
нафих всех кто старше заданного периода.
...
Рейтинг: 0 / 0
27.06.2014, 18:48
    #38682252
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
я посылаю пользователю (подписавшемуся на сервис) смску: "скачай приложение и получи 14 рублей на счет мобильного телефона"
Он скачивает, получает свои 14, я свои "20", все довольны.
Проблема в том, что смс стоит примерно пол рубля. Из тех кому я шлю в среднем треть ссылку открывает, половина из тех кто открыл скачивает. Итого я шлю грубо говоря 6 смсок на скачивание, то есть 3 рубля из маржи в 6 я трачу на смски. В идеальной ситуации я должен слать 1 смску, точно понимая, что пользователь скачает. Все пользователи на сервис подписаны, все знают, как он работает, могут отписаться от него. Также я понимаю, что есть куча иных более дешевых каналов связи с пользователем. Тем не менее хочу оптимизировать смс. Я понимаю, что факторов тьма - если пользователь скачал последнее смс, значит высока вероятность что скачате и следующее, несмотря на его историю, я знаю в какие часы пользователи охотнее скачивают приложения, я знаю какие цены за скачивания им нравятся, а какие нет, знаю в какой день недели какая активность. Вот теперь хочется этот все вместе связать, чрезмерно не усложняя но добившись хорошего результата.
Когда-то это выглядело примерно так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 foreach (var grouppedLink in links)
                {
                    double chance = 1;
                    if (grouppedLink.Values.Any())
                    {
                        if (!grouppedLink.Values.Any(isUsed => isUsed))
                        {
                            chance = 0.15 / grouppedLink.Values.Count();
                        }
                        else
                        {
                            chance = (double)grouppedLink.Values.Count(isUsed => isUsed) / grouppedLink.Values.Count();
                        }
                    }

                    const double SMS_COST = 0.375;
                    if ((SMS_COST * 2) * 1.1 <= (weGetPayed - wePay) * chance * 0.9)
                        yield return grouppedLink.UserId;
                }


сейчас этого не достаточно, ибо этот код является определяющим маржинальность по сути.
Я думаю, что это нужно делать комбинацией оптимизаций коэффициенты, в которых прогнать через историю. Например, я говорю, что если пользователь скачал последнее смс, значит вероятность увеличивается на +50%, если пользователь скачал все приложения ценой более 10 рублей и не скачал ни одного ценой менее 10 рублей, и выборка репрезентативна для него, и цена текущего предложения менее 10 рублей то делим общую вероятность на 2. Таким образом, создав много метрик, и обучив их на истории я получу хороший результат. Но возможно я занимаюсь велосипедостроением и это можно сделать проще и умнее. Я не знаю.
...
Рейтинг: 0 / 0
27.06.2014, 18:52
    #38682261
Denis.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
skyANADenis., погружаетесь в common conversion activities?
не слышал о таком, гляну на досуге.
...
Рейтинг: 0 / 0
30.06.2014, 11:10
    #38683471
WebSharper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предложите алгоритм
Предлагаю поступить цинично. Использовать идеи статьи "A plan for spam" для рассылки спама.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / предложите алгоритм / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]