<?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: SVD Recommendation System in Ruby</title>
	<atom:link href="http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/</link>
	<description>A goal is a dream with a deadline.</description>
	<pubDate>Fri, 12 Mar 2010 22:38:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: InVisible Blog &#187; links for 2010-03-05</title>
		<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/comment-page-2/#comment-232593</link>
		<dc:creator>InVisible Blog &#187; links for 2010-03-05</dc:creator>
		<pubDate>Fri, 05 Mar 2010 16:02:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.igvita.com/blog/2007/01/15/svd-recommendation-system-in-ruby/#comment-232593</guid>
		<description>[...] &#8211; without algebra (tags: ruby datamining lsi algorithms tagging programming data python)  SVD Recommendation System in Ruby &#8211; igvita.com And a detour on SVD in Ruby (tags: ruby programming rails datamining learning rubyonrails [...]</description>
		<content:encoded><![CDATA[<p>[...] &#8211; without algebra (tags: ruby datamining lsi algorithms tagging programming data python)  SVD Recommendation System in Ruby &#8211; igvita.com And a detour on SVD in Ruby (tags: ruby programming rails datamining learning rubyonrails [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yaqing</title>
		<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/comment-page-2/#comment-232202</link>
		<dc:creator>Yaqing</dc:creator>
		<pubDate>Tue, 02 Mar 2010 17:35:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.igvita.com/blog/2007/01/15/svd-recommendation-system-in-ruby/#comment-232202</guid>
		<description>Hey, nice post,, thx so much. :) 

btw,,, i am not very good at mathematics and matrix calculations,,, can u give the formular for Embed new item also?... Thx very much...</description>
		<content:encoded><![CDATA[<p>Hey, nice post,, thx so much. :) </p>
<p>btw,,, i am not very good at mathematics and matrix calculations,,, can u give the formular for Embed new item also?&#8230; Thx very much&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tjumicy</title>
		<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/comment-page-2/#comment-224330</link>
		<dc:creator>tjumicy</dc:creator>
		<pubDate>Thu, 26 Nov 2009 07:03:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.igvita.com/blog/2007/01/15/svd-recommendation-system-in-ruby/#comment-224330</guid>
		<description>As egarcia commented on 06.05.07, it is really confused me until I manually put the matrix to SVDLIBC and get the real U、S、V

I think the image ( http://farm1.static.flickr.com/133/358494623_db22603640_o.png containing U S V.transpose) should be U S V. The title in the image "V.transpose" should be "V". :-)</description>
		<content:encoded><![CDATA[<p>As egarcia commented on 06.05.07, it is really confused me until I manually put the matrix to SVDLIBC and get the real U、S、V</p>
<p>I think the image ( <a href="http://farm1.static.flickr.com/133/358494623_db22603640_o.png" rel="nofollow">http://farm1.static.flickr.com/133/358494623_db22603640_o.png</a> containing U S V.transpose) should be U S V. The title in the image &#8220;V.transpose&#8221; should be &#8220;V&#8221;. :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tjumicy</title>
		<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/comment-page-2/#comment-224329</link>
		<dc:creator>tjumicy</dc:creator>
		<pubDate>Thu, 26 Nov 2009 06:34:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.igvita.com/blog/2007/01/15/svd-recommendation-system-in-ruby/#comment-224329</guid>
		<description>Nice post. Thanks a lot.

During reading, I noticed there maybe a typo at the first paragraph above the MxN matrix table image:

&lt;blockquote&gt;
Thus, with M users and N products, we are looking at an MxN matrix.
&lt;/blockquote&gt;

should be

&lt;blockquote&gt;
Thus, with M products and N users, we are looking at an MxN matrix.
&lt;/blockquote&gt;

We can see M = 6, N = 4, U is (MxM) indicating products, V is (NxN) indicating users. So the table MxN should be 6x4 with 6 products and 4 users which I mentioned above.

Hope I'm not wrong and it can be helpful above to fix this typo.</description>
		<content:encoded><![CDATA[<p>Nice post. Thanks a lot.</p>
<p>During reading, I noticed there maybe a typo at the first paragraph above the MxN matrix table image:</p>
<blockquote><p>
Thus, with M users and N products, we are looking at an MxN matrix.
</p></blockquote>
<p>should be</p>
<blockquote><p>
Thus, with M products and N users, we are looking at an MxN matrix.
</p></blockquote>
<p>We can see M = 6, N = 4, U is (MxM) indicating products, V is (NxN) indicating users. So the table MxN should be 6&#215;4 with 6 products and 4 users which I mentioned above.</p>
<p>Hope I&#8217;m not wrong and it can be helpful above to fix this typo.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dharmendra</title>
		<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/comment-page-2/#comment-223372</link>
		<dc:creator>Dharmendra</dc:creator>
		<pubDate>Sun, 15 Nov 2009 17:25:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.igvita.com/blog/2007/01/15/svd-recommendation-system-in-ruby/#comment-223372</guid>
		<description>I think you shouldn't use S^-1 in projecting Bob (new vector) onto the latent space.

The columns of U are the orthonormal "users" which form the bases for representation of real users. If you use U*S as the bases, then it becomes orthogonal bases, not orthonormal.

Two users' equivalent latent representation would be U*S*v1 and U*S*v2 where v1 and v2 are the column vectors of the matrix V.transpose.  Then similarity in the latent space would be 
(U*S*v1).transpose*(U*S*v2)/(their norms) 
= v1t*S^2*v2/(sqrt(v1t*S^2*v1)*sqrt(v2t*S^2*v2))

which is not equal to 

v1t*v2/(sqrt(v1t*v1)*sqrt(v2t*v2)) as used in the example.</description>
		<content:encoded><![CDATA[<p>I think you shouldn&#8217;t use S^-1 in projecting Bob (new vector) onto the latent space.</p>
<p>The columns of U are the orthonormal &#8220;users&#8221; which form the bases for representation of real users. If you use U*S as the bases, then it becomes orthogonal bases, not orthonormal.</p>
<p>Two users&#8217; equivalent latent representation would be U*S*v1 and U*S*v2 where v1 and v2 are the column vectors of the matrix V.transpose.  Then similarity in the latent space would be<br />
(U*S*v1).transpose*(U*S*v2)/(their norms)<br />
= v1t*S^2*v2/(sqrt(v1t*S^2*v1)*sqrt(v2t*S^2*v2))</p>
<p>which is not equal to </p>
<p>v1t*v2/(sqrt(v1t*v1)*sqrt(v2t*v2)) as used in the example.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ilya Grigorik</title>
		<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/comment-page-2/#comment-223311</link>
		<dc:creator>Ilya Grigorik</dc:creator>
		<pubDate>Sat, 14 Nov 2009 17:19:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.igvita.com/blog/2007/01/15/svd-recommendation-system-in-ruby/#comment-223311</guid>
		<description>@Musi: unfortunately don't have a Java equivalent. However, I don't think JRuby would be out of the question -- in fact, it might even be a better choice for the heavy number crunching involved in SVD's.</description>
		<content:encoded><![CDATA[<p>@Musi: unfortunately don&#8217;t have a Java equivalent. However, I don&#8217;t think JRuby would be out of the question &#8212; in fact, it might even be a better choice for the heavy number crunching involved in SVD&#8217;s.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: musi</title>
		<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/comment-page-2/#comment-223182</link>
		<dc:creator>musi</dc:creator>
		<pubDate>Thu, 12 Nov 2009 16:48:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.igvita.com/blog/2007/01/15/svd-recommendation-system-in-ruby/#comment-223182</guid>
		<description>I applied SVD over A sparse matrix using java, the results are not as expected . I am using JAMA package and working on recommender systems?
Do you have any code in Java?</description>
		<content:encoded><![CDATA[<p>I applied SVD over A sparse matrix using java, the results are not as expected . I am using JAMA package and working on recommender systems?<br />
Do you have any code in Java?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesse Storimer</title>
		<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/comment-page-2/#comment-220841</link>
		<dc:creator>Jesse Storimer</dc:creator>
		<pubDate>Sun, 18 Oct 2009 12:32:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.igvita.com/blog/2007/01/15/svd-recommendation-system-in-ruby/#comment-220841</guid>
		<description>Fantastic post! Really enjoyed it.

I had some trouble installing rb-gsl on Snow Leopard. Here is how I did it: http://www.jstorimer.com/blogs/my-blog/1284032-installing-rb-gsl-on-snow-leopard

Also, the rb-gsl example seems to have fallen out of date. These are the changes that worked for me:

Lines 22 and 23: remove the .transpose call
Line 33: change to 
    user_sim[count] = (GSL::Vector[bobEmbed[0],bobEmbed[1]].dot(x)) / (x.norm * bobEmbed.norm)

http://gist.github.com/212661</description>
		<content:encoded><![CDATA[<p>Fantastic post! Really enjoyed it.</p>
<p>I had some trouble installing rb-gsl on Snow Leopard. Here is how I did it: <a href="http://www.jstorimer.com/blogs/my-blog/1284032-installing-rb-gsl-on-snow-leopard" rel="nofollow">http://www.jstorimer.com/blogs/my-blog/1284032-installing-rb-gsl-on-snow-leopard</a></p>
<p>Also, the rb-gsl example seems to have fallen out of date. These are the changes that worked for me:</p>
<p>Lines 22 and 23: remove the .transpose call<br />
Line 33: change to<br />
    user_sim[count] = (GSL::Vector[bobEmbed[0],bobEmbed[1]].dot(x)) / (x.norm * bobEmbed.norm)</p>
<p><a href="http://gist.github.com/212661" rel="nofollow">http://gist.github.com/212661</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ekzept</title>
		<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/comment-page-2/#comment-219894</link>
		<dc:creator>ekzept</dc:creator>
		<pubDate>Sat, 10 Oct 2009 20:19:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.igvita.com/blog/2007/01/15/svd-recommendation-system-in-ruby/#comment-219894</guid>
		<description>There is another interesting aspect to all this, and that is the coding plan equivocates a person not liking a property or season of a TV show with not knowing whether or not a person likes a property or season of a TV show.  Properly speaking, those are different states of knowledge and should be accounted for in the model.</description>
		<content:encoded><![CDATA[<p>There is another interesting aspect to all this, and that is the coding plan equivocates a person not liking a property or season of a TV show with not knowing whether or not a person likes a property or season of a TV show.  Properly speaking, those are different states of knowledge and should be accounted for in the model.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ekzept</title>
		<link>http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/comment-page-2/#comment-219892</link>
		<dc:creator>ekzept</dc:creator>
		<pubDate>Sat, 10 Oct 2009 20:14:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.igvita.com/blog/2007/01/15/svd-recommendation-system-in-ruby/#comment-219892</guid>
		<description>Incidently, limiting the display to two dimensions -- corresponding to the top two singular vectors -- is somewhat arbitrary and is done for easier display and understanding.  If the corresponding singular values are significant, in general, you'd want to extend the description to more dimensions, although a Euclidean distance (L2 norm) may still be appropriate.  If there is a lot of data, you might want to partitition the space somehow, perhaps using a Dirichilet tesselation or quantiles separating points.</description>
		<content:encoded><![CDATA[<p>Incidently, limiting the display to two dimensions &#8212; corresponding to the top two singular vectors &#8212; is somewhat arbitrary and is done for easier display and understanding.  If the corresponding singular values are significant, in general, you&#8217;d want to extend the description to more dimensions, although a Euclidean distance (L2 norm) may still be appropriate.  If there is a lot of data, you might want to partitition the space somehow, perhaps using a Dirichilet tesselation or quantiles separating points.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
