<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Using your laptop to compute PageRank for millions of webpages</title>
	<atom:link href="http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/feed/" rel="self" type="application/rss+xml" />
	<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/</link>
	<description></description>
	<lastBuildDate>Tue, 09 Mar 2010 22:14:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Michael Nielsen</title>
		<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/comment-page-1/#comment-26214</link>
		<dc:creator>Michael Nielsen</dc:creator>
		<pubDate>Wed, 30 Sep 2009 21:06:03 +0000</pubDate>
		<guid isPermaLink="false">http://michaelnielsen.org/blog/?p=523#comment-26214</guid>
		<description>Daniel - Thanks for the note.  When preparing the notes I considered doing something similar, but decided the presentation would be a little easier to understand without it.  It&#039;s been a while, but as I recall, my line of thought was simply that I wanted to avoid numpy, probably because the notes were originally prepared for people not at all familiar with numpy. The purpose of the notes is, of course, pedagogical - production code would be vastly different.</description>
		<content:encoded><![CDATA[<p>Daniel &#8211; Thanks for the note.  When preparing the notes I considered doing something similar, but decided the presentation would be a little easier to understand without it.  It&#8217;s been a while, but as I recall, my line of thought was simply that I wanted to avoid numpy, probably because the notes were originally prepared for people not at all familiar with numpy. The purpose of the notes is, of course, pedagogical &#8211; production code would be vastly different.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Smilkov</title>
		<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/comment-page-1/#comment-26213</link>
		<dc:creator>Daniel Smilkov</dc:creator>
		<pubDate>Wed, 30 Sep 2009 18:55:29 +0000</pubDate>
		<guid isPermaLink="false">http://michaelnielsen.org/blog/?p=523#comment-26213</guid>
		<description>You know,

instead of using column matrices, you can use n-dim arrays:
v = numpy.matrix(numpy.zeros((n,1)))
becomes
v = numpy.zeros(n,dtype=numpy.float32)

and
p = numpy.matrix(numpy.ones((n,1)))/n 
becomes
p = numpy.ones(n,dtype=numpy.float32)/n

and putting the initialization of the v vector out of step function, initializing it only ones in pagerank function,

you can get a lot of speed-up.</description>
		<content:encoded><![CDATA[<p>You know,</p>
<p>instead of using column matrices, you can use n-dim arrays:<br />
v = numpy.matrix(numpy.zeros((n,1)))<br />
becomes<br />
v = numpy.zeros(n,dtype=numpy.float32)</p>
<p>and<br />
p = numpy.matrix(numpy.ones((n,1)))/n<br />
becomes<br />
p = numpy.ones(n,dtype=numpy.float32)/n</p>
<p>and putting the initialization of the v vector out of step function, initializing it only ones in pagerank function,</p>
<p>you can get a lot of speed-up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Nielsen</title>
		<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/comment-page-1/#comment-17334</link>
		<dc:creator>Michael Nielsen</dc:creator>
		<pubDate>Sun, 25 Jan 2009 19:10:40 +0000</pubDate>
		<guid isPermaLink="false">http://michaelnielsen.org/blog/?p=523#comment-17334</guid>
		<description>Thanks for that, Henry!  I&#039;ve reshared your comment to the FriendFeed room.  It definitely suggests I should use sparse matrices if possible in my distributed implementation.</description>
		<content:encoded><![CDATA[<p>Thanks for that, Henry!  I&#8217;ve reshared your comment to the FriendFeed room.  It definitely suggests I should use sparse matrices if possible in my distributed implementation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Henry Haselgrove</title>
		<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/comment-page-1/#comment-17322</link>
		<dc:creator>Henry Haselgrove</dc:creator>
		<pubDate>Sun, 25 Jan 2009 09:06:07 +0000</pubDate>
		<guid isPermaLink="false">http://michaelnielsen.org/blog/?p=523#comment-17322</guid>
		<description>For those of you who like Matlab, Matlab&#039;s inbuilt sparse matrix type appears to be a fairly efficient way to compute pagerank. For example, this Matlab function that I wrote computes a 2 million page pagerank in about 45 seconds: http://users.on.net/~henry/pagerank1.m

Apparently the &quot;scipy&quot; package provides sparse matrix types in python. I&#039;ll give it a go sometime to see whether that is just as fast.</description>
		<content:encoded><![CDATA[<p>For those of you who like Matlab, Matlab&#8217;s inbuilt sparse matrix type appears to be a fairly efficient way to compute pagerank. For example, this Matlab function that I wrote computes a 2 million page pagerank in about 45 seconds: <a href="http://users.on.net/~henry/pagerank1.m" rel="nofollow">http://users.on.net/~henry/pagerank1.m</a></p>
<p>Apparently the &#8220;scipy&#8221; package provides sparse matrix types in python. I&#8217;ll give it a go sometime to see whether that is just as fast.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: What is Authority? &#124; Fidicaro.net</title>
		<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/comment-page-1/#comment-16663</link>
		<dc:creator>What is Authority? &#124; Fidicaro.net</dc:creator>
		<pubDate>Tue, 30 Dec 2008 08:22:32 +0000</pubDate>
		<guid isPermaLink="false">http://michaelnielsen.org/blog/?p=523#comment-16663</guid>
		<description>[...] do believe there is room in social media for authority. I believe Google&#8217;s pagerank algorithm may be a great start. A Twitter application that monitors retweets, recency of tweets, frequency of [...]</description>
		<content:encoded><![CDATA[<p>[...] do believe there is room in social media for authority. I believe Google&#8217;s pagerank algorithm may be a great start. A Twitter application that monitors retweets, recency of tweets, frequency of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: What is Authority? &#124; The Marketing Technology Blog, Indianapolis</title>
		<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/comment-page-1/#comment-16647</link>
		<dc:creator>What is Authority? &#124; The Marketing Technology Blog, Indianapolis</dc:creator>
		<pubDate>Tue, 30 Dec 2008 03:25:06 +0000</pubDate>
		<guid isPermaLink="false">http://michaelnielsen.org/blog/?p=523#comment-16647</guid>
		<description>[...] do believe there is room in social media for authority. I believe Google&#8217;s pagerank algorithm may be a great start. A Twitter application that monitors retweets, recency of tweets, frequency of [...]</description>
		<content:encoded><![CDATA[<p>[...] do believe there is room in social media for authority. I believe Google&#8217;s pagerank algorithm may be a great start. A Twitter application that monitors retweets, recency of tweets, frequency of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Coderies &#124; taggle.org</title>
		<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/comment-page-1/#comment-16632</link>
		<dc:creator>Coderies &#124; taggle.org</dc:creator>
		<pubDate>Mon, 29 Dec 2008 08:30:43 +0000</pubDate>
		<guid isPermaLink="false">http://michaelnielsen.org/blog/?p=523#comment-16632</guid>
		<description>[...] Lancer un algorithme de PageRank sur un ordinateur portable, c&#8217;est possible [...]</description>
		<content:encoded><![CDATA[<p>[...] Lancer un algorithme de PageRank sur un ordinateur portable, c&#8217;est possible [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Sidles</title>
		<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/comment-page-1/#comment-16553</link>
		<dc:creator>John Sidles</dc:creator>
		<pubDate>Wed, 24 Dec 2008 23:08:39 +0000</pubDate>
		<guid isPermaLink="false">http://michaelnielsen.org/blog/?p=523#comment-16553</guid>
		<description>Oh boy!  Now we&#039;re getting to a portion of this lecture series that I was *definitely* looking forward to, namely, &lt;i&gt;O&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;) matrix-vector multiplication algorithms.

For reasons that (AFAICT) nobody clearly understands, in recent decades &lt;i&gt;O&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;) matrix-vector multiplication algorithms have appeared ubiquitously in modern physics, chemistry, engineering, and information theory.  Which is good, because with the help of these algorithms (as Michael observes), systems having &lt;i&gt;n&lt;/i&gt;~10^6-10^8 degrees of freedom become tractable to analyze and/or simulate.

A key issue (whose answer is not obvious to me from the lecture) is whether &lt;i&gt;M&lt;/i&gt; is Hermitian (apparently not) and/or can be related to a Hermitian matrix via an &lt;i&gt;O&lt;/i&gt;(&lt;i&gt;n&lt;/i&gt;) pre-conditioning algorithm (which is the bit that I&#039;m not clear on at present).

When this is true, then &lt;i&gt;M&lt;/i&gt; (typically) can be regarded as a metric on a (typically) tensor network  space, and the act of matrix-vector multiplication can be viewed (typically) as the fast computation of the so-called &lt;i&gt;musical isomorphism&lt;/i&gt; between one-forms and vectors.

It turns out that this geometric point of view is congenial in many large-scale simulation and information-processing algorithms, but (despite my modest efforts) it has never yet inspired in me any geometric understanding of Google&#039;s PageRank algorithms ... and yet I feel that it should.

Anyway, that&#039;s how one reader is processing these fine lectures ... a reader who would be pathetically grateful for rays of geometric illumination. 

Just to mention, a fine textbook relating to these issues is Anne Greenbaum&#039;s &lt;i&gt;Iterative methods for solving linear systems&lt;/i&gt;.
-------------
@book{Author = {Greenbaum, Anne}, Publisher = {Society for Industrial and Applied Mathematics (SIAM)}, Series = {Frontiers in Applied Mathematics}, Title = {Iterative methods for solving linear systems}, Volume = {17}, Year = {1997}}</description>
		<content:encoded><![CDATA[<p>Oh boy!  Now we&#8217;re getting to a portion of this lecture series that I was *definitely* looking forward to, namely, <i>O</i>(<i>n</i>) matrix-vector multiplication algorithms.</p>
<p>For reasons that (AFAICT) nobody clearly understands, in recent decades <i>O</i>(<i>n</i>) matrix-vector multiplication algorithms have appeared ubiquitously in modern physics, chemistry, engineering, and information theory.  Which is good, because with the help of these algorithms (as Michael observes), systems having <i>n</i>~10^6-10^8 degrees of freedom become tractable to analyze and/or simulate.</p>
<p>A key issue (whose answer is not obvious to me from the lecture) is whether <i>M</i> is Hermitian (apparently not) and/or can be related to a Hermitian matrix via an <i>O</i>(<i>n</i>) pre-conditioning algorithm (which is the bit that I&#8217;m not clear on at present).</p>
<p>When this is true, then <i>M</i> (typically) can be regarded as a metric on a (typically) tensor network  space, and the act of matrix-vector multiplication can be viewed (typically) as the fast computation of the so-called <i>musical isomorphism</i> between one-forms and vectors.</p>
<p>It turns out that this geometric point of view is congenial in many large-scale simulation and information-processing algorithms, but (despite my modest efforts) it has never yet inspired in me any geometric understanding of Google&#8217;s PageRank algorithms &#8230; and yet I feel that it should.</p>
<p>Anyway, that&#8217;s how one reader is processing these fine lectures &#8230; a reader who would be pathetically grateful for rays of geometric illumination. </p>
<p>Just to mention, a fine textbook relating to these issues is Anne Greenbaum&#8217;s <i>Iterative methods for solving linear systems</i>.<br />
&#8212;&#8212;&#8212;&#8212;-<br />
@book{Author = {Greenbaum, Anne}, Publisher = {Society for Industrial and Applied Mathematics (SIAM)}, Series = {Frontiers in Applied Mathematics}, Title = {Iterative methods for solving linear systems}, Volume = {17}, Year = {1997}}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: WWGD: Understanding Google&#8217;s Technology Stack</title>
		<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/comment-page-1/#comment-16543</link>
		<dc:creator>WWGD: Understanding Google&#8217;s Technology Stack</dc:creator>
		<pubDate>Wed, 24 Dec 2008 16:34:19 +0000</pubDate>
		<guid isPermaLink="false">http://michaelnielsen.org/blog/?p=523#comment-16543</guid>
		<description>[...] Nielsen has a nice post on using your laptop to compute PageRank for millions of webpages. His posts reviews PageRank and how to compute it and shows a short, but reasonably efficient, [...]</description>
		<content:encoded><![CDATA[<p>[...] Nielsen has a nice post on using your laptop to compute PageRank for millions of webpages. His posts reviews PageRank and how to compute it and shows a short, but reasonably efficient, [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Nielsen</title>
		<link>http://michaelnielsen.org/blog/using-your-laptop-to-compute-pagerank-for-millions-of-webpages/comment-page-1/#comment-16542</link>
		<dc:creator>Michael Nielsen</dc:creator>
		<pubDate>Wed, 24 Dec 2008 16:29:48 +0000</pubDate>
		<guid isPermaLink="false">http://michaelnielsen.org/blog/?p=523#comment-16542</guid>
		<description>Brad - Thanks!  Turns out there is a bug in the script I use to convert my source file (which is LaTeX) to WordPress, and that messes up the Python.  I&#039;ll fix it.  I&#039;ll be interested to hear how your experiment with Shed Skin goes.</description>
		<content:encoded><![CDATA[<p>Brad &#8211; Thanks!  Turns out there is a bug in the script I use to convert my source file (which is LaTeX) to WordPress, and that messes up the Python.  I&#8217;ll fix it.  I&#8217;ll be interested to hear how your experiment with Shed Skin goes.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
