Data Adventures

266
Статистика
Статистика
266
Статистика темы
  • Популярность
    Топ-5302
  • Постов
    740
  • Просмотров
    124,937
  • Подписок
    266
  • Карма автора
    +5,574
1 3 4 5 6 38
Какие темы вам наиболее интересны?
  • MTT
    28%
    5
  • NLH cash
    17%
    3
  • Omaha
    28%
    5
  • Spins
    6%
    1
  • "Философские"
    22%
    4
  • c00l0ne @ 24.07.23 

    👍

    Есть может идеи как то кластеризовать игроков в разные группы?

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

     

    1. выбираем набор статистик которые считаем характеризующими игроков. Тут точно не нужны прям все. Я думаю всякие чекрейзы не так важны, но точно нужно смотреть в сторону AF и AFq. Это как и остальные пункты имеет некий элемент творчества. Написанный метод должен быть воспроизводимым чтобы потом можно было вернуться и поменять набор статистик.

     

    2. Упорядочиваем статистики от самых быстро-собираемых до редких. 

     

    3. Выбираем для себя некую отсечку (например в 100 случаев), и считаем все возможные статистика для всех игроков. У нас получается что скажем базовые статистики типа vpip, pfr, 3бет будут практически у всех игроков. Если для каких-то игроков нет, то считаем этих игроков шумом и откладываем в отдельный список, который сохраним как отдельный тип "игроки, которые редко играют" :) 

     

    4. делаем кластеризацию по самым частотным статистикам. Любым методом, не суть важно. K-means тебе даст разбиение множества на N групп, но количество N ты должен выбрать сам. Тоже задача с несколькими итерациями, желательно запрограммированными чтобы автоматически отработать. У тебя после этого пункта будет игроки типов 1, 2, 3, 4...

     

    5. добавляешь дополнительные (следующие по редкости) статистики к каждому из найденных типов и делаешь кластеризацию там. У тебя получатся игроки 1_1, 1_2... 4_1, 4_2 ... 

     

    6. проделываешь 5 несколько раз пока не исчерпаешь все статистики. У тебя получится дерево, надо его посмотреть, поиграть с ним, понять как его упростить чтобы игроков не было так дохрена. слишком мельчить и добавлять по одной статистике я бы не стал. возможно добавлял бы в первом приближении все выбранные статы с улицы. 

     

    Практическое использование - если игрок у тебя попал в группу 1_1, то ты берёшь для его анализа всех кто попал в эту группу + всех кто попал в эту группу ниже по дереву. 1_1_1,  1_1_2 и т.д. В итоге если у тебя мало рук для игрока, то он будет иметь максимально обобщённую группу.

     

    в итоге у тебя каждый попадает в какую-то группу, либо в группу 0 (недообследованные :) )

     

    плюсы метода - он простой. минусы - мы не даём оценки игроку с малым количеством рук, а хотелось бы. мы слабо используем информацию. Например если человек 3бетил 72о на префлопе и это есть на вскрытии, то казалось бы такая яркая инфа должна быть отражена в типизации, но этого тут нет. 

     

    Что может помочь - в место kmeans можно попробовать искать ближайших соседей. типа тех у которых статистики отличаются не сильно. чтобы они кучковались в группы. Плюсы - тебе не надо заранее задавать количество типов и как-то это изучать. Но надо ещё не забыть нормировать статистики, т.к. у них разные размерности. Ну типа VPIP может быть 30-40, а 3bet 10-15 надо всё привести к (0,1) или к (-1,1) как больше нравится. 

     

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

     

    P.S. пока я бы не попробовал хотябы вот это, хрен бы я полез в ML :) Т.е. сначала я делаю что-то простое на пальцах, потом возможно использую что-то из методов статистики (типа смотрю корреляции), и уже сильно потом может быть ML. Но редко на самом деле

    Ответить Цитировать
    35/352
    + 5
  • c00l0ne @ 24.07.23 

    А почему не закрывают ?...

    Из-за ложных срабатываний?

    да потому что не закрывают :) мир многогранен и не всем надо заниматься распознаванием образов. Одна из причин для меня - я не могу потом влезть в метод и посмотреть как он "думает". Нейросети это не метод для умных, это метод для ленивых. Ты скормил данные, тебе оно что-то выдало. Максимум ты проверил fit function, всё. Но ведь ты за результат отвечаешь, а не машина, а вдруг она просто запомнила твои данные, а не нашло в них паттерны? Скажем в твоих обучающих данных встречались чаще руки типа AK, и редко KA. они идентичны по смыслу, но нейросети пофиг (как и любому другому методу) и она где-то нашла логику и сделала это значимым признаком. В плане дерева я могу этот косяк в итоге обнаружить. В нейросети нет. Потом когда-то, когда данные уже устоялись, ты можешь прогнать десяток разных методов на них, найти тот, что вот в твоём случае работает лучше всего и его сохранить. Может это будет нейросеть, как знать, но по-умолчанию у этого метода нет форы над остальными. Если ты не знаешь данные, то для тебя все методы имеют одинаковую ценность. Может там линейной регрессии достаточно, а мы ебёмся с глубоким обучением? Задача специалиста делать просто, а не сложно.

     

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

    Ответить Цитировать
    36/352
    + 2
  • SnowBeaver, k-mean ясно понятно

    SnowBeaver @ 24.07.23 

    человек 3бетил 72о на префлопе

    Ну можно стату Ев какую нибудь прикрутить

    Ответить Цитировать
    15/138
    + 0
  • c00l0ne @ 24.07.23 

    что линейная функция типа получается, а нейросеть не линейная функция вроде. Можно эту тему закрыть, а то зацикливание какое то)

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

    Ответить Цитировать
    37/352
    + 1
  • Вообще если в целом посмотреть какие игроки являются регулярами в МТТ, то я для себя условно выделил 2 типа - одни играют много, другие качественно. Те кто настучал например по 55$ больше 30к рук в базе имеют bb/100 не выше 5. и их графики выглядят вот так.  

     

     

    а крутые игроки кто доводит винрейт до 15-18бб /100 играют вот так

     

    у этих двух игроков схожие постфлоп статы. такая же агрессия по улицам, такой же wtsd и контбеты, но первый чувак играет RFI / 3bet - 24 / 7, а второй 33 / 12. Можно собственно сделать выводы какая игра тащит и каким регом надо быть.

    Ответить Цитировать
    38/352
    + 2
  • На этой неделе хочу предложить вам статью на философскую тему. Разумеется имеющую какой-то смысл в покере. Вообще хочу немного разбавлять технические статьи чем-то более весёлым и не быть таким занудным технарём. Надеюсь получится. 

     

    Итак, сегодня я собираюсь с помощью маркетологической магии всего за 10 минут вашего внимания улучшить вам чтение рук и способность успешно блефовать на 2%. Вы узнаете супер трюк который работает против любого типа игроков и на любом лимите. Но для начала хочу отослать вас к вот этой статье на vc.ru Ценики с 9 на конце. Гипноз или маркетинг? Для тех кому лень читать длинную статью, мой краткий пересказ

     

    - мы живём в мире когнитивных искажений и неровные ценники увеличивают продажи. Это доказано статистически.

    - есть некоторая зависимость в цифрах на конце, которая работает. между 3.00 и 2.99 воспринимаемая разница цен есть, а между 3.60 и 3.59 нет.

    - исторически возникло по объективным причинам. Автор статьи приводит две. Обе из которых в текущей реальности уже не имеют места. Но не смотря на то, что изначальные предпосылки возникновения данного правила неприменимы к нашей реальности, неровные ценники работают всё также.

    - работает лучше на гедонистический товар, и практически не работает на утилитарный. Как-то связано с чувством вины и желанием себя оправдать за покупку. 

    Вы наверное догадались уже, что сейчас будет про покер :) И да, в нашей предметной области это тоже срабатывает. Для меня это кстати был сюрприз, и я ожидал, что просто проверю бредовую мысль в холостую. Попробуем поизучать на тех же базах майнинга МТТ, в которых большой блайнд всегда оканчивается нулями (по крайней мере на старзах). Я не ставлю себе цель проделать кристально чистый эксперимент и получить точные оценки, так что я проверю самый наивный способ - остаток от деления. Я буду брать ставки на флопе (не рейзы), считать их остаток от деления на 10, и сгруппировать по этим значениям в sql запросе. Дополнительно нормирую результат.

    with subq as
    (select s.amt_f_bet_made % 10 as digit, count(*) as n
    from tourney_hand_player_statistics s
    join tourney_hand_player_combinations c on c.id_hand = s.id_hand and c.id_player = s.id_player
    where s.amt_f_bet_made > 0
    group by s.amt_f_bet_made % 10
    order by 2 desc),

    mnq as
    (select sum(n) as n from subq)

    select q.digit, round(q.n*100.0/mq.n,3), q.n
    from subq q
    cross join mnq mq

    В итоге получаю:

    47% ставок ровные, далее остатки от деления по убыванию частоты. 

     

    Теперь я запускаю почти такой же запрос, но где у игрока была сильная рука


    with subq as
    (select s.amt_f_bet_made % 10 as digit, count(*) as n
    from tourney_hand_player_statistics s
    join tourney_hand_player_combinations c on c.id_hand = s.id_hand and c.id_player = s.id_player
    where s.amt_f_bet_made > 0 and s.id_holecard != 0 
        and (c.flg_f_straight or c.flg_f_flush or c.flg_f_fullhouse or c.flg_f_fouroak or c.flg_f_strflush)
    group by s.amt_f_bet_made % 10
    order by 2 desc),

    mnq as
    (select sum(n) as n from subq)

    select q.digit, round(q.n*100.0/mq.n,3), q.n
    from subq q
    cross join mnq mq

    Стрит, флаш, фулхаус, каре или стритфлаш. 

    И... когда у игрока сильная рука, он играется с неровными ставками на 2% реже. Видимо пытается быть менее заметным, и чтобы его рутинно заколировали, а не долго думали над какой-то хитрой ставкой вроде 9819 фишек вместо 10000. Проверил на всех моих базах данных и везде разница +/- 2%. т.е. игра на 109$ лимите показывает такую же тенденцию, что и на 22$. 

     

    Какие у меня вопросы возникли сразу как я это увидел? 

    - А на сколько вообще неровные ставки меняют фолдэквити? На какую ставку чаще сбрасываются в среднем?

    - Для какого типа игроков такое применимо? Делают ли также реги или связь с силой руки только у рекреационных нетренированных игроков?

     

    Попробуем ответить на эти вопросы. 

     

    Для фолдэквити я буду анализировать статистику "saw turn". Она будет ниже, если такого игрока будут реже коллировать (рейзить), т.е. он будет выигрывать банк без вскрытия если saw turn = false. 

    with subq as
    (select s.amt_f_bet_made % 10 as digit, count(*) as n, sum(case when s.flg_t_saw then 1 else 0 end) as t_saw
    from tourney_hand_player_statistics s
    left join tourney_hand_player_combinations c on c.id_hand = s.id_hand and c.id_player = s.id_player
    where s.amt_f_bet_made > 0 
    group by s.amt_f_bet_made % 10
    order by 2 desc),

    mnq as
    (select sum(n) as n from subq)

    select q.digit, round(q.n*100.0/mq.n,3), q.n, round(q.t_saw*100.0/q.n,2) as t_saw_percent
    from subq q
    cross join mnq mq

    И результаты получаются такие же волшебные. на ровную ставку падают чуть чаще, а неровной ставке слегка меньше доверяют. На каждой базе результаты получились похожие. Эта картинка для байина 22$, а вот эта для 109$

    как мы видим люди чуть больше доверяют ровной ставке и с окончанием 3,8. И менее доверяют ставкам с окончанием 1,7,9. шестёка и четвёрка прыгают туда сюда в зависимости от базы. 

     

    Получаются что если мы хотим чтобы оп чаще фолдил стоит играть либо ровную цифру, либо миксовать 3,5,8. Но это неточно :) у меня тут очень примитивный анализ. Но скорее всего если будете ставить ровное число, то не ошибётесь. а если с окончанием 1,7 или 9. то вы понижаете фолдэквити на 2% по сравнению с ровной ставкой. 

     

    Выглядит это конечно как полная шиза :)

     

    Давайте теперь попробуем немного отфильтровать игроков. Я заранее приготовил файл с простой типизацией. Меня интересовали слабые гриндеры с большой дистанцией (у которых красная уходит горкой вниз) и сильные игроки играющие качественный агрессивный покер (среднее bb/100 > 10). 

     

    Слабые игроки воспроизводят тенденцию. просто слегка чаще ставят неровные ставки.

    У сильных данная тенденция тоже есть, но чуть менее выражена. Но возможно у меня слишком маленькая база для анализа

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

    Тут небольшая выборка, но можно видеть, что ни у кого нет обратной тенденции. никто не пробует с сильной рукой ставить неровные ставки чаще. Все очкуют одинаково независимо от скила :) Я прошёл этими запросами по базам 22$, 27$, 33$, 44$, 55$, 75$, 109$ - во всех тенденции очень близкие. Поверить в это конечно трудно... хотя казалось бы, вот данные. 

     

    Короче, не блефуйте неровными ставками, вы так реально сильно палитесь :) 

     

    P.S. Самые пытливые могут подметить, что мои запросы не вполне корректные, и что возможно неровные ставки это просто оллины на остаток стека, а там типа оп не выбирает как оно получится. Я проверял эту гипотезу, она действительно немного уменьшает разницу, где-то на 0.2-0.3%, но я сохранил всё как есть для иллюстрации и чтобы не усложнять sql.

     

    P.P.S. Я вполне мог ошибиться, и это всё бред. Трюк выполняли опытные каскадёры, не пытайтесь повторить это дома :)

    Сообщение отредактировал SnowBeaver - 27.7.2023, 19:43
    Ответить Цитировать
    39/352
    + 21
  • SnowBeaver, wtf

    Что это было?)

    Ответить Цитировать
    16/138
    + 0
  • c00l0ne @ 28.07.23 

    SnowBeaver, wtf

    Что это было?)

    сам в шоке

    Ответить Цитировать
    40/352
    + 0
  • Что-то в этом есть интересное

    Ответить Цитировать
    1/1
    + 0
  • шикарное исследование, спасибо

    Ответить Цитировать
    1/1
    + 0
  • Катал недавно микролимиты по фану. Чтобы чуть ближе к реальности МТТ побыть (ну а ещё я лудоман :) ). Как бы вы тут сыграли? Есть ли у вас диапазон кола на MP в 25-30бб? Если есть, то какой?

    Gtowizard его там вообще не предусматривает

    Солвер

    Да, детка...

    Выложил только потому что сыграл за одним столом с Делией, чё она вообще забыла на таком лимите? :) я думал профи его не играют

    image.png?width=925&height=663

     

    Ответить Цитировать
    41/352
    + 1
  • SnowBeaver @ 30.07.23 

    микролимиты

     

    400 турниров по 30$ * 25 % рои (10 дней плотного гринда)

    =3000 долларов в мес... 

    Средняя зп в РФ 500$)

    Микролимиты это <10$

    Сообщение отредактировал c00l0ne - 30.7.2023, 14:30
    Ответить Цитировать
    17/138
    + 0
  • Ну поэтому люди в покер и играют. Чтобы иметь шансы на социальные лифты и не жить на 500$. Для меня это микро, я думал это общепринятно. NL25 же микро? :) У меня не микро это >= 100$. Типа по моему опыту люди уходят в покер и начинают там зарабатывать примерно когда они бьют этот лимит в кэш играх. Типа если рабочий лимит 100+ то ты зарабатываешь покером и это твоя работа, всё что до это пока начинающий.

     

    В мтт на 30$ уже можно увидеть тех, кто хотябы старается. типа есть реги. Играть ниже мне не интересно с практической точки зрения. Там люди просто случайно фишками бросаются в друг друга.

    Ответить Цитировать
    42/352
    + 0
  • SnowBeaver, понятно, а что вот эти цифорки означают?

    21123 и 6

    Ответить Цитировать
    18/138
    + 0
  • c00l0ne @ 30.07.23 

    SnowBeaver, понятно, а что вот эти цифорки означают?

    21123 и 6

    EV. надо делить на 2000 чтобы получить сколько в BB будет. Т.е. солвер оценил ситуацию как + 10.5BB за одну раздачу. А вторая это комбинации. чтобы тебе все 6 АА не показывать, показали один раз и написали что их 6.

    Ответить Цитировать
    43/352
    + 0
  • SnowBeaver @ 30.07.23 

    10.5BB за одну раздачу

    Тогда это, Хьюстон у нас проблема 

    Трибет: 11.13 Ев у gto wizard 

     

     

    Ответить Цитировать
    19/138
    + 0
  • Так у него дерево кастрированное. Как в этой позиции, так и в остальных. Нет смысла их между собой сравнивать. Представь как взлетит ев у АА если например фолды поубирать у всех :) Я ранее уже писал про это в статьях, если мы убираем у одних игроков степени свободы, то у других игроков растёт ожидание. Если они убрали колы, а оставили только 3беты, то конечно сильные пары будут выше ev иметь.

    Ответить Цитировать
    44/352
    + 0
  • SnowBeaver, 11.13-10.5 = 0.63 бб с руки

    Т.е. они насчитали на 63бб / 100 рук мимо ?

    Ответить Цитировать
    20/138
    + 0
  • c00l0ne @ 31.07.23 

    SnowBeaver, 11.13-10.5 = 0.63 бб с руки

    Т.е. они насчитали на 63бб / 100 рук мимо ?

    Они просто посчитали с меньшим количеством степеней свободы дерево. Оно тоже годится в практическом смысле, но просто сравнивать EV между разными деревьями не корректно. Хотя на мой взгляд убирать там колы тоже не корректно...

    Ответить Цитировать
    45/352
    + 0
  • Да ни каким софтом нормально оценить ЕВ ккола в 6 человек за спиной не получится - просто не будет адекватной оценки эквити на постфлопе в случае 3-4 вей банка. Да и люди не машины)). Все такие слоуплеи делаются только ради защиты своего диапа от сквизов на блайндах. И разные люди по-разному сквизят, соответственно. Я к тому, что солверы здесь не лучший помощник)

    Ответить Цитировать
    3/17
    + 0
1 3 4 5 6 38
2 человека читают эту тему (2 гостя):
Зачем регистрироваться на GipsyTeam?
  • Вы сможете оставлять комментарии, оценивать посты, участвовать в дискуссиях и повышать свой уровень игры.
  • Если вы предпочитаете четырехцветную колоду и хотите отключить анимацию аватаров, эти возможности будут в настройках профиля.
  • Вам станут доступны закладки, бекинг и другие удобные инструменты сайта.
  • На каждой странице будет видно, где появились новые посты и комментарии.
  • Если вы зарегистрированы в покер-румах через GipsyTeam, вы получите статистику рейка, бонусные очки для покупок в магазине, эксклюзивные акции и расширенную поддержку.