Jump to content

Машинное обучение: гайд по Линейной Регрессии на примере Minecraft


DeniTheAccursed
 Share

Recommended Posts

Здравствуйте!

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

 

Линейная регрессия.

Что это такое? Линейная регрессия (или регрессионный анализ) показывает, по какому закону или как Y зависит от X. 

Всё это можно охарактеризовать как уравнение вида Y = kx + b; где k это наклон прямой, где b - это смещение прямой.

 

Как решить уравнение вида Y = kx + b? 

Для этого применяется МЕТОД НАИМЕНЬШИХ КВАДРАТОВ или ГРАДИЕНТНЫЙ СПУСК. (и другие методы решения). Но мы сегодня остановимся на методе наименьших квадратов, так как оно преподается в наших вузах и может быть полезно для игроков.

regress-10.png.bb7bdba711fba034e3447f0fd4575b0e.png

 

Наша цель:

Это построить такую прямую на графике, которая бы минимизировала расстояние между каждым значением. То есть, такую линию, до которой у всех данных было бы минимум расстояние. О том, как работает метод наименьших квадратов очень хорошо объясняется на канале "Душкин объяснит". 

 

Рассмотрим такой пример: 

lilly_was_a_little_girl.png.a2bd56a7d9d8e01cb6929adb943ddedb.png

 

Конечно, вы можете сказать, что в поиск алмазов в Minecraft - это чистая теория вероятности. Я не буду спорить, действительно, глубина копания мало чего имеет общего с КОЛИЧЕСТВОМ алмазов. На определенной глубине их может попасться сколь угодно. Но мы рассматриваем пример.

 

Отобразим эти данные на графике: 

GRAPHICXT.png.e2dbf34befe443c4b152e36757773d72.png

 

 

Тут показана зависимость между глубиной и найденными алмазами. Наша задача - построить такую линию Y = kx + b, которая минимизировала бы расстояние(ошибка) между алмазами. Например:

GRAPHICXT.png.daea2220aa156f365635c4c3cc5344d8.png

 

Для этого, найдем коэффициенты k и b; 

По формуле xi1 + xi2 + xi3 + .. .. + xn / n - находим среднее значение обоих X и Y; (суммируем все значения X и делим на количество значений) 

 

Для глубины: Xср = 50 + 20 + 10 + 5 = 85/4 = 21.25

Для алмазов: Yср = 0 + 5 + 8 + 10/4 = 5.75

 

Найдем коэффициенты k:

Подставляем в формулу наименьших квадратов: sum((x-xср)(y - yср)/(x-xср)^2)

Получаем: -0.2125

 

Найдем коэффициенты b: 

b = Yср - kxср = 10.27

 

Отобразим линию на графике:

regress-10.png.76d8dcec2cf52833387304cc08f3bc26.png

 

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

Например: -0.2125*15глубина + 10.27 = 7 алмазов.

 

Для более больших данных нужно использовать градиентный спуск. Но это уже в другой раз.

 

Примечание: x - это алмаз. xcр - это среднее значение алмазов.

В формуле наименьших квадратов нам необходимо отнять среднее значение с каждого x и суммировать значения.

Аналогично с Y и Yср. 

Расположить линию, чтобы минимизировать ошибки - это значит, расположить линию таким образом, чтобы она была близко (насколько это возможно) ко всем алмазам.

 

 

 

Edited by DeniTheAccursed
  • Нравится 1
Link to comment
Share on other sites

Каким образом вы копаете высоту в один блок? Вы копаете минимум в 2 блока так как высота это блок в ногах Если алмазы будет находится сверху или ниже их выкопать не будете? Также не понятно высота в линию из 16 блоков по x-z в чанке или по площади(16*16). На границах чанков шанс встретит какую либо руду в 2 раза выше так как слева и справа от линии чанков будет две независимо сгенерированные жилы. А на стыках чанков вообще 4.

Edited by Kadurov
Link to comment
Share on other sites

01.01.2025 в 05:03, Kadurov сказал:

Каким образом вы копаете высоту в один блок? Вы копаете минимум в 2 блока так как высота это блок в ногах Если алмазы будет находится сверху или ниже их выкопать не будете? Также не понятно высота в линию из 16 блоков по x-z в чанке или по площади(16*16). На границах чанков шанс встретит какую либо руду в 2 раза выше так как слева и справа от линии чанков будет две независимо сгенерированные жилы. А на стыках чанков вообще 4.

Я вообще ничего не понял из того, что ты написал. Я же вроде написал, что встреча алмазов и прочее, это чистая теория вероятностей и что мой пост не имеет к этому никакого отношения. Я просто показал, как Y зависит от X.

Link to comment
Share on other sites

10 часов назад, DeniTheAccursed сказал:

Я вообще ничего не понял из того, что ты написал.

Я тоже причем здесь алмазы  и майнкрафт? Алмазы генерируются не только по высоте а еще по количество жил в чанке. Поэтому что именно показывает  ваш график мне непонятно. 7 алмазов это что и где? Y от X никак не зависит а если и зависит то только от фазы луны!

Edited by Kadurov
Link to comment
Share on other sites

Posted (edited)
39 минут назад, Kadurov сказал:

Я тоже причем здесь алмазы  и майнкрафт? Алмазы генерируются не только по высоте а еще по количество жил в чанке. Поэтому что именно показывает  ваш график мне непонятно. 7 алмазов это что и где? Y от X никак не зависит а если и зависит то только от фазы луны!

"Конечно, вы можете сказать, что в поиск алмазов в Minecraft - это чистая теория вероятности. Я не буду спорить, действительно, глубина копания мало чего имеет общего с КОЛИЧЕСТВОМ алмазов. На определенной глубине их может попасться сколь угодно. Но мы рассматриваем пример." 

 

Я ещё раз напомню, что это был простой пример, если бы алмазы зависели от глубины. Мало чего общего это имеет с реальной игрой.

Edited by DeniTheAccursed
Нашёл до чего докопаться.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...