You can actually create a "user" #6 for your new order. Or you can use
the "anonymous user" function of the library, although it's hacky.

We may be mixing up terms here. "DataModel" is a class that has
nothing to do with Hadoop. Hadoop in turn has no part in real-time
anything, like recommending to a brand-new "user". However it could
build an offline model of item-item similarities and you could do
something like a most-similar-items computation for a given new basket
of goods. That is effectively what the "anonymous user" function is
doing anyway.

You can precompute all recommendations for all items but that's a lot
of work! It's easy to get away with it with a thousand items, but with
a million this may be infeasibly slow.

On Thu, Apr 11, 2013 at 10:38 PM, Billy <b...@ntlworld.com> wrote:
> As in the example data 'intro.csv' in the MIA it has users 1-5 so if I ask
> for recommendations for user 1 then this works but if I ask for
> recommendations for user 6 (a new user yet to be added to the data model)
> then I get no recommendations ... so if I substitute users for orders then
> again I will get no recommendations ... which I sort of understand so do I
> need to inject my 'new' active order; along with its attached item/s into
> the data model first and then ask for the recommendations for the order by
> offering up the new orderId? or is there a way of merely offering up an
> 'item' and then getting recommendations based merely on the item using the
> data already stored and the relationships with my item?
>
> My assumptions:
> #1
> I am assuming the data model is a static island of data that has been
> processed (flattened) overnight (most probably by an Hadoop process) due to
> the size of this data ... rather than a living document that is updated as
> soon as new data is available.
> #2
> I'm also assuming that instead of reading in the data model and
> providing recommendations 'on the fly' I will have to run thru every item
> in my catalogue and find out the top 5 recommended items that are ordered
> with each item (most probably via a Hadoop process) and then store this
> output in dynamoDb or luncene for quick access.
>
> Sorry for all the questions but it such an interesting subject.
>
>
> On 11 April 2013 22:04, Ted Dunning <ted.dunn...@gmail.com> wrote:
>
>> Actually, making this user based is a really good thing because you get
>> recommendations from one session to the next.  These may be much more
>> valuable for cross-sell than things in the same order.
>>
>>
>> On Thu, Apr 11, 2013 at 12:50 PM, Sean Owen <sro...@gmail.com> wrote:
>>
>>> You can try treating your orders as the 'users'. Then just compute
>>> item-item similarities per usual.
>>>
>>> On Thu, Apr 11, 2013 at 7:59 PM, Billy <b...@ntlworld.com> wrote:
>>> > Thanks for replying,
>>> >
>>> >
>>> > I don't have users, well I do :-) but in this case it should not
>>> influence
>>> > the recommendations
>>> >
>>> > ,
>>> > these need to be based on the relationship between
>>> > "
>>> > items ordered with other items
>>> > in the 'same order'
>>> > ".
>>> >
>>> > E.g. If item #1 has been order with item #4
>>> >
>>> > [
>>> > 22
>>> > ]
>>> > times and item #1 has been order with item #9
>>> > [
>>> > 57
>>> > ]
>>> > times then
>>> > if I added item #1 to my order
>>> > these would both be recommended
>>> > but item #9 would be recommended above item #4 purely based on the fact
>>> that
>>> > the relationship between item #1 and item #9 is greater than the
>>> > relationship with item #4.
>>> >
>>> > What I don't want is; if a user ordered items #A, #B, #C separately
>>> > 'at some point in their order history' then recommen
>>> > d #A and #C to other users who order #B ... I still don't want this if
>>> the
>>> > items are similar and/or the users similar.
>>> >
>>> > Cheers
>>> >
>>> > Billy
>>> >
>>> >
>>> >
>>> > On 11 Apr 2013 18:28, "Sean Owen" <sro...@gmail.com> wrote:
>>> >>
>>> >> This sounds like just a most-similar-items problem. That's good news
>>> >> because that's simpler. The only question is how you want to compute
>>> >> item-item similarities. That could be based on user-item interactions.
>>> >> If you're on Hadoop, try the RowSimilarityJob (where you will need
>>> >> rows to be items, columns the users).
>>> >>
>>> >> On Thu, Apr 11, 2013 at 6:11 PM, Billy <b...@ntlworld.com> wrote:
>>> >> > I am very new to Mahout and currently just ready up to chapter 5 of
>>> >> > 'MIA'
>>> >> > but after reading about the various User centric and Item centric
>>> >> > recommenders they all seem to still need a userId so still unsure if
>>> >> > Mahout
>>> >> > can help with a fairly common recommendation.
>>> >> >
>>> >> > My requirement is to produce 'n' item recommendations based on a
>>> chosen
>>> >> > item.
>>> >> >
>>> >> > E.g. "if I've added item #1 to my order then based on all the
>>> >> > other items; in all the other orders for this site, what are the
>>> >> > likely items that I may also want add to my order based; on the item
>>> to
>>> >> > item relationship in the history of orders of this site?"
>>> >> >
>>> >> > Most probably using the most popular relationship between the item I
>>> >> > have
>>> >> > chosen and all the items in all the other orders.
>>> >> >
>>> >> > My data is not 'user' specific; and I don't think it should be, but
>>> more
>>> >> > like order specific as its the pattern of items in each order that
>>> >> > should
>>> >> > determine the recommendation.
>>> >> >
>>> >> > I have no preference values so merely boolean preferences will be
>>> used.
>>> >> >
>>> >> > If Mahout can perform these calculations then how must I present the
>>> >> > data?
>>> >> >
>>> >> > Will I need to shape the data in some way to feed into Mahout
>>> (currently
>>> >> > versed in using Hadoop via Aws Emr using Java)
>>> >> >
>>> >> > Thanks for the advice in advance,
>>> >> >
>>> >> > Billy
>>>
>>
>>

Reply via email to