[scikit-learn] Question about error of LLE and backtransformation of coordinates

Matthieu Brucher matthieu.brucher at gmail.com
Thu Jun 16 09:33:27 EDT 2016


Hi!

The errors are quite small compared to the machine precision. As the
reduction is also an approximation of the underlying manifold, not an
"isotropic" one as well (you can see int he example that red points are
less squashed together than blue ones), you won't have a perfect
reconstruction either.
In a way, if you can reproduce in the reduced space the same distances (or
barycenters for LLE) compared the original space, then you can have a
perfect reconstruction (but it will still be subject to floating point
precision). For the sphere, you can't: take 4 points, can you make the
fourth as a barycenter of the other 3? No. That's the error you are seeing.

Cheers,

Matthieu


2016-06-16 10:12 GMT+01:00 Unger, Jörg <joerg.unger at bam.de>:
>
> I’ve tried the example that is available here
>
>
>
>
http://scikit-learn.org/stable/auto_examples/manifold/plot_manifold_sphere.html
>
>
>
> These are essentially points on a 3D sphere, so the dimension of the
embedded manifold is two.
>
> I’ve changed the example a little bit to extract the error as well. So
instead of
>
>
>
>     trans_data = manifold\
>
>         .LocallyLinearEmbedding(n_neighbors, 2,
>
>
method=method).fit_transform(sphere_data).T
>
>
>
> I’ve done something like
>
>     solver = manifold.LocallyLinearEmbedding(n_neighbors, dim_y,
method=method)
>
>     trans_data = solver.fit_transform(sphere_data).T
>
>     error = solver.reconstruction_error_
>
>
>
> I would have expected the error to be significant for dim_y=1, since I
can’t reproduce with just a single coordinate the results. For dim_y=2, I
expected a significant decrease, and for dim_y=3, I expected to exactly
recover the original result.
>
>
>
> What I get is (for standard LLE)
>
> dim_y = 1 : error = 1.62031573333e-07
>
> dim_y = 2 : error = 1.79465538543e-06
>
> dim_y = 3 : error = 7.00280676182e-06
>
>
>
> Could anyone explain, why I do not get the expected results?
>
>
>
> Furthermore, is there an option to retransform the coordinates from the
local dimension to the global dimension? I’m interested in transforming the
original global samples to local coordinates (this is done via the
transform method), but then I would like to transform samples from
coordinates in the embedded space back into the global space.
>
>
>
> Best regards,
>
> Jörg F. Unger
>
>
>
------------------------------------------------------------------------------
> What NetFlow Analyzer can do for you? Monitors network bandwidth and
traffic
> patterns at an interface-level. Reveals which users, apps, and protocols
are
> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
> J-Flow, sFlow and other flows. Make informed decisions using capacity
planning
> reports.
http://pubads.g.doubleclick.net/gampad/clk?id=1444514421&iu=/41014381
> _______________________________________________
> Scikit-learn-general mailing list
> Scikit-learn-general at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scikit-learn-general
>



-- 
Information System Engineer, Ph.D.
Blog: http://blog.audio-tk.com/
LinkedIn: http://www.linkedin.com/in/matthieubrucher



-- 
Information System Engineer, Ph.D.
Blog: http://blog.audio-tk.com/
LinkedIn: http://www.linkedin.com/in/matthieubrucher
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scikit-learn/attachments/20160616/2e866345/attachment.html>


More information about the scikit-learn mailing list