<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>&nbsp;&nbsp;<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;">&mdash;<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>