Всем привет. Проблема следующая. Необходимо расчитать Pagerank (PR) для 4-х воображаемых страниц в зависимости от кол-ва ссылок между ними. При этом число необходимых итераций должно определяться автоматически. Вот формула по которой рассчитывается Pagerank: Где A, B, C, D - это наши страницы. N - число всех страниц (в нашем случае 4). d - это коэффициент затухания, который определяется как 0,85. L - это кол-во ссылок на каждой странице. Начальный PR для каждой страницы рассчитывается как 1/число страниц. В нашем случае начальный PR у каждой страницы равен 0,25. Теперь обо всем подробно: Ссылки представлены в виде матрицы: Где строки - 1, 2, 3, 4 - это значит "с каких страниц стоят ссылки", столбцы 1, 2, 3, 4 - это "на какие страницы стоят ссылки". Таким образом страница 1 ссылается на страницу 4, страница 2 ссылается на страницы 1 и 3, страница 3 ссылается на страницу 1 и страница 4 ссылается на страницы 1, 2 и 3. Строка "исходящие" - это сумма ссылок для каждой страницы, рассчитанная как сумма строк 1, 2, 3 и 4 (это и есть L в вышеприведенной формуле).
Итак, исходя из этих данных мы можем пересчитать базовый PR (который изначально у нас 0.25 для каждой страницы) в реальный (который будет уже зависеть от числа исходящих ссылок). Для этого надо разделить PR каждой страницы на соответствующее ей число ссылок. После этого, чтобы рассчитать сам PR для каждой страницы я делаю следующее: Т.е. мы перемножаем функцией МУМНОЖ две матрицы и в результате получаем значение PR для каждой страницы. Это будет первая итерация, но суть PR в том, что нужно повторно пересчитывать значения, подставляя результат предыдущего расчета до тех пор, пока последнее значение расчета не будет почти равно предыдущему. При этом сумма PR для всех страниц должна всегда равняться единице. Т.е. в следующей итерации мы берем последний результат PR, делим его на постоянную величину кол-ва ссылок на странице и по новой перемножаем матрицы. Прикрепляю файл, где на первой странице PR рассчитывается в ручном режиме в 28 итераций, на втором листе я попытался в автоматическом режиме подсчитать это дело, но не вышло, поэтому второй лист не закончен. Задача - сделать так, чтобы excel определял автоматически число необходимых итераций при которых новое значение PR будет почти равно предыдущему расчету (полностью равны они никогда не будут). Другими словами, при каждом перерасчете - PR все более стремится к значению предыдущего расчета, нужно, чтобы excel самостоятельно пересчитывал эти значения до тех пор, пока они не будут отличаться на 0.01 или 0.001. Подскажите пожалуйста, как это можно реализовать стандартными методами excel без использования циклических ссылок?
Всем привет. Проблема следующая. Необходимо расчитать Pagerank (PR) для 4-х воображаемых страниц в зависимости от кол-ва ссылок между ними. При этом число необходимых итераций должно определяться автоматически. Вот формула по которой рассчитывается Pagerank: Где A, B, C, D - это наши страницы. N - число всех страниц (в нашем случае 4). d - это коэффициент затухания, который определяется как 0,85. L - это кол-во ссылок на каждой странице. Начальный PR для каждой страницы рассчитывается как 1/число страниц. В нашем случае начальный PR у каждой страницы равен 0,25. Теперь обо всем подробно: Ссылки представлены в виде матрицы: Где строки - 1, 2, 3, 4 - это значит "с каких страниц стоят ссылки", столбцы 1, 2, 3, 4 - это "на какие страницы стоят ссылки". Таким образом страница 1 ссылается на страницу 4, страница 2 ссылается на страницы 1 и 3, страница 3 ссылается на страницу 1 и страница 4 ссылается на страницы 1, 2 и 3. Строка "исходящие" - это сумма ссылок для каждой страницы, рассчитанная как сумма строк 1, 2, 3 и 4 (это и есть L в вышеприведенной формуле).
Итак, исходя из этих данных мы можем пересчитать базовый PR (который изначально у нас 0.25 для каждой страницы) в реальный (который будет уже зависеть от числа исходящих ссылок). Для этого надо разделить PR каждой страницы на соответствующее ей число ссылок. После этого, чтобы рассчитать сам PR для каждой страницы я делаю следующее: Т.е. мы перемножаем функцией МУМНОЖ две матрицы и в результате получаем значение PR для каждой страницы. Это будет первая итерация, но суть PR в том, что нужно повторно пересчитывать значения, подставляя результат предыдущего расчета до тех пор, пока последнее значение расчета не будет почти равно предыдущему. При этом сумма PR для всех страниц должна всегда равняться единице. Т.е. в следующей итерации мы берем последний результат PR, делим его на постоянную величину кол-ва ссылок на странице и по новой перемножаем матрицы. Прикрепляю файл, где на первой странице PR рассчитывается в ручном режиме в 28 итераций, на втором листе я попытался в автоматическом режиме подсчитать это дело, но не вышло, поэтому второй лист не закончен. Задача - сделать так, чтобы excel определял автоматически число необходимых итераций при которых новое значение PR будет почти равно предыдущему расчету (полностью равны они никогда не будут). Другими словами, при каждом перерасчете - PR все более стремится к значению предыдущего расчета, нужно, чтобы excel самостоятельно пересчитывал эти значения до тех пор, пока они не будут отличаться на 0.01 или 0.001. Подскажите пожалуйста, как это можно реализовать стандартными методами excel без использования циклических ссылок?Xardas
Люди, ну неужели никто не может помочь? По сути, нужно автоматизировать расчет значений, чтобы не вручную копировать строки с пересчетом значений, а чтоб сам excel пересчитывал их заново, подставляя последнее полученное значение. Видите? В последних итерациях значения PR почти одинаковые. Вот и нужно, чтобы пересчет останавливался, когда различие между значениями доходит например до 0.01 (upd: нужно, чтобы эта величина различия тоже определялась автоматически.
Люди, ну неужели никто не может помочь? По сути, нужно автоматизировать расчет значений, чтобы не вручную копировать строки с пересчетом значений, а чтоб сам excel пересчитывал их заново, подставляя последнее полученное значение. Видите? В последних итерациях значения PR почти одинаковые. Вот и нужно, чтобы пересчет останавливался, когда различие между значениями доходит например до 0.01 (upd: нужно, чтобы эта величина различия тоже определялась автоматически. Xardas
Сообщение отредактировал Xardas - Среда, 04.02.2015, 12:45
Макрос, к сожалению, не подходит. Нужно именно стандартными средствами excel. Мне было сказано, что стандартный функционал должен справиться с такой задачей) Благодарю вас за помощь! Буду тестировать данный метод. Если у кого-то еще будут идеи как полностью автоматизировать расчет - буду очень благодарен.
Макрос, к сожалению, не подходит. Нужно именно стандартными средствами excel. Мне было сказано, что стандартный функционал должен справиться с такой задачей) Благодарю вас за помощь! Буду тестировать данный метод. Если у кого-то еще будут идеи как полностью автоматизировать расчет - буду очень благодарен.Xardas
еще выяснил, что точность должна определяться автоматически (афигеть, честно говоря даже не могу понять каким образом она должна определяться), а еще остановка проверки значений должна осуществляться по всем значениям вместе, а не по каждому отдельному, т.к. если в одном месте выросло а в другом упало на одинаковые величины метод сделает стоп - а так быть не должно... Делаю эти расчеты как учебные, наставник проверяет и дает такие комментарии.
еще выяснил, что точность должна определяться автоматически (афигеть, честно говоря даже не могу понять каким образом она должна определяться), а еще остановка проверки значений должна осуществляться по всем значениям вместе, а не по каждому отдельному, т.к. если в одном месте выросло а в другом упало на одинаковые величины метод сделает стоп - а так быть не должно... Делаю эти расчеты как учебные, наставник проверяет и дает такие комментарии.Xardas
Посмотрите ещё вариант с итеративными вычислениями
К сожалению, уже пробовал включать итерации в excel и использовать циклические ссылки, но опять же, наставник сказал, что надо сделать стандартными функциями excel.. Даже без использования надстройки "поиск решения"...
Еще вот важно, чтобы точность определялась автоматически. Здесь, мне было сказано, что она будет зависеть от размера графа. Чем больше вершин в графе, тем меньше значения PR каждой вершины. Честно говоря, сам не очень понял, каким же образом все же должна определяться эта точность, но факт в том, что она тоже должна рассчитываться автоматом.
Мда, если даже вы не можете понять, как это считать, то как же мне разобраться в этом) надеюсь, все получится найти какое то решение без использования итеративных вычислений с циклическими ссылками и без макросов с надстройками.
Посмотрите ещё вариант с итеративными вычислениями
К сожалению, уже пробовал включать итерации в excel и использовать циклические ссылки, но опять же, наставник сказал, что надо сделать стандартными функциями excel.. Даже без использования надстройки "поиск решения"...
Еще вот важно, чтобы точность определялась автоматически. Здесь, мне было сказано, что она будет зависеть от размера графа. Чем больше вершин в графе, тем меньше значения PR каждой вершины. Честно говоря, сам не очень понял, каким же образом все же должна определяться эта точность, но факт в том, что она тоже должна рассчитываться автоматом.
Мда, если даже вы не можете понять, как это считать, то как же мне разобраться в этом) надеюсь, все получится найти какое то решение без использования итеративных вычислений с циклическими ссылками и без макросов с надстройками.Xardas
Сообщение отредактировал Xardas - Среда, 04.02.2015, 11:32
Да вот вся моя методичка - это википедия т.е. мне дают задание - и сам разбирайся, ищи инфу(( собственно вот эта статья в вики: http://en.wikipedia.org/wiki/PageRank но мало что дает( хотя может, если очень внимательно все изучить - решение и придет, но что то у меня пока не получается. В любом случае огромное вам спасибо за помощь, если еще будут какие то идеи - буду очень признателен
Да вот вся моя методичка - это википедия т.е. мне дают задание - и сам разбирайся, ищи инфу(( собственно вот эта статья в вики: http://en.wikipedia.org/wiki/PageRank но мало что дает( хотя может, если очень внимательно все изучить - решение и придет, но что то у меня пока не получается. В любом случае огромное вам спасибо за помощь, если еще будут какие то идеи - буду очень признателенXardas
Спасибо вам, сейчас разберусь в этом способе и отпишу, что скажет мой учитель)) UPD: Елена, благодарю вас! Алгебраический метод оказался правильным! Сейчас буду масштабировать его для большего числа воображаемых страниц)
Спасибо вам, сейчас разберусь в этом способе и отпишу, что скажет мой учитель)) UPD: Елена, благодарю вас! Алгебраический метод оказался правильным! Сейчас буду масштабировать его для большего числа воображаемых страниц)Xardas
Сообщение отредактировал Xardas - Среда, 04.02.2015, 14:45