Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Рассчитать Pagerank (PR) для 4-х страниц - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Рассчитать Pagerank (PR) для 4-х страниц
Xardas Дата: Вторник, 03.02.2015, 17:43 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем привет.
Проблема следующая.
Необходимо расчитать 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 без использования циклических ссылок?
К сообщению приложен файл: pr4.xls (46.5 Kb)
 
Ответить
СообщениеВсем привет.
Проблема следующая.
Необходимо расчитать 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
Дата добавления - 03.02.2015 в 17:43
Xardas Дата: Вторник, 03.02.2015, 18:56 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Люди, ну неужели никто не может помочь?
По сути, нужно автоматизировать расчет значений, чтобы не вручную копировать строки с пересчетом значений, а чтоб сам excel пересчитывал их заново, подставляя последнее полученное значение.
Видите? В последних итерациях значения PR почти одинаковые. Вот и нужно, чтобы пересчет останавливался, когда различие между значениями доходит например до 0.01 (upd: нужно, чтобы эта величина различия тоже определялась автоматически.



Сообщение отредактировал Xardas - Среда, 04.02.2015, 12:45
 
Ответить
СообщениеЛюди, ну неужели никто не может помочь?
По сути, нужно автоматизировать расчет значений, чтобы не вручную копировать строки с пересчетом значений, а чтоб сам excel пересчитывал их заново, подставляя последнее полученное значение.
Видите? В последних итерациях значения PR почти одинаковые. Вот и нужно, чтобы пересчет останавливался, когда различие между значениями доходит например до 0.01 (upd: нужно, чтобы эта величина различия тоже определялась автоматически.


Автор - Xardas
Дата добавления - 03.02.2015 в 18:56
Pelena Дата: Вторник, 03.02.2015, 19:19 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
Тут, наверное, удобнее макрос написать.
Или такой полуавтоматический вариант
К сообщению приложен файл: 4459983.xls (57.0 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТут, наверное, удобнее макрос написать.
Или такой полуавтоматический вариант

Автор - Pelena
Дата добавления - 03.02.2015 в 19:19
Xardas Дата: Вторник, 03.02.2015, 19:29 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Макрос, к сожалению, не подходит. Нужно именно стандартными средствами excel. Мне было сказано, что стандартный функционал должен справиться с такой задачей)
Благодарю вас за помощь! Буду тестировать данный метод.
Если у кого-то еще будут идеи как полностью автоматизировать расчет - буду очень благодарен.
 
Ответить
СообщениеМакрос, к сожалению, не подходит. Нужно именно стандартными средствами excel. Мне было сказано, что стандартный функционал должен справиться с такой задачей)
Благодарю вас за помощь! Буду тестировать данный метод.
Если у кого-то еще будут идеи как полностью автоматизировать расчет - буду очень благодарен.

Автор - Xardas
Дата добавления - 03.02.2015 в 19:29
Pelena Дата: Вторник, 03.02.2015, 19:33 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
Обычно для таких задач используют поиск решения, но я никак не могу сообразить, как прописать ограничения в данном случае. Подумаю ещё


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеОбычно для таких задач используют поиск решения, но я никак не могу сообразить, как прописать ограничения в данном случае. Подумаю ещё

Автор - Pelena
Дата добавления - 03.02.2015 в 19:33
Xardas Дата: Вторник, 03.02.2015, 19:57 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
еще выяснил, что точность должна определяться автоматически (афигеть, честно говоря даже не могу понять каким образом она должна определяться), а еще остановка проверки значений должна осуществляться по всем значениям вместе, а не по каждому отдельному, т.к. если в одном месте выросло а в другом упало на одинаковые величины метод сделает стоп - а так быть не должно...
Делаю эти расчеты как учебные, наставник проверяет и дает такие комментарии.
 
Ответить
Сообщениееще выяснил, что точность должна определяться автоматически (афигеть, честно говоря даже не могу понять каким образом она должна определяться), а еще остановка проверки значений должна осуществляться по всем значениям вместе, а не по каждому отдельному, т.к. если в одном месте выросло а в другом упало на одинаковые величины метод сделает стоп - а так быть не должно...
Делаю эти расчеты как учебные, наставник проверяет и дает такие комментарии.

Автор - Xardas
Дата добавления - 03.02.2015 в 19:57
Pelena Дата: Вторник, 03.02.2015, 23:57 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
если в одном месте выросло а в другом упало на одинаковые величины метод сделает стоп
Если речь о моём файле, то это не так

Посмотрите ещё вариант с итеративными вычислениями
К сообщению приложен файл: 4413917.xls (56.5 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
если в одном месте выросло а в другом упало на одинаковые величины метод сделает стоп
Если речь о моём файле, то это не так

Посмотрите ещё вариант с итеративными вычислениями

Автор - Pelena
Дата добавления - 03.02.2015 в 23:57
Xardas Дата: Среда, 04.02.2015, 11:30 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Если речь о моём файле, то это не так

Странно, наставник сказал именно так, посмотрев ваш файл.
Посмотрите ещё вариант с итеративными вычислениями

К сожалению, уже пробовал включать итерации в excel и использовать циклические ссылки, но опять же, наставник сказал, что надо сделать стандартными функциями excel.. Даже без использования надстройки "поиск решения"...

Еще вот важно, чтобы точность определялась автоматически. Здесь, мне было сказано, что она будет зависеть от размера графа. Чем больше вершин в графе, тем меньше значения PR каждой вершины. Честно говоря, сам не очень понял, каким же образом все же должна определяться эта точность, но факт в том, что она тоже должна рассчитываться автоматом.

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


Сообщение отредактировал Xardas - Среда, 04.02.2015, 11:32
 
Ответить
Сообщение
Если речь о моём файле, то это не так

Странно, наставник сказал именно так, посмотрев ваш файл.
Посмотрите ещё вариант с итеративными вычислениями

К сожалению, уже пробовал включать итерации в excel и использовать циклические ссылки, но опять же, наставник сказал, что надо сделать стандартными функциями excel.. Даже без использования надстройки "поиск решения"...

Еще вот важно, чтобы точность определялась автоматически. Здесь, мне было сказано, что она будет зависеть от размера графа. Чем больше вершин в графе, тем меньше значения PR каждой вершины. Честно говоря, сам не очень понял, каким же образом все же должна определяться эта точность, но факт в том, что она тоже должна рассчитываться автоматом.

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

Автор - Xardas
Дата добавления - 04.02.2015 в 11:30
Pelena Дата: Среда, 04.02.2015, 11:49 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
Должна, видимо, быть какая-то методичка, если это учебное задание. Нет?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеДолжна, видимо, быть какая-то методичка, если это учебное задание. Нет?

Автор - Pelena
Дата добавления - 04.02.2015 в 11:49
Xardas Дата: Среда, 04.02.2015, 11:51 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Да вот вся моя методичка - это википедия :) т.е. мне дают задание - и сам разбирайся, ищи инфу((
собственно вот эта статья в вики:
http://en.wikipedia.org/wiki/PageRank
но мало что дает( хотя может, если очень внимательно все изучить - решение и придет, но что то у меня пока не получается. В любом случае огромное вам спасибо за помощь, если еще будут какие то идеи - буду очень признателен
 
Ответить
СообщениеДа вот вся моя методичка - это википедия :) т.е. мне дают задание - и сам разбирайся, ищи инфу((
собственно вот эта статья в вики:
http://en.wikipedia.org/wiki/PageRank
но мало что дает( хотя может, если очень внимательно все изучить - решение и придет, но что то у меня пока не получается. В любом случае огромное вам спасибо за помощь, если еще будут какие то идеи - буду очень признателен

Автор - Xardas
Дата добавления - 04.02.2015 в 11:51
Pelena Дата: Среда, 04.02.2015, 13:05 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
Последняя попытка, больше фантазии не хватает :)

По вашей ссылке алгебраический способ решения
К сообщению приложен файл: 6991732.xls (50.5 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПоследняя попытка, больше фантазии не хватает :)

По вашей ссылке алгебраический способ решения

Автор - Pelena
Дата добавления - 04.02.2015 в 13:05
Xardas Дата: Среда, 04.02.2015, 13:12 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо вам, сейчас разберусь в этом способе и отпишу, что скажет мой учитель))
UPD:
Елена, благодарю вас! Алгебраический метод оказался правильным! Сейчас буду масштабировать его для большего числа воображаемых страниц)


Сообщение отредактировал Xardas - Среда, 04.02.2015, 14:45
 
Ответить
СообщениеСпасибо вам, сейчас разберусь в этом способе и отпишу, что скажет мой учитель))
UPD:
Елена, благодарю вас! Алгебраический метод оказался правильным! Сейчас буду масштабировать его для большего числа воображаемых страниц)

Автор - Xardas
Дата добавления - 04.02.2015 в 13:12
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!