I don't see the point of a recommender system without the anonymous user
feature. Otherwise it's just a data analysis/optimization tool and there
are plenty of simpler ways to do that.
Lance
Sean Owen wrote:
Sounds like a clean fix. Really, the semantics should be tightened up.
Until temp prefs are set, the "temp user" should not exist and the
facade should behave accordingly. The temp prefs can't be null or
empty, and there should be a way to un-set them too. I can add that
for your consideration.
What issue do you think you see with walking temp prefs? at second
glance I don't see an issue. Which method?
To answer other questions: yes it's my view that Recommenders should
be thread-safe and they are. However PAUDM throws a ratchet in the
works since it by definition can only host one anonymous user at a
time. It should be viewed as a convenient hack rather than standard.
You have to synchronize access to the recommender as a result -- not
complicated, but not ideal on multi-core machines. In some contexts
that's fine.
I suppose a better answer is to extend this convenient hack to handle
n simultaneous anonymous users. It's probably not hard if not trivial.
The real answer is to make the anonymous users first-class users in
the model. While correct and all that may have practical performance
problems.
On Sat, Sep 18, 2010 at 7:21 AM, Lance Norskog<[email protected]> wrote:
I found the problem: PlusAnon.... always includes the anonymous user when
you ask it for the User iterator: getUserIDs();
However, if you don't have your pref array poked into it,
getPreferencesFromUser() for the anonymous user returns null instead of an
empty preference list.
MemoryDiffStorage walks the preferences at startup. This includes the
anonymous user, it gets a null, and throws a NullPointerException. If
PlusAnon... must always include the anonymous user (and I think it should),
it should return a zero-length PreferenceArray rather than a null pointer.
That is, the anonymous user has no opinions.
Would this screw up various recommender algorithms?
Lance Norskog wrote:
Does anyone have an example of successfully using
PlusAnonymousUserDataModel? There are no unit tests for it. I'm playing
around and finding one problem after another in various classes; they do
things that don't fit with how PAUDM works.
Lance