Open in new window / Try shogun cloud
--- Log opened Fri Jul 28 00:00:14 2017
-!- CaBa_ [] has joined #shogun00:44
-!- CaBa [~Diu7saig@unaffiliated/caba] has quit [Remote host closed the connection]00:45
-!- iglesiasg [~iglesiasg@] has joined #shogun09:21
-!- mode/#shogun [+o iglesiasg] by ChanServ09:21
-!- geektoni [] has joined #shogun09:23
-!- geektoni [] has quit [Quit: Leaving.]11:42
-!- geektoni [] has joined #shogun11:44
-!- geektoni [] has quit [Read error: Connection reset by peer]11:49
-!- HeikoS [] has joined #shogun13:07
-!- mode/#shogun [+o HeikoS] by ChanServ13:07
@HeikoSolinguyen: hey! you there?13:07
-!- HeikoS [] has quit [Read error: No route to host]13:41
-!- HeikoS [] has joined #shogun13:42
-!- mode/#shogun [+o HeikoS] by ChanServ13:42
-!- HeikoS [] has quit [Quit: Leaving.]13:49
-!- HeikoS [] has joined #shogun13:55
-!- mode/#shogun [+o HeikoS] by ChanServ13:55
-!- HeikoS [] has quit [Ping timeout: 240 seconds]13:59
-!- olinguyen_ [488ddefa@gateway/web/freenode/ip.] has joined #shogun14:12
-!- olinguyen_ [488ddefa@gateway/web/freenode/ip.] has quit [Quit: Page closed]14:20
-!- iglesiasg [~iglesiasg@] has quit [Quit: leaving]14:45
-!- zoq [] has quit [Read error: Connection reset by peer]15:17
-!- zoq_ [] has joined #shogun15:17
-!- zoq_ is now known as zoq15:32
-!- HeikoS [] has joined #shogun15:39
-!- mode/#shogun [+o HeikoS] by ChanServ15:39
-!- geektoni [~geektoni@] has joined #shogun16:22
@HeikoSgeektoni: jojo16:22
@HeikoShow are things?16:22
geektoniHeikoS: hey!16:22
geektonithings are going fine :)16:22
geektoniHeikoS: I've made some PRs for the new CrossValidation16:22
@HeikoSyeah I saw16:23
@HeikoSsorry for not reviewing yet16:23
@HeikoSbut it all works now right?16:23
geektoniyes yes16:23
@HeikoSI have a question actually16:23
@HeikoSso you added this mkl weight class16:23
@HeikoSwhich just like before, stores the MKL weights in each fold, right?16:23
geektoniyes, it works like the previous one16:24
@HeikoSso my question:16:24
@HeikoSif now a new algorithms comes along, say LARS16:24
@HeikoSand there I want to monitor the residuals across the folds16:24
@HeikoSthen I need to add a new class?16:24
geektoniyes, that is the idea16:25
@HeikoSand from there, you might see my point: is it a good idea if I need to add a new class everytime I want to monitor something in x-validation?16:25
@HeikoSwouldnt it be better if a user can specify that without having to touch the c++ code16:26
@HeikoSi.e. monitorig vector valued values with a given name (that was made observable before)16:26
@HeikoSso that one can monitor any parameter across the folds16:26
geektoniwell, the general observer for CrossValidation generate a vector with all the observations made16:27
geektonie.g index used for training/testing for each fold, evaluation for each folds etc.16:27
geektoniso a user could "parse" it to obtain the information he wants16:27
@HeikoShow would this look like (say in python=16:28
@HeikoSfor say LARS16:28
geektonithis is the general idea16:29
geektonithat's is C++ but for python will be the same16:30
@HeikoSso this "f"16:30
@HeikoSwhat is the type of that?16:31
geektonishould be "fold" instead of "f"16:32
@HeikoSso yeah fold has a type16:33
@HeikoSwhich here has the method "get_train_indices()"16:33
@HeikoSdoes it also have something like "get_vector_observation("mkl_weights")"?16:34
@HeikoSget_vector_observation("LARS residuals")"16:34
@HeikoSyou see what I mean?16:34
geektoniyes yes I see16:35
@HeikoSit would be cool if it had space values of machine parameters16:35
@HeikoSbut all in a runtime fashion16:35
geektoniit does not have those method, because I wanted to provide only a "container", without too complex methods inside.16:36
geektoniHeikoS: space values of machine parameters?16:36
@HeikoSif it had a space for values of machine parameters16:38
@HeikoSlike a map of parameter_name -> SG*16:39
@HeikoSthen there can be MKL weights, LARS residuals16:39
@HeikoSand the user before x-validation starts, tells the class that he would like to observe certain parameters for each fold16:39
@HeikoSspecified by tags or string16:39
@HeikoSthen the x-validation storage class just calls the getter on those and stores them16:40
@HeikoSbecause I want to avoid that one has to re-compile shogun in order to observe the parameter of choice16:40
@HeikoSgeektoni: see what I mean?16:44
@HeikoSgeektoni: I also have a question about the m_trained_machine16:44
@HeikoSso if you store the machine, did you clone in x-valiation?16:44
@HeikoSi.e. is the machine a different instance in every instance of the storage object?16:44
@HeikoSbecause if so, then no problem16:45
@HeikoSuser just extracts from the machine himself16:45
@HeikoSand since data is shared across the machines (it is right?), there is no memory explosion problem16:45
geektoniok, so, the machine stored is not cloned currently16:46
geektoniand, as you said, it should be16:46
@HeikoSgeektoni: I think that solved my above thing16:47
geektonianyway, yes, since we store the trained machine, the user can extract the data he needs from it, without touching the CrossValidationStorage class.16:47
@HeikoSbecause user can just query the machine16:47
@HeikoSso then I suggest the MKL class goes away16:47
@HeikoSand the machine is cloned, but the features are shared memory16:47
geektoniso then also the Multiclass ones I imagine16:48
@HeikoSI mean16:48
@HeikoSfor common cases, we can offer API that is convenience16:48
@HeikoSbut it should work via the "obtain_from_generic" thing in all cases16:48
@HeikoSyou get access to the trained machine for all folds16:48
@HeikoSplus all preductions, ground truth, result, etc16:49
geektonimmh, so, in the end, we could just store the machine and nothing else16:50
geektonimaybe apart from a few things16:50
@HeikoSI think as it is16:54
@HeikoSis good16:54
@HeikoSjust need to make things more explicit16:54
@HeikoSi.e. have en example where we extract mkl weights using the "generic" interface16:54
@HeikoSas well as say LARS weights16:54
@HeikoScould do that even in a meta example16:54
geektoniyeah, I was trying to do that this morning16:54
geektoniI mean, I was trying to produce some meta examples which show how to use the observers16:55
geektoniHeikoS: I've encountered some difficulties, though. The meta example generator (for C++) appends before each classes a 'C' and the observer classes does not have a 'C' before their name (also because they do not inherit from CSGObject), so everything fails badly when building the meta examples :P17:00
@HeikoSyeah I see17:01
geektoniand I cannot change the class names17:01
@HeikoSmeta examples only support SGObject subclasses17:01
geektoniyes yes17:01
@HeikoSbecause SWIG17:01
@HeikoSonly does that17:01
@HeikoSor does SWIG map your class as well?17:01
geektoniSWIG exposes the observer17:01
@HeikoSbecause if so, then we could easily change the meta generator17:02
@HeikoSwhy is it not a subclass?17:02
@HeikoSsay if you wanted to serialize it?17:02
geektonibecause it is needed by SGObject itself17:02
@HeikoSwe can hack the meta generator17:03
@HeikoSbut lets do that later17:03
@HeikoSfirst get the patch merged, then work on the example17:03
geektonibtw, I was currently porting the python's one17:04
geektoninothing, it was just a clarification :) because there are already some meta examples which show how to use the previous xvalidation listeners.17:08
olinguyenHeikoS: hey, are you around?17:44
-!- geektoni [~geektoni@] has quit [Remote host closed the connection]18:29
@HeikoSolinguyen: hi yes18:55
@HeikoShave to go now, talk monday!19:23
-!- HeikoS [] has quit [Ping timeout: 255 seconds]19:27
--- Log closed Sat Jul 29 00:00:15 2017