cameron.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/
< naywhayare>
andrewmw94: friday is tomorrow, right?
< naywhayare>
I can do that
< andrewmw94>
ok, I'll see you then.
< andrewmw94>
Bye.
andrewmw94 has quit [Quit: andrewmw94]
govg has quit [Ping timeout: 260 seconds]
govg has joined #mlpack
govg has quit [Ping timeout: 260 seconds]
govg has joined #mlpack
andrewmw94 has joined #mlpack
< andrewmw94>
naywhayare: Are you free?
< naywhayare>
andrewmw94: yeah, just got in
< andrewmw94>
ok. So I have a question about the desgin for the Hilbert-R tree
< naywhayare>
okay, go a head
< naywhayare>
*ahead
< andrewmw94>
It's a bulk-loading method, so I assume it should be a constructor.
< naywhayare>
right, I would agree with that
< andrewmw94>
So I think I would add say a boolean variable to the constructor "BulkLoad"
< andrewmw94>
but if we were to add more bulk loading methods later, that would be a bad idea
< andrewmw94>
But I can't think of how you would do that. Possibly a function that provides an ordering of points would be used, and the constructor would be generalized to rely on that?
govg has quit [Ping timeout: 272 seconds]
< andrewmw94>
Do you think it's likely that more bulk-loading methods will be added later?
< naywhayare>
my understanding of the hilbert r tree is very basic, so I may say something incorrect
< naywhayare>
but do you think it would be reasonable to add another template parameter -- PackingPolicy -- that will take the tree and "pack" it into the more efficient ordering proposed by the hilbert R tree?
< naywhayare>
for the standard R Tree, PackingPolicy is NoPacking, or, it does nothing
< naywhayare>
but for the Hilbert R Tree, it would be HilbertPacking, where you map all your rectangles into this 4d space and then order them according to the hilbert curve (or something like that)
< naywhayare>
or I guess they give like five ways to pack it... 4d-xy, 4d-cd, 2d-c, 2dz-c
< naywhayare>
hm, that's four, not five
< andrewmw94>
what do you mean by "take the tree and "pack" it into the more efficient ordering"?
< naywhayare>
I thought that's what the hilbert R tree was
< naywhayare>
let me do a bit more reading
< andrewmw94>
My understanding is that the tree is created by this, not that it is modified
< andrewmw94>
Or, I suppose it could be modified, but I think it would be easier to implement as the tree being "created"
< andrewmw94>
So, supose you have a set of 100 points. You order them according to the Hilbert curve. Then let's say you have four children per node. You break that into four groups (0-24, 25-49, 50-74-75-99) and put each group into a different child node.
< naywhayare>
okay, so what I misunderstood was that "data rectangle" did not refer to an already existing tree node
< naywhayare>
the construction algorithm is Figure 7, right? (from "Hilbert R Tree: An Improved R-Tree Using Fractals")
< andrewmw94>
Yeah, I think we decided that we're only going to worry about points until we can think of a ML application for hyper rectangles
< naywhayare>
hm, okay, here is a modified thought which is less wrong, then --
< naywhayare>
add an additional template parameter, but call it "BatchConstructionPolicy" or something like that; basically, it's what gets done to insert points when many points are given (such as in the first constructor)
< naywhayare>
for a regular R tree, this is just some wrapper that sequentially calls Insert() (I think that's what happens, anyway)
< naywhayare>
and for the Hilbert R Tree we can have some HilbertBatchConstruction class that takes an input matrix and implements that batch construction algorithm
< andrewmw94>
ok. I think that will work
< andrewmw94>
More templates. Hurrah :)
< naywhayare>
yeah, I think that might be reasonable
< naywhayare>
I haven't read the section on the dynamic Hilbert R Tree, but I think whatever's presented there could probably fit into the existing SplitType/DescentType abstractions
< andrewmw94>
I think so. They're pretty general.
govg has joined #mlpack
< naywhayare>
also, some time back I found a bug in the X tree code that I haven't completely tracked down yet: http://www.mlpack.org/trac/ticket/368
< naywhayare>
I think I CC'ed you on the ticket, so assuming Trac is working correctly, I guess you should already know about it
< andrewmw94>
yeah. I think there were two bugs actually
< naywhayare>
anyway, I haven't had a chance to look further into it, and it may be a while until I do, so if you find it interesting, feel free
< naywhayare>
yeah, another one is a visual studio bug
< andrewmw94>
Yeah, that's what I thought I remembered. I don't have VS, so that could be harder for me to fix.
< naywhayare>
I think there's a workaround in place for that one for now, so it's less important
< andrewmw94>
I suppose I can get it through DreamSpark or whatever it's called, but I hate programming on Windows
< andrewmw94>
Yeah. I'll look into the first bug sometime soon. I've been busy with starting a chess club here and things like that
< andrewmw94>
the amount of paperwork required was ridiculous
< naywhayare>
yeah; for a long time I ran the Linux Users Group here at Tech and it was a large amount of paperwork
< naywhayare>
had to renew chartering with the student government association every year, had to have bylaws updated every year, signatures from all kinds of random people
< naywhayare>
I'm very glad I don't do that anymore because it's only become even more busy work
< andrewmw94>
Yeah, I should probably find some naive person to do it next year...
< andrewmw94>
I'm getting kind of nervous with how accurate Dilbert is. I'm worried what a real job would end up like...
< naywhayare>
I did some work for a fairly standard Dilbert-esque company over the past year... yeah, it was quite accurate
< andrewmw94>
I assumed it was completely fabricated, then I came to college and it seems more and more accurate as I get more and more experience. GSoC was an exception though :)
< naywhayare>
that was basically every day at the company I worked for last year ("how accurate do you think the model will be?" "how long do you think it will be until you can make the model reach X accuracy?")
< naywhayare>
haha, yes! that was the entirety of my undergraduate experience with group projects
< andrewmw94>
I guess the commic is incorrectly tagged as dilbert rather than dogbert. And I kept using dogbert in my searches.
< andrewmw94>
Yeah, working with a group is terrible. I'm still not sure what it was supposed to teach me
< andrewmw94>
perhaps that most people are stupid?
< naywhayare>
at least in my case there were often big skill and experience inequalities
< andrewmw94>
Yeah. It's always easier to do everything myself than it is to explain what needs to be done to the other students
< naywhayare>
once or twice I managed to work in a group where we were all on equal footing and it was great
< naywhayare>
but that was a rare experience
< andrewmw94>
well, not always. I made a chess engine with another student who is good.
< naywhayare>
ooh, a full-on chess AI, or a rendering engine of some sort?
< andrewmw94>
a full-on AI. It's not good, but it does play chess.
< andrewmw94>
The rendering engine should be this semester. I'm not sure whether I'll try to make a ray-tracer or something else yet.
< andrewmw94>
But the ray-tracer is really interesting. My family has background in physics (Mom and Dad are both Ph.D. physicists and my Grandfather is a physicist who speciallized in optics)
< naywhayare>
neat; I've been meaning to learn more about ray tracing recently
< naywhayare>
kd-trees are often used in ray tracing, from what I understand, to quickly find the interactions between rays and objects in the scene
< andrewmw94>
Yeah, I like how it's elegant in the mathematical sense.
< andrewmw94>
yes. We went over them in class the other day.
< naywhayare>
I can't say I'm more familiar than that; I was mistakenly an EE undergrad when I should have been CS, so there are lots of standard CS ideas that I don't know very well
< andrewmw94>
They can be used for several things, dividing up the scene to make rendering faster, keeping track of which objects block other objects, etc
< andrewmw94>
ahh, I had a bit of trouble with EE.
< andrewmw94>
VHDL was not my cup of tea.
< naywhayare>
VHDL is a terrible language; I don't think it's anyone's cup of tea
< andrewmw94>
I wrote a tic-tac-toe AI for it (actually I wrote a C program that wrote the AI)
< naywhayare>
verilog is better (and more commonly used in non-government industry), but not much in my opinion
< andrewmw94>
but the compiler or the circuit was broken. You could verify that the lookup table had the correct move and possition, but the circuit wouldn't play it.
< andrewmw94>
possibly a timing issue.
< naywhayare>
I found the generics support in VHDL to be particularly bad, but it's been too many years so I can't completely remember the exact details of what I disliked about it
< andrewmw94>
yeah. We also had a professor who thought he needed to teach us binary but assumed we knew VHDL.
< andrewmw94>
It was painful.
< andrewmw94>
But I have class in about 15 minutes and I still haven't finished my translation, so I should probably go. Thanks for the help.