> So what you have is essentially a fancy nearest neighbor approach which
> requires that you scan all of your input unless you
> have a clever way of discarding those rows of X which have very small
> weights.

Yes, LWLR is basically a kernel-smoothed nearest neighbor approach that
makes a first-order correction to the bias introduced by kernel-smoothed
NN at the boundaries of the (input) domain and in the interior of the
domain if the inputs are not evenly spaced (this is how Hastie et. al put
it in The Elements of Statistical Learning).


> It still makes lots of sense to amortize the cost of this scan across
> multiple x_query values so I think that the distributed cache
> is ultimately a much better idea.  The output of each map would be one A_i
> and b_i for each input vector in the distributed cache.
> The key can be the serial number or offset of the input vector in the
> distributed cache so that the partials will all go to the same
> reducer.

Alright, I think those are enough keywords to find the information I need
to actually implement this. ;-)


> One point that I don't quite see is how you accumulate partial sums of
> inv(X' * X).  It seems that the inverse makes this difficult.
> This is orthogonal to the map-reduce architecture.  How are you doing
> this?

Simple answer: The inv() is done last (by the reducer), the partial sums
are enclosed by the brackets, i.e., inv(X' * X) = inv(A) = inv(A_1 + A_2 +
... A_N).


Cheers,

Alex


Reply via email to