<p>I've read the book <a href="http://oreilly.com/catalog/9780596529321/" rel="noreferrer" title="Programming Collective Intelligence">Programming Collective Intelligence</a> and found it fascinating.  I'd recently heard about a challenge amazon had posted to the world to come up with a better recommendation engine for their system.</p>

<p>The winner apparently produced the best algorithm by limiting the amount of information that was being fed to it.</p>

<p>As a first rule of thumb I guess... "<strong>More information is not necessarily better when it comes to fuzzy algorithms."</strong></p>

<p>I know's it's subjective, but ultimately it's a measurable thing (clicks in response to recommendations).</p>

<p>Since most of us are dealing with the web these days and search can be considered a form of recommendation...  I suspect I'm not the only one who'd appreciate other peoples ideas on this. </p>

<p>In a nutshell, <strong>"What is the best way to build a recommendation ?"</strong></p>

[{'answer_id': 54206, 'author': 'Jason Cohen', 'author_id': 4926, 'author_profile': 'https://Stackoverflow.com/users/4926', 'pm_score': 4, 'selected': True, 'text': '<p>You don\'t want to use "overall popularity" unless you have no information about the user.  Instead, you want to align this user with similar users and weight accordingly.</p>\n\n<p>This is exactly what <a href="http://en.wikipedia.org/wiki/Bayesian_inference" rel="noreferrer">Bayesian Inference</a> does.  In English, it means adjusting the overall probability you\'ll like something (the average rating) with ratings from other people <em>who generally vote your way as well</em>.</p>\n\n<p>Another piece of advice, but this time ad hoc: I find that there are people where if they like something I will almost assuredly <em>not</em> like it.  I don\'t know if this effect is real or imagined, but it might be fun to build in a kind of "negative effect" instead of just clumping people by similarity.</p>\n\n<p>Finally there\'s a company specializing in exactly this called <a href="http://sensearray.com/" rel="noreferrer">SenseArray</a>.  The owner (<a href="http://en.wikipedia.org/wiki/Ian_Clarke_(computer_scientist)" rel="noreferrer">Ian  Clarke</a> of <a href="http://freenetproject.org/" rel="noreferrer">freenet fame</a>) is very approachable.  You can use my name if you call him up.</p>\n'}, {'answer_id': 312643, 'author': 'Ricardo Cabral', 'author_id': 18741, 'author_profile': 'https://Stackoverflow.com/users/18741', 'pm_score': 3, 'selected': False, 'text': '<p>There is an entire research area in computer science devoted to this subject. I\'d suggest reading <a href="http://scholar.google.com/scholar?q=recommendation+engine&amp;hl=en&amp;lr=&amp;btnG=Search" rel="noreferrer">some articles</a>.</p>\n'}, {'answer_id': 5202001, 'author': 'isomorphismes', 'author_id': 563329, 'author_profile': 'https://Stackoverflow.com/users/563329', 'pm_score': 3, 'selected': False, 'text': '<p>Agree with @Ricardo. This question is too broad, like asking "What\'s the best way to optimize a system?"</p>\n\n<p>One common feature to nearly all existing recommendation engines is that making the final recommendation boils down to multiplying some number of matrices and vectors. For example multiply a matrix containing proximity weights between users by a vector of item ratings.</p>\n\n<p>(Of course you have to be ready for most of your vectors to be super sparse!)</p>\n\n<p>My answer is surely too late for @Allain but for other users finding this question through search -- send me a PM and ask a more specific question and I will be sure to respond.</p>\n\n<p><em>(I design recommendation engines professionally.)</em></p>\n'}, {'answer_id': 6738127, 'author': 'UserBSS1', 'author_id': 555467, 'author_profile': 'https://Stackoverflow.com/users/555467', 'pm_score': 2, 'selected': False, 'text': '<p>@Lao Tzu, I agree with you.</p>\n\n<p>According to me, recommendation engines are made up of: </p>\n\n<blockquote>\n  <ul>\n  <li>Context Input fed from context aware systems (logging all your data)</li>\n  <li>Logical reasoning to filter the most obvious</li>\n  <li>Expert systems that improve your subjective data over the period of time based on context  inputs, and </li>\n  <li>Probabilistic reasoning to do decision-making close-to-proximity based on weighted sum of previous actions(beliefs, desires, &amp; intentions).</li>\n  </ul>\n</blockquote>\n\n<p>P.S.\nI made such recommendation engine.</p>\n'}]
['https://Stackoverflow.com/questions/54179', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/2443/']