verne.freenode.net changed the topic of #mlpack to: http://www.mlpack.org/ -- We don't respond instantly... but we will respond. Give it a few minutes. Or hours. -- Channel logs: http://www.mlpack.org/irc/
govg has quit [Ping timeout: 258 seconds]
govg has joined #mlpack
sumedhghaisas has joined #mlpack
sumedhghaisas has quit [Client Quit]
govg has quit [Ping timeout: 250 seconds]
govg has joined #mlpack
marcosirc has quit [Quit: WeeChat 1.4]
govg has quit [Ping timeout: 240 seconds]
mentekid has joined #mlpack
mentekid has quit [Remote host closed the connection]
mentekid has joined #mlpack
govg has joined #mlpack
nilay has joined #mlpack
< mentekid>
rcurtin: I think you're right, having k as a constant and solving for k^b makes no sense...
< mentekid>
I guess it's a 2-d space (x, k) mapping to y
< rcurtin>
yeah, otherwise it would only make sense to fit d * x^c (where d = k^b)
< rcurtin>
er, d = a*k^b
< mentekid>
this makes a few things simpler
< mentekid>
also the implementation more likely to be correct :P
< rcurtin>
:)
nilay has quit [Ping timeout: 250 seconds]
nilay has joined #mlpack
nilay has quit [Quit: Page closed]
< mentekid>
rcurtin: So, what I've done so far works
< mentekid>
or it appears to
< mentekid>
I still need to do the integration, binary search and input/output modules, but it's progressing.
< mentekid>
should I open a PR so you can see the code? Maybe you'll catch mistakes I haven't seen (like the non-constant k for example)
< rcurtin>
sure, that sounds good to me
< rcurtin>
I think you have already opened that PR so I will look when I have a chance
< mentekid>
Yeah I did a few minutes ago
marcosirc has joined #mlpack
sumedhghaisas has joined #mlpack
govg has quit [Ping timeout: 240 seconds]
sumedhghaisas has quit [Ping timeout: 260 seconds]
marcosirc has quit [Ping timeout: 244 seconds]
mentekid has quit [Ping timeout: 244 seconds]
marcosirc has joined #mlpack
sumedhghaisas has joined #mlpack
< marcosirc>
sumedhghaisas: Hi
< sumedhghaisas>
marcosirc: Hey marcos...
< marcosirc>
Hi sumedh! how are you?
< sumedhghaisas>
so sorry for yesterday... I started reviewing your code...
< sumedhghaisas>
but I was very tired...
< marcosirc>
Ok, no problem. I can imagine.
< sumedhghaisas>
Very big PR it is :)
< marcosirc>
Yes! Because I have been working many weeks in this
< marcosirc>
I couldn't make a PR before, because it was not ready...
< sumedhghaisas>
yeah... I know :)
< marcosirc>
I have madea big change in the last commits :)
< marcosirc>
I think this week is very important
< sumedhghaisas>
I got scared ... looking at the number of commits :P
< marcosirc>
Haha
< sumedhghaisas>
I am still checking the entire thing...
< marcosirc>
Because next week I think I should focus on testing.
< sumedhghaisas>
the design looks good...
< marcosirc>
Ok.
< marcosirc>
I have made an important change in the design in the last commits
< sumedhghaisas>
I have almost finished with single tree traversal...
< sumedhghaisas>
I am looking at the whole changes...
< sumedhghaisas>
so commit level won;t matter...
< sumedhghaisas>
also tests were failing...
< marcosirc>
I am checking the appveyor failure right now
< sumedhghaisas>
ohh okay...
< rcurtin>
I haven't looked over the commits yet (I will when I have a chance), so maybe this point is already taken care of, but we should be sure that we can use defeatist search with other types of trees too
< marcosirc>
rcurtin: Ok. Do you mean pure defeatist search? Removing the backtracking step?
< marcosirc>
I can implement a new tree traverser
< marcosirc>
But in that case we would be considering the decision boundary as I mentioned in the previous pdf file. Not the splitting hyperplane.
< marcosirc>
I think this is not a problem. Just something to take into account.
< rcurtin>
marcosirc: hmm, let me take a look at the code and I'll let you know what I think
< rcurtin>
I have a long flight tomorrow which should be perfect for reviewing code :)
< marcosirc>
OK! :) Great!!
< marcosirc>
I think we could implemente a new tree traverser: "DefeatistSearchTraverser" which simply avoids the "rescore" step.
< marcosirc>
But for the actual implementation of spill trees, I consider a more complicated traverser
< marcosirc>
because it implements "hybrid spill search"
< rcurtin>
yeah; I'll take a look and let you know what I think. I'll probably need to review the paper again too :)
< marcosirc>
rcurtin: Ok, great!
< marcosirc>
I have to add many tests for all the code developed.
< marcosirc>
rcurtin: Also, I have been thinking about the implementation of NeighborSearch class.
< marcosirc>
I think we should define a enum type
< marcosirc>
with three members: NAIVE, SINGLE_MODE and DUAL_MODE
< marcosirc>
this way, constructors will be clearer.
< marcosirc>
instead of using combinations of boolean values
< marcosirc>
in the future we could add a new member
< marcosirc>
DEFEATIST_MODE
< rcurtin>
sure, I don't have any issue with that
< rcurtin>
again reverse compatibility is the only thing to keep in mind
< rcurtin>
so I think in some cases, maybe it is better to open the ticket saying it should be done, then when 3.0.0 release comes close, do it then
< rcurtin>
it's hard to have a "stable API" when there is always so much to improve :)
mentekid has joined #mlpack
< marcosirc>
Ok, yeah I agree. I was thinking about reverse compatibility too..
< marcosirc>
Ok, I will open a new ticket about this.
< marcosirc>
Also, I have been thinking about tree's implementation (if you are busy now we can talk in another moment :) ).
< marcosirc>
I think we should have a general class for each tree type, and an internal class which represents the Node class.
< marcosirc>
So we can hold the tree's specific information in the main class, like the value of some parameters, etc.
< marcosirc>
Also, for BinarySpaceTrees, we could hold the information of oldFromNewReferences in that class.
< rcurtin>
I've thought about that at length; but it doesn't make it easy to use a subtree
< marcosirc>
Ok, yes, I understand. I am not sure it will be a good option, but with the current approach we have some disadvantages..
< marcosirc>
Given a tree, we can't have any information about "how it was built".
< marcosirc>
I mean, the parameters, like: leafSize, tau (overlapping size), etc.
< rcurtin>
that's true; but if the user builds the tree themselves, then they already know the parameters
< rcurtin>
and in many other cases, the class holding the tree might hold those parameters
< rcurtin>
I agree it is not necessarily ideal, but I think that we can't encapsulate a tree in its own class, because then "tree.Child(0)" won't return the same type
< rcurtin>
unless we have a separate "TreeType" and "NodeType" class, and I'd like to avoid that complexity
< marcosirc>
Yeah, I understand. I started thinking about this when working with the neighbor search class, when we want to transmit ownership of a reference tree. Now, we have to make NSModel a friend class of NeighborSearch class, to set the oldFromNewReferences. I was thinking how to avoid this "friendship".
sumedhghaisas has quit [Ping timeout: 250 seconds]
< marcosirc>
Yeah, I agree. I was thinking of having 2 separate classes, like you mention.
< marcosirc>
TreeType and NodeType. NodeType could be a nested class of TreeType.
< marcosirc>
I agree that it could increase the complexity...
< marcosirc>
I will continue thinking about this!
< rcurtin>
I spent a long time thinking about it over the years, and the conclusion I came to is that the TreeType (with no NodeType) design was the most flexible and straightforward
sumedhghaisas has joined #mlpack
< marcosirc>
lozhnikov: Hi, how are you? I am adding a new tree trait: "HasDuplicatedPoints" to determine if a given point can be included in more than one node.
< marcosirc>
I can see that RectangleTree's traits include: HasOverlappingChildren = true
< marcosirc>
Does it only means that the nodes's bounding box can overlap, or it also means that nodes can share points?
< lozhnikov>
marcosirc: Hi, no the R tree has not got duplicated points
< marcosirc>
Ok, thanks!
< marcosirc>
I mean every rectangle tree flavour.
< lozhnikov>
yes, I understand. The original implementation of the R+ tree allows that behavior. But the algorithm that I've implemented avoids duplicated points.
< marcosirc>
lozhnikov: Ok.
nilay has joined #mlpack
sumedhghaisas has quit [Ping timeout: 258 seconds]