Yes... returning "best" items to users is a slightly more statement
than that what a recommender does. That's the output, but a
recommender input is usually user-item associations rather than
attributes.

I split hairs only to make the point that you really have two problems
here, and the data to solve both, and the opportunity to combine both.
The user and item attribute data leads you straight to a search-like
solution.

You can still also use user-item associations (not attributes) to
power a recommender. The output of both are something like
(item,score) pairs. You could naively multiply the score from both
sources to create an overall score and return the top items by this
metric, and, I would not be surprised if you get pretty good results.

If I had to pick one approach, it would be to call this a search problem.

If you do construe this as a recommender problem in addition, or
instead, do look at IDRescorer as it will do all of the filtering I
think you want.

Sean

On Sat, Mar 10, 2012 at 8:59 PM, Alex Geller <[email protected]> wrote:
> Hmm haven't about it this way, the required functionality is recommending
> items to users so I always looked at the problem from that angle. Still,
> the attributes of users and items won't always be that easy to match, so as
> I said earlier, I'll need to integrate user-similarity-based suggestions as
> well - which seems to be classic recommendation engine stuff. I just don't
> want to use too much different technologies on this problem.
>
> Anyway, I know this is a bit out of scope, but I'd really appreciate if
> based on your experience you could recommend a framework (a different
> module of Mahout or another project entirely) which can assist with solving
> the matching problem. Thanks for the answers and the effort
>
> On Sat, Mar 10, 2012 at 9:38 PM, Sean Owen <[email protected]> wrote:
>
>> It sounds like you have substantially a search problem. You know the
>> user's attributes, you know the items' attributes, and are just
>> finding the closest match. That by itself doesn't need a recommender
>> at all; it would just be extra complexity and fiddling to make it look
>> like a recommender problem. Just do exactly as you say instead: find
>> the closest match according to some definition of close. Recommenders
>> are more for when you don't know these attributes.
>>
>> On Sat, Mar 10, 2012 at 7:29 PM, Alex Geller <[email protected]> wrote:
>> > Yep, filtering is really what I need in this case, I'll give IDRescorer a
>> > look.
>> >
>> > Regarding the "perfect item" (simplified for the sake of example) - let's
>> > assume I have the info that the user is a 20 y.o. woman who likes the
>> color
>> > red, and it's going to be christmas in a week's time. So if she's looking
>> > at greeting cards, I'll create a "perfect" card which has parameters of
>> > {'christmas','dominating color - red','for women','for youngsters'} and
>> > look for the card that most closely matches that perfect card (ignore the
>> > fact that she's probably buying the card for someone else, again that's
>> > just an example).Might use filtering here to only consider chrsitmas
>> cards
>> > since others are probably irrelevant even if they get a high score on
>> other
>> > parameters. So I guess Item-Based similarity and filtering using
>> IDRescorer
>> > should suffice.
>> >
>> > Since I'll probably want to integrate User-based recommendation as well
>> at
>> > a later point - is there any existing Recommender implementation which
>> > blends both item-based and user-based recommendations?
>> >
>> > On Sat, Mar 10, 2012 at 9:06 PM, Sean Owen <[email protected]> wrote:
>> >
>> >> It really depends on what you mean by "based on time", as it could
>> >> mean many things. I'm assuming you mean that an item's seasonality
>> >> should somehow boost its importance, and boost its perceived value, by
>> >> some multiplier.
>> >>
>> >> The useful application of that idea is in fact what you get in
>> >> IDRescorer. I could imagine you also use that boost in similarity
>> >> computations, though I don't think it would make much difference.
>> >>
>> >> IDRescorer is for filtering as well as boosting. No, it is not a tool
>> >> for reordering per se, but altering scores, which of course could
>> >> affect ordering. From what you say I think it really is what you want,
>> >> or at least 80% of it.
>> >>
>> >> You can create a 'perfect item' but how then does the user come into
>> >> play for recommendations -- what about that is affected by user prefs.
>> >>
>> >>
>> >> On Sat, Mar 10, 2012 at 6:49 PM, Alex Geller <[email protected]> wrote:
>> >> > By "time-based" I meant something that supports recommendation by
>> time of
>> >> > year (#2 on my list).
>> >> >
>> >> > IDRescorer looks interesting, but (correct me if I'm wrong, I'm a
>> >> complete
>> >> > newbie with Mahout and generally in this field) it seems more like a
>> tool
>> >> > to refine the order of recommended items after the initial
>> recommendation
>> >> > logic was applied. What I need is for the recommendation logic itself
>> to
>> >> be
>> >> > based on time and user-item similarity (I probably won't have relevant
>> >> > user-user information anyway). So, for example, I'm able to recommend
>> >> > christmas-related items only a week before christmas, and not just
>> give
>> >> > them a boost using Rescorer.
>> >> >
>> >> > If that isn't possible I'm considering creating a virtual "perfect
>> item"
>> >> > from the data I have (time of year and user data) and running an
>> >> > ItemBasedRecommender to find the items that most closely match this
>> >> perfect
>> >> > item. Do you think that would be a feasible solution?
>> >> >
>> >> > On Sat, Mar 10, 2012 at 6:25 PM, Sean Owen <[email protected]> wrote:
>> >> >
>> >> >> If by #3 you mean you have preferences for many users, this is of
>> >> >> course the standard input for a recommender, yes. If you also have
>> >> >> some user-user similarity info beyond that, you can implement
>> >> >> UserSimliarity and use GenericUserBasedRecommender to incorporate
>> >> >> that.
>> >> >>
>> >> >> If you want to boost items according to some logic, like time (#2),
>> >> >> use IDRescorer.
>> >> >>
>> >> >> It sounds like you have a priori understanding of what items are best
>> >> >> for what users (#1). That's not something you can use directly, but I
>> >> >> suppose you could simply use this info as a multiplier (again with
>> >> >> IDRescorer), or perhaps the basis of a separate set of
>> recommendations
>> >> >> you blend.
>> >> >>
>> >> >> What's a time-based recommender?
>> >> >>
>> >> >>
>> >> >> On Sat, Mar 10, 2012 at 2:51 PM, Alex Geller <[email protected]>
>> wrote:
>> >> >> > Hi,
>> >> >> >
>> >> >> > I want to write a recommendation system which recommends items to
>> >> >> customers
>> >> >> > based on the following parameters (and some others):
>> >> >> >
>> >> >> >   - User-item similarity (for example recommend items which target
>> >> >> certain
>> >> >> >   gender,age etc. to users which meet these criteria)
>> >> >> >   - Time of year (recommend items with a holiday theme before a
>> major
>> >> >> >   holiday)
>> >> >> >   - Preferences of similar users
>> >> >> >
>> >> >> > I know Mahout supports User-User and Item-Item similarity, but how
>> >> can I
>> >> >> > implement User-Item similarity?
>> >> >> > Also, is there any support for time-based recommendations?
>> >> >> >
>> >> >> >
>> >> >> > Thanks,
>> >> >> >
>> >> >> > Alex
>> >> >>
>> >>
>>

Reply via email to