--- Log opened Sun May 20 00:00:40 2012 | ||
-!- blackburn [~blackburn@188.122.250.167] has quit [Ping timeout: 252 seconds] | 00:58 | |
-!- hoijui [~hoijui@dslb-088-074-103-131.pools.arcor-ip.net] has joined #shogun | 08:51 | |
-!- shogun-buildbot [~shogun-bu@7nn.de] has quit [Quit: buildmaster reconfigured: bot disconnecting] | 09:13 | |
-!- shogun-buildbot [~shogun-bu@7nn.de] has joined #shogun | 09:14 | |
-!- gsomix [~gsomix@85.26.233.110] has joined #shogun | 10:29 | |
gsomix | hi all | 10:29 |
---|---|---|
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 10:30 | |
-!- Francis_Chan [~Adium@59.108.60.58] has joined #shogun | 10:35 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has quit [Ping timeout: 265 seconds] | 11:02 | |
-!- blackburn [~blackburn@188.122.250.167] has joined #shogun | 11:04 | |
-!- gsomix [~gsomix@85.26.233.110] has quit [Ping timeout: 265 seconds] | 11:47 | |
-!- pluskid [~pluskid@li164-218.members.linode.com] has joined #shogun | 12:06 | |
-!- Francis_Chan [~Adium@59.108.60.58] has quit [Quit: Leaving.] | 12:06 | |
-!- hoijui [~hoijui@dslb-088-074-103-131.pools.arcor-ip.net] has quit [Quit: Leaving] | 12:26 | |
-!- Francis_Chan [~Adium@58.194.224.108] has joined #shogun | 12:40 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 12:49 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has quit [Client Quit] | 12:53 | |
CIA-113 | shogun: Soeren Sonnenburg master * rda70cf4 / (133 files in 19 dirs): Split up CLabels into various classes: - http://git.io/SwXTmQ | 13:49 |
blackburn | oh my gosh | 13:54 |
blackburn | sonney2k: dense? | 13:56 |
blackburn | is there sparse? | 13:56 |
shogun-buildbot | build #954 of libshogun is complete: Failure [failed compile] Build details are at http://www.shogun-toolbox.org/buildbot/builders/libshogun/builds/954 blamelist: sonne@debian.org | 13:57 |
-!- vikram360 [~vikram360@117.192.174.108] has quit [Ping timeout: 250 seconds] | 14:08 | |
-!- vikram360 [~vikram360@117.192.188.28] has joined #shogun | 14:09 | |
pluskid | blackburn: the new commits on CLabels splits seem to broke your recent DAMCLibLinear | 15:10 |
blackburn | pluskid: heh yes I know | 15:10 |
blackburn | working on it | 15:10 |
pluskid | cool thanks! | 15:10 |
pluskid | waiting for your quick fix to make the code compile again | 15:11 |
blackburn | here it comes | 15:12 |
CIA-113 | shogun: Sergey Lisitsyn master * r788043e / (4 files in 2 dirs): Fixed compilation of DA MC Liblinear - http://git.io/lEuSMw | 15:12 |
blackburn | pluskid: should work now | 15:12 |
pluskid | thanks! | 15:12 |
blackburn | lets check if it is working still | 15:13 |
shogun-buildbot | build #955 of libshogun is complete: Success [build successful] Build details are at http://www.shogun-toolbox.org/buildbot/builders/libshogun/builds/955 | 15:18 |
shogun-buildbot | build #853 of r_static is complete: Failure [failed test_1] Build details are at http://www.shogun-toolbox.org/buildbot/builders/r_static/builds/853 blamelist: blackburn91@gmail.com | 15:24 |
shogun-buildbot | build #874 of cmdline_static is complete: Failure [failed test_1] Build details are at http://www.shogun-toolbox.org/buildbot/builders/cmdline_static/builds/874 blamelist: blackburn91@gmail.com | 15:31 |
-!- cronor [~cronor@e178177086.adsl.alicedsl.de] has joined #shogun | 15:31 | |
shogun-buildbot | build #763 of octave_static is complete: Failure [failed test_1] Build details are at http://www.shogun-toolbox.org/buildbot/builders/octave_static/builds/763 blamelist: blackburn91@gmail.com | 15:37 |
-!- pluskid [~pluskid@li164-218.members.linode.com] has quit [Ping timeout: 244 seconds] | 15:38 | |
shogun-buildbot | build #840 of python_static is complete: Failure [failed test_1] Build details are at http://www.shogun-toolbox.org/buildbot/builders/python_static/builds/840 blamelist: blackburn91@gmail.com | 15:42 |
-!- pluskid [~pluskid@111.120.55.200] has joined #shogun | 15:55 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 16:20 | |
n4nd0 | wow CLabels commit! | 16:21 |
n4nd0 | I feel like a child in Christmas Day :D | 16:22 |
blackburn | hah | 16:25 |
-!- blackburn [~blackburn@188.122.250.167] has quit [Ping timeout: 240 seconds] | 16:39 | |
@sonney2k | pluskid, any chance that you can drop using the std stuff in http://shogun-toolbox.org/buildbot/builders/libshogun/builds/955/steps/compile/logs/warnings%20%283%29 and fix the warnings? | 16:40 |
@sonney2k | I know this is all religious std vs SGVector & stuff but hmmhh maybe you don't mind | 16:41 |
@sonney2k | (too much) | 16:41 |
@sonney2k | n4nd0, ok so we have a CLabels base class that should work with you SO framework... | 16:41 |
@sonney2k | and pluskid you were right most of the effort is really in changing the whole system - splitting things up. I think I will need help from everyone to get things fully stable | 16:43 |
CIA-113 | shogun: iglesias master * r27dd267 / src/shogun/classifier/QDA.h : + little doc QDA #418 - http://git.io/Unz_2g | 16:44 |
CIA-113 | shogun: iglesias master * r21a5be9 / src/shogun/classifier/QDA.cpp : ~ change qda parameters->add to SG_ADD - http://git.io/DhFzTA | 16:44 |
CIA-113 | shogun: Soeren Sonnenburg master * r0fbded0 / (src/shogun/classifier/QDA.cpp src/shogun/classifier/QDA.h): Merge pull request #533 from iglesias/qda - http://git.io/eG1_0Q | 16:44 |
CIA-113 | shogun: Chiyuan Zhang master * rbf4e97f / (2 files): Added Margin Loss Decoder - http://git.io/drt5Kw | 16:45 |
CIA-113 | shogun: Chiyuan Zhang master * r3fe856d / (2 files): Added modular interface for LLB Decoder - http://git.io/3NcPIQ | 16:45 |
CIA-113 | shogun: Soeren Sonnenburg master * r6f79da5 / (4 files in 2 dirs): Merge pull request #534 from pluskid/multiclass-ecoc - http://git.io/a3n6zA | 16:45 |
pluskid | sonney2k: OK, I'll fix the warnings, but replace the std stuff with SG stuff is a bit non-trivial here because the use of std::set is rather heavy here. I can try to change things here at my best, but I think this would be at a lower priority | 16:45 |
@sonney2k | pluskid, could you use shogun's set? | 16:45 |
@sonney2k | the one from gsomix? | 16:45 |
pluskid | SGSet? | 16:46 |
pluskid | I'll look at it | 16:46 |
@sonney2k | argh gtg | 16:46 |
n4nd0 | sonney2k: yeah, I am adapting what I have so far to the new labels interface, thank you! | 16:49 |
pluskid | n4nd0: I'm afraid we should make everything runs again before we move on | 16:49 |
pluskid | for example, modular examples are broken | 16:50 |
n4nd0 | pluskid: aham, too bad | 16:50 |
n4nd0 | pluskid: I am going to take a look to them | 16:50 |
@sonney2k | pluskid, sure | 16:50 |
@sonney2k | I cannot do that alone | 16:50 |
* sonney2k re | 16:50 | |
pluskid | yes, cool if we all help to fix things | 16:51 |
pluskid | but should be careful not to do duplicated work :D | 16:51 |
n4nd0 | pluskid: btw, do you remember what is the right solution to do when the "non-fast-forward updates were rejected" error pops up | 16:51 |
pluskid | push --force is OK | 16:51 |
pluskid | I tested that | 16:51 |
n4nd0 | pluskid: I have been using lately the strategy you suggested once of deleting the remote branch a moment and then pushing again | 16:51 |
n4nd0 | all right | 16:52 |
pluskid | that's OK, too | 16:52 |
pluskid | just a bit more steps | 16:52 |
@sonney2k | pluskid, yeah difficult no idea how to avoid some overlap. I guess you have no problem because you are in a different timezone :) | 16:53 |
@sonney2k | pluskid, btw are you in good health again? | 16:53 |
pluskid | sonney2k: hmm, maybe now I can declare that my cold is officially cured :D | 16:53 |
n4nd0 | nice :) | 16:53 |
shogun-buildbot | build #956 of libshogun is complete: Failure [failed compile] Build details are at http://www.shogun-toolbox.org/buildbot/builders/libshogun/builds/956 blamelist: fernando.iglesiasg@gmail.com | 16:54 |
@sonney2k | pluskid, for (int32_t i=0; i < part2.size(); ++i) is not the right fix | 16:54 |
@sonney2k | part2.size() is unsigned | 16:54 |
@sonney2k | so you would need to cast i and part2.size() to index_t | 16:54 |
@sonney2k | pluskid, good to hear! | 16:54 |
pluskid | hmm? I changed it to for (index_t i=0; i < part2.size(); ++i) | 16:55 |
@sonney2k | index_t is currently int32_t | 16:56 |
@sonney2k | pluskid, ^ | 16:56 |
pluskid | oops... | 16:56 |
pluskid | so I think I should use size_t | 16:56 |
-!- cronor [~cronor@e178177086.adsl.alicedsl.de] has quit [Read error: Connection reset by peer] | 16:56 | |
n4nd0 | sonney2k, pluskid: is someone fixing python_modular/graphical examples? | 16:56 |
@sonney2k | wiking wants it to be uint32_t | 16:56 |
@sonney2k | n4nd0, no feel free | 16:56 |
pluskid | n4nd0: no AFAIK | 16:56 |
@sonney2k | I am trying to fix the libshogun ones | 16:57 |
n4nd0 | ok, then I start with them | 16:57 |
@sonney2k | n4nd0, pluskid please note there is one catch with the new system: | 16:57 |
pluskid | sonney2k: I'll use size_t here and replace with index_t later when I replace std::vector with SGVector, OK? | 16:57 |
@sonney2k | while e.g. svm uses BinaryLabels or KNN MulticlassLabels | 16:57 |
@sonney2k | it is not so clear what apply() will return | 16:58 |
@sonney2k | I decided that it should return CRealLabels | 16:58 |
pluskid | why? | 16:58 |
pluskid | Since Labels have confidence now, it can return BinaryLabels with confidence set properly, isn't it? | 16:59 |
@sonney2k | for the SVm | 16:59 |
@sonney2k | and CMulticlassLabels for KNN | 16:59 |
@sonney2k | problem with the interface currently is that machines all return CLabel* | 16:59 |
@sonney2k | pluskid, ok | 16:59 |
n4nd0 | sonney2k: what is the idea that makes MulticlassLabels and RealLabels different? | 17:00 |
pluskid | sonney2k: I think we have two solutions: 1. a *strict* convention that binary machine return binary labels, MC machine return MC labels, etc; 2. use dynamic_cast when down casting Labels | 17:00 |
pluskid | or else brute force casting a wrong type object will give use mysterious errors that is difficult to identify | 17:01 |
@sonney2k | pluskid, re labels - maybe - problem is the current evaluation works on labels so for computing ROC it compares real valued outputs with binary labels | 17:01 |
pluskid | hmm, seems lots of changes to the current code have to be done | 17:02 |
@sonney2k | n4nd0, they have the same base class but accept different values: binary only +1/-1, mc 0...max_int, real labels anythin in R | 17:02 |
pluskid | btw, I find a minor problem when scanning the commits | 17:02 |
pluskid | I forgot ... let me remind ... | 17:02 |
n4nd0 | sonney2k: aham, RealLabels must be for regression then | 17:03 |
@sonney2k | n4nd0, yes | 17:03 |
@sonney2k | argh gtg now | 17:03 |
n4nd0 | I read the same description in the brief and got confused ;) | 17:03 |
pluskid | sonney2k: wait a min | 17:03 |
pluskid | MulticlassLabels.cpp:33 | 17:03 |
pluskid | float64_t(label)!=labels.vector[real_i]) | 17:03 |
pluskid | oh, no problem | 17:04 |
pluskid | my fault | 17:04 |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has quit [Ping timeout: 252 seconds] | 17:34 | |
-!- pluskid [~pluskid@111.120.55.200] has quit [Quit: Leaving] | 18:13 | |
-!- Francis_Chan [~Adium@58.194.224.108] has quit [Quit: Leaving.] | 18:13 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 19:07 | |
-!- PhilTillet [~Philippe@157.159.42.46] has joined #shogun | 19:39 | |
-!- blackburn [~blackburn@188.122.250.167] has joined #shogun | 19:46 | |
-!- PhilTillet [~Philippe@157.159.42.46] has quit [Remote host closed the connection] | 19:54 | |
@sonney2k | pluskid, casting will be needed anyways if we want to have some kind of apply() interface | 20:02 |
blackburn | are you f-ing kidding? :D | 20:02 |
blackburn | line 57 dense labels | 20:02 |
@sonney2k | pluskid, but I like the idea of using confidences and having the strict convention binary machine -> binary labels etc | 20:03 |
blackburn | 55 void CDenseLabels::init() | 20:03 |
blackburn | 56 { | 20:03 |
blackburn | 57 ????CDenseLabels::init(); | 20:03 |
blackburn | hmmm | 20:03 |
blackburn | sonney2k: what should it do? | 20:04 |
@sonney2k | blackburn, removed | 20:15 |
CIA-113 | shogun: Soeren Sonnenburg master * rfa50f74 / (6 files in 2 dirs): fix libsvm example and don't call pure virtual method (indirectly in constructor) - http://git.io/wH2ANg | 20:15 |
blackburn | sonney2k: what is the difference between real and dense? | 20:15 |
@sonney2k | blackburn, what do you think about pluskid's suggestion? | 20:15 |
@sonney2k | <pluskid> +sonney2k: I think we have two solutions: 1. a *strict* convention that binary machine return binary labels, MC machine return MC labels, etc; | 20:16 |
@sonney2k | this one ^ | 20:16 |
blackburn | sonney2k: you mean confidences? | 20:16 |
@sonney2k | blackburn, dense has pure virtual methods | 20:16 |
@sonney2k | blackburn, yes returning binary labels for binary machines | 20:16 |
@sonney2k | so +1 / -1 only | 20:17 |
blackburn | I don't mind it | 20:17 |
@sonney2k | and have the real valued outputs in confidences only | 20:17 |
@sonney2k | it would drastically change evaluations | 20:17 |
blackburn | evaluations are pretty simple to change | 20:18 |
@sonney2k | so you think we should go for it? | 20:18 |
blackburn | sonney2k: so should we change every example to real/binary labels now? | 20:18 |
blackburn | sonney2k: what is advantage? | 20:19 |
@sonney2k | blackburn, it is less confusing | 20:20 |
@sonney2k | I mean one would expect a binary label from a binary classifier | 20:20 |
@sonney2k | and if one wants real valued outputs confidences or scores (or whatever we name it) make more sense | 20:21 |
@sonney2k | it is a lot of work though | 20:21 |
blackburn | sonney2k: why it is listed that RealLabels are for multiclass?! | 20:22 |
@sonney2k | ? | 20:22 |
@sonney2k | multiclass -> multiclass | 20:22 |
blackburn | 28 /** @brief Real Labels for multi-class classification | 20:22 |
blackburn | 29 * | 20:22 |
blackburn | 30 * valid values for labels are 0...nr_classes-1 | 20:22 |
blackburn | 31 */ | 20:22 |
blackburn | ??! | 20:22 |
blackburn | oh okay it seems it is just a wrong doc | 20:23 |
blackburn | I was really confused with it :) | 20:23 |
blackburn | sonney2k: I'm ok with binary -> binary | 20:24 |
blackburn | we broke a lot of things already and it is the best moment to make it less confusing | 20:24 |
CIA-113 | shogun: Soeren Sonnenburg master * r16581fb / src/shogun/labels/RealLabels.h : fix doc of reallabels - http://git.io/8J7YDQ | 20:26 |
@sonney2k | blackburn, do you have time to do it? | 20:26 |
blackburn | sonney2k: to convert it to binary ? | 20:26 |
blackburn | yes | 20:26 |
@sonney2k | it is quite intrusive | 20:27 |
blackburn | I need to get shogun back to work :D | 20:27 |
@sonney2k | you will need to change the way apply works in all machines | 20:27 |
@sonney2k | ie. set confidences there | 20:28 |
@sonney2k | and then call sth like convert_to_binary or MC or whatever | 20:28 |
blackburn | ?? | 20:28 |
@sonney2k | I am also not so sure yet how confidences look like for MC | 20:28 |
@sonney2k | I mean these are not the outputs of all the ECOC machines... | 20:29 |
blackburn | sonney2k: for OvR it is quite clear | 20:29 |
blackburn | max margin | 20:29 |
@sonney2k | what are the confidences? | 20:29 |
blackburn | just the max class margin is ok I think | 20:29 |
blackburn | max among classes I mean | 20:29 |
blackburn | it can be always changed | 20:30 |
@sonney2k | max(score) you mean ok | 20:30 |
blackburn | depends how do you call it he | 20:30 |
blackburn | heh | 20:30 |
@sonney2k | and for regression we don't have confidences | 20:30 |
blackburn | sonney2k: I think we should have (labels, confidences) constructor in real labels | 20:30 |
@sonney2k | GPs will be though | 20:30 |
blackburn | agree? | 20:31 |
@sonney2k | blackburn, I think in all labels it makes sense | 20:31 |
blackburn | ok lets do it | 20:31 |
@sonney2k | hmmhh in binary one could have a confidences -> binary labels conversion function | 20:32 |
@sonney2k | like label_from_confidence(threshold) | 20:32 |
@sonney2k | and then it would do the +1/-1 assignment | 20:32 |
blackburn | I am afraid I do not really understand | 20:33 |
@sonney2k | multiclass you need the (labels,confidences) pair | 20:33 |
blackburn | ah automagic labels from confidences | 20:33 |
blackburn | right? | 20:33 |
@sonney2k | blackburn, a function that does sign(f(x)-threshold) | 20:33 |
@sonney2k | yes | 20:34 |
blackburn | where can this threshold be used? | 20:34 |
@sonney2k | I don't understnad | 20:35 |
blackburn | sonney2k: ok one more Q - why do we store +1 -1 as floats? | 20:35 |
@sonney2k | it would be threshold=0 by default | 20:35 |
blackburn | why not zero thershould? | 20:35 |
@sonney2k | blackburn, what else do you suggest? | 20:36 |
blackburn | BinaryLabels(SGVector<bool>, SGVector<float64_t> | 20:36 |
blackburn | ) | 20:36 |
blackburn | and | 20:36 |
blackburn | BinaryLabels(SGVector<float64_t>) | 20:36 |
blackburn | ah ok base class | 20:36 |
@sonney2k | blackburn, then you have lots of code duplication and overhead is really insignificant | 20:36 |
blackburn | hmm why do const appear here | 20:37 |
blackburn | sonney2k: so should we use const SGVector? | 20:38 |
blackburn | i'm confused with it | 20:38 |
blackburn | ok 4-1 and VODKA TIME | 20:41 |
CIA-113 | shogun: Soeren Sonnenburg master * rc4aca39 / src/shogun/multiclass/ecoc/ECOCDiscriminantEncoder.cpp : Merge pull request #535 from pluskid/multiclass-ecoc - http://git.io/KViuMw | 20:41 |
CIA-113 | shogun: Chiyuan Zhang master * r1d40518 / src/shogun/multiclass/ecoc/ECOCDiscriminantEncoder.cpp : Fix compile error. - http://git.io/4KZccw | 20:41 |
CIA-113 | shogun: Chiyuan Zhang master * r323fcad / src/shogun/multiclass/ecoc/ECOCDiscriminantEncoder.cpp : Use size_t instead of index_t for std::vector - http://git.io/zoLaag | 20:41 |
@sonney2k | blackburn, I never use use const :D | 20:43 |
blackburn | sonney2k: hmm in binary labels | 20:44 |
blackburn | sonney2k: will it work with const at all? | 20:44 |
blackburn | should work.. | 20:45 |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has quit [Ping timeout: 248 seconds] | 20:45 | |
@sonney2k | hmmh I don't even know what it means there | 20:45 |
blackburn | sonney2k: that src label is not going to be modified | 20:45 |
blackburn | src vector* | 20:45 |
@sonney2k | ahh but the ptrs | 20:45 |
blackburn | ptrs are not changed | 20:45 |
blackburn | so it would work I think | 20:45 |
@sonney2k | I mean the things where they are pointing to | 20:46 |
blackburn | no they are not guarded by const | 20:46 |
@sonney2k | so it is useless :D | 20:46 |
blackburn | not really it denies to e.g. change vector pointer | 20:46 |
@sonney2k | but that ptr is copied anyway | 20:47 |
blackburn | yeah | 20:47 |
blackburn | sonney2k: so do you think binary labels should obtain binary from float64 vector? | 20:48 |
blackburn | by default | 20:48 |
@sonney2k | hmm cool idea | 20:49 |
@sonney2k | might be confusing though | 20:49 |
@sonney2k | but actually why not! | 20:49 |
@sonney2k | I mean if it is +1/-1 it won't hurt | 20:49 |
blackburn | sonney2k: but is this threshold really needed? | 20:51 |
@sonney2k | blackburn, in constructor I would use the default =0 threshold | 20:59 |
@sonney2k | but keep a function that does it in the more general way | 20:59 |
blackburn | sonney2k: yes I understand but what is the use case of say threshold = 9.5? | 20:59 |
@sonney2k | fewer false positives | 21:00 |
-!- gsomix [~gsomix@188.168.4.149] has joined #shogun | 21:00 | |
-!- gsomix [~gsomix@188.168.4.149] has quit [Client Quit] | 21:00 | |
blackburn | heh | 21:00 |
-!- vikram360 [~vikram360@117.192.188.28] has quit [Ping timeout: 252 seconds] | 21:06 | |
blackburn | sonney2k: oops | 21:16 |
blackburn | linear machine returns binary labels ok | 21:16 |
blackburn | but linear regression?? | 21:16 |
-!- vikram360 [~vikram360@117.192.188.28] has joined #shogun | 21:26 | |
shogun-buildbot | build #243 of nightly_all is complete: Success [build successful] Build details are at http://www.shogun-toolbox.org/buildbot/builders/nightly_all/builds/243 | 21:33 |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 21:48 | |
@sonney2k | blackburn, regression returns regression labels | 21:51 |
blackburn | sonney2k: how?? | 21:51 |
@sonney2k | we rename them back to regression | 21:51 |
@sonney2k | ahh you mean because they share the apply function? | 21:52 |
blackburn | yes | 21:52 |
@sonney2k | argh | 21:52 |
blackburn | heh | 21:52 |
blackburn | I'm currently getting libshogun examples back to work | 21:52 |
@sonney2k | blackburn, only idea I have is a flag | 21:53 |
@sonney2k | mark in the machine that it is a regressor | 21:53 |
@sonney2k | and then return regression labels | 21:53 |
blackburn | is it really needed? a lot of work and I am not really sure it is needed | 21:54 |
@sonney2k | the definition of 'needed' is YMMV | 21:59 |
@sonney2k | I can tell that I liked pluskid's idea | 22:00 |
blackburn | sonney2k: currently I lost my confidence with everything that is going on in shogun | 22:00 |
@sonney2k | as usual | 22:00 |
blackburn | if we break more things I can lost my confidence at all and that would slow down me | 22:01 |
blackburn | I believe we should get things to work first | 22:01 |
blackburn | n4nd0: can you help us? | 22:01 |
@sonney2k | blackburn, problem really is that I do these big transitions mostly alone | 22:02 |
@sonney2k | that is not good because I don't have much time | 22:02 |
blackburn | sonney2k: I do not understand why do you do it alone | 22:02 |
@sonney2k | blackburn, well I asked whether you could do SGSparse | 22:02 |
@sonney2k | not sure who else could help... | 22:03 |
@sonney2k | it is all too deep IMHO | 22:03 |
n4nd0 | blackburn: I am working on fixing python_modular/graphical | 22:03 |
blackburn | hah I do not think it is the case when you should blame me ;) | 22:03 |
n4nd0 | blackburn: right now I am with some qda labels | 22:03 |
blackburn | n4nd0: could you please after focus on python modular in general? | 22:04 |
@sonney2k | blackburn, I don't understand what you are saying | 22:04 |
blackburn | Multiclass/Real labels in place | 22:04 |
blackburn | sonney2k: as usual - nevermind ;) | 22:04 |
n4nd0 | blackburn: sure | 22:04 |
@sonney2k | I think we should do labels right now | 22:04 |
n4nd0 | blackburn: let's try to ensure that not more than one is working on the same | 22:04 |
@sonney2k | whatever right is | 22:04 |
@sonney2k | another transition w/ labels few months later just sucks | 22:05 |
blackburn | n4nd0: I won't work on python modular | 22:05 |
blackburn | sonney2k: I do not like flag idea | 22:05 |
n4nd0 | blackburn: congrats for the hockey by the way ;) | 22:05 |
blackburn | oh yeah thanks | 22:05 |
blackburn | red machine | 22:05 |
@sonney2k | blackburn, why not? I like it. One can ask machines what types of problems they can solve | 22:06 |
blackburn | ok then lets focus on som? separate tasks | 22:06 |
@sonney2k | that's pretty useful | 22:06 |
blackburn | some* | 22:06 |
@sonney2k | I think I should figure out how I can get the typemap stuff to work such that certain machines return certain label classes | 22:07 |
blackburn | that sounds pretty impossible | 22:08 |
@sonney2k | why? | 22:09 |
blackburn | you would always need actual type | 22:09 |
@sonney2k | CLibLinear's apply function should just return CBinaryLabels | 22:09 |
@sonney2k | so I can rename / change type | 22:09 |
blackburn | shit it is so crappy I'm getting mad | 22:10 |
@sonney2k | other suggestions? | 22:10 |
blackburn | I'd say if I had | 22:11 |
blackburn | ok so what should I do | 22:12 |
@sonney2k | blackburn, I would say do the confidence thing with labels | 22:12 |
@sonney2k | and introduce a machine type flag in machines | 22:12 |
@sonney2k | that each machine sets | 22:12 |
blackburn | sonney2k: why not to add KernelClassifierMachine | 22:12 |
@sonney2k | I like that btw regardless of what we do with labels | 22:12 |
blackburn | to avoid adding apply to every f-ing class | 22:13 |
blackburn | KernelRegressionMachine | 22:13 |
blackburn | no idea | 22:13 |
@sonney2k | blackburn, we are again having the problem not to have interfaces | 22:14 |
blackburn | KernelMachine can be an SGObject | 22:15 |
blackburn | but Classifier could be not an SGObject | 22:15 |
blackburn | with multiple inheritance we can set up proper apply here | 22:15 |
@sonney2k | blackburn, hmmhh so we would have kernelmachine -> (kernelclassifiermachine, kernelregressionmachine) | 22:15 |
blackburn | no diamon | 22:15 |
blackburn | d | 22:15 |
@sonney2k | multiclassmachine is somehow an exception | 22:16 |
blackburn | and easy way to indicate which problems machine can solve | 22:16 |
blackburn | another way is to add more crappy machines | 22:17 |
blackburn | I can not see any pitfall here | 22:17 |
@sonney2k | I don't think swig will work for all target langs for that - but never tried | 22:18 |
blackburn | sonney2k: IRegressor with CRealLabels apply() , IClassifier with CBinaryLabels apply() | 22:18 |
blackburn | ehm | 22:19 |
blackburn | but impls.. | 22:19 |
blackburn | okay it is not a solution it seems | 22:20 |
@sonney2k | blackburn, well we don't have that problem w/ the current (new) labels system | 22:20 |
blackburn | sonney2k: would be pretty cool to have implementations for both regression and classify apply in kernel machine | 22:21 |
blackburn | and interface could tell which one to use | 22:21 |
blackburn | hmm wait that should be possible | 22:22 |
blackburn | with protected methods | 22:22 |
blackburn | sonney2k: do you understand? | 22:22 |
@sonney2k | no | 22:23 |
blackburn | sonney2k: kernel machine could hazz apply_regression and apply_classify | 22:24 |
@sonney2k | true | 22:24 |
blackburn | IClassifier would hazzzz | 22:24 |
blackburn | apply that calls apply_classify | 22:24 |
blackburn | and returns BinaryLabels | 22:24 |
@sonney2k | but we don't need that | 22:24 |
@sonney2k | if we have the machine type flag | 22:25 |
@sonney2k | I think I can well live with that | 22:25 |
blackburn | sonney2k: but no crazy typemaps are needed than | 22:25 |
@sonney2k | so machines that have multiple options just have an apply_{machine type} | 22:26 |
@sonney2k | or maybe even all of them ahve | 22:26 |
@sonney2k | have | 22:26 |
@sonney2k | then we don't need typemaps or anything | 22:26 |
@sonney2k | and from the C++ api one can still cast around as wanted | 22:26 |
@sonney2k | 'apply_classifier' | 22:26 |
@sonney2k | 'apply_regression' | 22:26 |
@sonney2k | 'apply_multiclass' | 22:27 |
blackburn | in the suggested solution each machine would have exactly that apply that is needed | 22:27 |
@sonney2k | now I lost you | 22:27 |
blackburn | sonney2k: deriving from both IClassifier and KernelMachine would mean that we have BinaryLabels apply() that uses kernel machine method for that | 22:28 |
@sonney2k | blackburn, again we don't know if MI is an option at all | 22:29 |
blackburn | should work I think | 22:29 |
@sonney2k | so I would rather not use it here | 22:29 |
@sonney2k | for pure C++ sure | 22:29 |
@sonney2k | no idea about swig | 22:30 |
@sonney2k | ahh and it would mean that we loose CMachine::apply() | 22:30 |
blackburn | don't we loose it already | 22:31 |
@sonney2k | no | 22:31 |
blackburn | ok then flag in the only option probably | 22:31 |
@sonney2k | we just return CBInaryLabels which is cast to CLabels | 22:31 |
blackburn | ok I'm defeated heh | 22:31 |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 22:31 | |
@sonney2k | so from C++ side one can check which type it is and cast back | 22:31 |
@sonney2k | only for swig interfaces this is a problem that cannot type cast | 22:32 |
@sonney2k | that is why I like having the apply_classifier etc methods | 22:32 |
@sonney2k | and if we can have some typemap magic to still use apply() for the cases where there are no conflicts I would just do them | 22:33 |
blackburn | sonney2k: and rename apply_classifier to apply? | 22:33 |
@sonney2k | yeah %ignore apply() / %rename ... | 22:33 |
@sonney2k | actually not rename but something else | 22:34 |
@sonney2k | blackburn, one more idea - apply gets an extra flag telling which type of labels are wanted | 22:38 |
blackburn | sonney2k: why? | 22:39 |
@sonney2k | blackburn, for the kernelmachine case where you want to return binarylabels or regressionlabels | 22:41 |
@sonney2k | one can just say apply(LT_BINARY) | 22:41 |
@sonney2k | to get binary labels | 22:41 |
@sonney2k | or apply(data, LT_BINARY) | 22:41 |
@sonney2k | so no need for apply_classifier then | 22:42 |
@sonney2k | ...except for swig stuff | 22:42 |
@sonney2k | I have to sleep now... we should continue discussing tomorrow hopefully with wikiking, n4nd0, pluskid | 22:43 |
n4nd0 | agree | 22:43 |
blackburn | I am completely lost what to do now | 22:43 |
n4nd0 | sonney2k: good night | 22:43 |
n4nd0 | blackburn: I got a question here, | 22:46 |
blackburn | shoot | 22:46 |
n4nd0 | qda.apply(data).get_labels() fails since get_labels is not defined for Labels | 22:46 |
n4nd0 | but it is for MulticlassLabels | 22:47 |
n4nd0 | what I would like to use here | 22:47 |
n4nd0 | what is the good way to do this "casting" in python? | 22:47 |
n4nd0 | should we defined some constructors in the derived class? | 22:47 |
n4nd0 | like | 22:47 |
n4nd0 | CMulticlassLabels(Labels CLabels) | 22:47 |
blackburn | oh | 22:48 |
n4nd0 | maybe I am saying something stupid though | 22:49 |
n4nd0 | this is in python_modular/graphical/qda.py | 22:49 |
blackburn | wait but why qda is multiclass? | 22:49 |
n4nd0 | it works for multiclass | 22:50 |
n4nd0 | yeah I know ... it should go to multiclass/ instead of classifier/ | 22:50 |
blackburn | QDA is multiclass?! | 22:50 |
blackburn | LOL | 22:50 |
n4nd0 | why are you so surprised? | 22:51 |
blackburn | I've never knew this | 22:51 |
n4nd0 | :) | 22:51 |
blackburn | I thought it is binary just as lda | 22:51 |
n4nd0 | no | 22:51 |
blackburn | our lda | 22:51 |
n4nd0 | our lda is binary yes, sonney2k asked me about modifying that to sth similar to qda though | 22:51 |
n4nd0 | but our qda works multiclass directly, no need for multiclass strategies | 22:51 |
blackburn | huh cool | 22:52 |
blackburn | I should try this | 22:52 |
n4nd0 | just think of it, it is not that weird actually | 22:52 |
n4nd0 | you are just fitting data into Gaussians | 22:52 |
n4nd0 | labeled data | 22:52 |
blackburn | yeah not weird at all | 22:52 |
n4nd0 | sorry, the other way round | 22:53 |
n4nd0 | fitting Gaussians into data :P | 22:53 |
n4nd0 | anyhow, what do you think about the issue I came with? | 22:53 |
blackburn | yeah wrong likelihood hehe | 22:54 |
blackburn | n4nd0: it is actually what we were discussing | 22:54 |
n4nd0 | blackburn: can't we downcast in python somehow? | 22:55 |
-!- vikram360 [~vikram360@117.192.188.28] has quit [Ping timeout: 250 seconds] | 22:55 | |
blackburn | we can I think but I am not sure it is the solution | 22:56 |
wiking | baaaack | 22:56 |
* wiking just arrived from the airport | 22:56 | |
blackburn | heh welcome home | 22:56 |
wiking | thnx | 22:56 |
n4nd0 | yeah welcome wiking | 22:56 |
wiking | i'll have to start reading logs | 22:56 |
n4nd0 | did you have a good time in the conference? | 22:57 |
wiking | yeah it was nice | 22:57 |
wiking | but was more than enough | 22:57 |
n4nd0 | wiking: prepare some coffe if you plan to read them :P | 22:57 |
n4nd0 | in what sense? | 22:57 |
blackburn | OH SHIT WE WANTED TO DO DOC | 22:57 |
blackburn | *facepalm* | 22:57 |
n4nd0 | I guess it is better to fix what we have now .... or? | 22:58 |
blackburn | yes fuck doc if we have everything b0rken | 22:59 |
n4nd0 | I don't see how to approach this problem ... | 23:00 |
blackburn | yes I am in deep depression :D | 23:00 |
n4nd0 | haha | 23:01 |
wiking | blackburn: i was just about to ask, how that went? | 23:02 |
blackburn | wiking: what went? | 23:03 |
wiking | documentation session | 23:03 |
n4nd0 | blackburn: should we discuss about how to do this or wait for sonney2k? | 23:03 |
blackburn | wiking: we didn't do anything | 23:03 |
blackburn | :D | 23:03 |
blackburn | we need to fix that piece of | 23:03 |
blackburn | cake | 23:03 |
wiking | :) | 23:04 |
blackburn | n4nd0: oook let me try to think | 23:04 |
blackburn | it always hard for me | 23:04 |
n4nd0 | ok | 23:04 |
n4nd0 | so let's define the problem clearly first | 23:04 |
n4nd0 | the problem I found is for the python interface | 23:05 |
n4nd0 | apply() return Labels | 23:05 |
blackburn | we need to have general apply | 23:05 |
blackburn | but we need to not have general apply | 23:05 |
blackburn | cooooooooool | 23:05 |
n4nd0 | ha | 23:05 |
n4nd0 | I think that the solution to what I am talking about is just to downcast | 23:07 |
n4nd0 | so I will go for doing a copy constructor | 23:07 |
blackburn | downcast is soooooo damn | 23:08 |
blackburn | ugly | 23:08 |
n4nd0 | but we don't do it explicitily if we have the copy constructor | 23:08 |
n4nd0 | we could make | 23:08 |
n4nd0 | MulticlassLabels(qda.apply()) | 23:08 |
blackburn | that sucks | 23:09 |
n4nd0 | wy? | 23:09 |
n4nd0 | oh | 23:09 |
n4nd0 | why? haha | 23:09 |
n4nd0 | afk | 23:09 |
blackburn | casting is not a pythonic way at all | 23:09 |
blackburn | it would be ok in java though | 23:10 |
n4nd0 | but there is no cast there | 23:13 |
n4nd0 | we are just creating an object | 23:13 |
blackburn | n4nd0: there should be a swig hack for that.. | 23:13 |
n4nd0 | without the need of the constructor? | 23:13 |
blackburn | yes it should be actual type not just clabels | 23:14 |
-!- cronor [~cronor@g225026248.adsl.alicedsl.de] has joined #shogun | 23:15 | |
n4nd0 | blackburn: so you think that to do CMulticlassLabels::CMulticlassLabels(const CLabels& orig) is not a good approach | 23:20 |
blackburn | no having this constructor is ok | 23:21 |
n4nd0 | mmm but one moment, where do we get the vector labels from? | 23:21 |
n4nd0 | I mean, CLabels doesn't have it | 23:21 |
blackburn | :D | 23:22 |
n4nd0 | all right, so was that the problem you were talking about? | 23:23 |
blackburn | yes | 23:23 |
blackburn | in general | 23:23 |
n4nd0 | what possibilities do we have to solve this? | 23:25 |
n4nd0 | taking this into account, I understand that we *need* that apply returns specialized labels | 23:25 |
blackburn | hmmm I suggest to rm -rf shogun | 23:25 |
n4nd0 | haha | 23:26 |
n4nd0 | wtf man, c'mon - we solve this ;) | 23:26 |
blackburn | I see no solution at all :D | 23:26 |
n4nd0 | I see solution with templates | 23:27 |
n4nd0 | CLabels is templated | 23:27 |
n4nd0 | blackburn: what were the other possibilities you and sonney2k were discussing? | 23:29 |
blackburn | n4nd0: I guess they all are related to some casting | 23:30 |
n4nd0 | blackburn: even if apply returns CLabels? | 23:30 |
blackburn | I suggested to add different apply's | 23:31 |
blackburn | but it makes apply() in CMachine useless | 23:31 |
blackburn | I like templates more.. | 23:35 |
blackburn | n4nd0: another suggestion was to add interfaces | 23:41 |
blackburn | but not clear whether it can be used from swig | 23:41 |
n4nd0 | blackburn: how to add those interfaces? | 23:42 |
n4nd0 | CLabels is already an abstract class | 23:42 |
blackburn | n4nd0: class IClassifier { BinaryLabels* apply(CFeatures* data = NULL) { apply_classifier(data); } } | 23:43 |
n4nd0 | mmm I see | 23:44 |
n4nd0 | I think this is a fun problem :P | 23:44 |
blackburn | n4nd0: I think we need a few bottles for that | 23:44 |
n4nd0 | let's see which is the best solution we find | 23:44 |
blackburn | (of vodka you know) | 23:45 |
n4nd0 | haha yeah, got you ;) | 23:45 |
blackburn | ballmer peak | 23:46 |
n4nd0 | what? | 23:46 |
blackburn | http://xkcd.com/323/ | 23:46 |
n4nd0 | found it | 23:46 |
n4nd0 | haha that's fun | 23:47 |
blackburn | n4nd0: with that 'interfaces' I've suggested we would lost CMachine::apply | 23:47 |
n4nd0 | why? | 23:47 |
blackburn | because it is 'specialized' in machines | 23:48 |
n4nd0 | to be honest what I like the most is to use templates here | 23:49 |
n4nd0 | I am not sure this will solve all the problems | 23:49 |
n4nd0 | because the thing is | 23:51 |
n4nd0 | what if we define specialized methods in the subclasses | 23:51 |
n4nd0 | how could they be used without casting the class to the subclass? | 23:51 |
blackburn | http://cs317320.userapi.com/v317320297/10f2/XqSlD4PcgpQ.jpg that's so damn sincere | 23:52 |
n4nd0 | you see | 23:52 |
n4nd0 | Sweden is a nice country to live in | 23:53 |
n4nd0 | if you know what I mean ... | 23:53 |
blackburn | n4nd0: do you know why did he wear demitra's shirt | 23:53 |
blackburn | ? | 23:53 |
n4nd0 | no | 23:53 |
n4nd0 | why? | 23:53 |
blackburn | n4nd0: demitra leaved national team in 2011 and he died in plane crash | 23:53 |
n4nd0 | oh | 23:54 |
n4nd0 | what is the accident where several hockey players died? | 23:54 |
blackburn | that crash of lokomotiv ice hockey club | 23:54 |
blackburn | yes whole team | 23:54 |
blackburn | okay about subclassing | 23:55 |
blackburn | we cannot specialize apply in kernelmachine | 23:55 |
blackburn | because kernelmachine is both for regression and classify | 23:56 |
-!- cronor_ [~cronor@e177093001.adsl.alicedsl.de] has joined #shogun | 23:57 | |
n4nd0 | we should account for that too | 23:59 |
n4nd0 | if apply always returns CLabels | 23:59 |
--- Log closed Mon May 21 00:00:02 2012 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!