<p>I added an implementation of random projection trees. The RPTreeMax variant is implemented slightly different since the technique for the calculation of a random deviation suggested in the paper is weird. And I use a number of random dataset points instead of all points in order to calculate the median value and the average distance between points.</p>
<p>Since the norm in the paper always denotes Euclidean distance I wrote <code>arma::dot</code> in order to calculate the scalar product of two vectors.</p>
<p>Right now, the tree use <code>HRectBound</code>.</p>
<hr>
<h4>You can view, comment on, or merge this pull request online at:</h4>
<p> <a href='https://github.com/mlpack/mlpack/pull/726'>https://github.com/mlpack/mlpack/pull/726</a></p>
<h4>Commit Summary</h4>
<ul>
<li>Added random projection trees.</li>
<li>Added random projection trees to NSModel and RSModel.</li>
</ul>
<h4>File Changes</h4>
<ul>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-0">src/mlpack/core/tree/CMakeLists.txt</a>
(4)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-1">src/mlpack/core/tree/binary_space_tree.hpp</a>
(2)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-2">src/mlpack/core/tree/binary_space_tree/binary_space_tree.hpp</a>
(36)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-3">src/mlpack/core/tree/binary_space_tree/binary_space_tree_impl.hpp</a>
(138)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-4">src/mlpack/core/tree/binary_space_tree/mean_split.hpp</a>
(88)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-5">src/mlpack/core/tree/binary_space_tree/mean_split_impl.hpp</a>
(201)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-6">src/mlpack/core/tree/binary_space_tree/midpoint_split.hpp</a>
(89)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-7">src/mlpack/core/tree/binary_space_tree/midpoint_split_impl.hpp</a>
(186)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-8">src/mlpack/core/tree/binary_space_tree/rp_tree_max_split.hpp</a>
(130)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-9">src/mlpack/core/tree/binary_space_tree/rp_tree_max_split_impl.hpp</a>
(156)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-10">src/mlpack/core/tree/binary_space_tree/rp_tree_mean_split.hpp</a>
(144)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-11">src/mlpack/core/tree/binary_space_tree/rp_tree_mean_split_impl.hpp</a>
(191)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-12">src/mlpack/core/tree/binary_space_tree/traits.hpp</a>
(72)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-13">src/mlpack/core/tree/binary_space_tree/typedef.hpp</a>
(14)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-14">src/mlpack/methods/neighbor_search/kfn_main.cpp</a>
(19)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-15">src/mlpack/methods/neighbor_search/knn_main.cpp</a>
(19)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-16">src/mlpack/methods/neighbor_search/ns_model.hpp</a>
(8)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-17">src/mlpack/methods/neighbor_search/ns_model_impl.hpp</a>
(12)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-18">src/mlpack/methods/range_search/range_search_main.cpp</a>
(18)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-19">src/mlpack/methods/range_search/rs_model.cpp</a>
(40)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-20">src/mlpack/methods/range_search/rs_model.hpp</a>
(10)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-21">src/mlpack/methods/range_search/rs_model_impl.hpp</a>
(28)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-22">src/mlpack/tests/aknn_test.cpp</a>
(20)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-23">src/mlpack/tests/knn_test.cpp</a>
(16)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-24">src/mlpack/tests/range_search_test.cpp</a>
(16)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/mlpack/mlpack/pull/726/files#diff-25">src/mlpack/tests/tree_test.cpp</a>
(84)
</li>
</ul>
<h4>Patch Links:</h4>
<ul>
<li><a href='https://github.com/mlpack/mlpack/pull/726.patch'>https://github.com/mlpack/mlpack/pull/726.patch</a></li>
<li><a href='https://github.com/mlpack/mlpack/pull/726.diff'>https://github.com/mlpack/mlpack/pull/726.diff</a></li>
</ul>
<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/mlpack/mlpack/pull/726">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AJ4bFL_hVhTcwTg28CMURXCPM7TXnsDZks5qW4HEgaJpZM4JOuGE">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFOCF6BFbUXjjjEjCb7GwF2ux4sFgks5qW4HEgaJpZM4JOuGE.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
<link itemprop="url" href="https://github.com/mlpack/mlpack/pull/726"></link>
<meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>