The Altair Community is migrating to a new platform to provide a better experience for you. In preparation for the migration, the Altair Community is on read-only mode from October 28 - November 6, 2024. Technical support via cases will continue to work as is. For any urgent requests from Students/Faculty members, please submit the form linked here
What type of label is supported for LibSVM one-class learning?
Dears,
I have tried SVM (LibSVM) one-class learning, however I found error message:
"The learning scheme SVM does not have sufficient capabilities for the given data set: binominal label not supported".
Even also tried polynominal, several other type conversion, I cannot get it.
I have tried to search on Google and this forum, I failed to find right answer.
Please give me the word .
Very thanks.
Danny.
I have tried SVM (LibSVM) one-class learning, however I found error message:
"The learning scheme SVM does not have sufficient capabilities for the given data set: binominal label not supported".
Even also tried polynominal, several other type conversion, I cannot get it.
I have tried to search on Google and this forum, I failed to find right answer.
Please give me the word .
Very thanks.
Danny.
0
Answers
However, I am not a newbie for SVM classification.
Learning data has only one label, "true", for one-class learning.
Even though I was eliminating label attribute, I couldn't get it.
BR.
the capability check is broken for this case. For now, please go to the preferences and check "rapidminer.general.capabilities.warn". This will bypass the check and trigger only a warning (which you can ignore). I will fix this problem.
Cheers,
Simon
I'd very appreciate your support.
It will helpful.
Kindly Regards,
Danny.
Thanks,
-Gagi
we preferred to force the user to recognize that the One-class option really can't distinguish between two classes in a training set. That's why it will only work without warning if only one label value is present. If you have more than one lable, please create a new attribute with only one value as label.
Greetings,
Sebastian
The power of one-class learning is that it is unsupervised, it would be nice to have the ability to use labeled data to check how well an unsupervised approach can separate 2 classes of data the one-class (normal samples) and the other-class (outliers).
Kind regards,
Tobias
I'm confused about how a one-class model created in rapidminer can be used to predict outliers versus normal samples.
Thanks,
-Gagi
I am working with one-class svm's too and I also miss the libsvm behaviour. Nevertheless based on the comments I implemented a little example how you can classify data with one-class models based on thresholds. Hope that helps
greetings,
Harald
I am however getting this error in RM5:
"The learning scheme SVM does not have sufficient capabilities for the given data set: polynominal label not supported"
How are you getting around this?
Thanks,
-Gagi
if I remember correctly, I have already solved that issue in the current developer version. Since we will publish the final version today, you simply could update afterwards.
Please tell me, if this issue remains.
Greetings,
Sebastian
greetings,
harald
first, thanks for the example by Harry678. It seems to run without having to change default preferences in 5.0.3.
But:
- Harry has to use three operators in the training part of the validator (Select Attribute / Generate Attribute / Set Role) which really shouldn't be needed if the fix Sebastian promised worked correctly: After the Filter Examples, all what is there is one class...
- I can't see how the example could serve any useful purpose, as the threshold searching on top level requires the label to be present ???
Specifically, the second point is a killer and essentially renders One-Class SVM in RM useless: It appears that whatever data set one applies 1C model to, the calculated confidence levels span the entire range from 0 to 1; so all one gets is an example ordering.I was hoping that the SVM checkbox 'calculate confidences' would do something useful: Well, it shows a message one-class SVM probability output not supported yet - not sure whether this is a problem with libSVM or RM?
Stefan
Due to the fact that one-class learning can only learn exactly one nominal class label, the three operators in the training are necessary by concept. To change this behavior some changes in the LibSVMLearner and Model are required.
please have a look at http://rapid-i.com/rapidforum/index.php/topic,1746.0.html
This patch adds the classic libsvm one-class classification behavior which predicts 1 or -1 for a sample. You still need to postprocess the labels, but at least you get some kind of binary prediction out of the model. I'd gladly accept feedback for this patch and maybe someone of the dev's can have a look on it.
Greetings, Harald
I highly encourage RM dev team to consider this patch since LibSVMs one-class algorithm is one of the most useful unsupervised learning methods in practice (no labeled classes).
-Gagi
Am I then rightly interpreting your patch that libSVM (C version) only gives an in/out classification, but doesn't attribute a continues confidence level to the result? I disagree here... RM knows labels 'polynominal' and 'binominal' - there is no label class attribute 'uninominal'. Hence, if there is a check whether or not there are multiple label values, this has to be implied from the data. But if you have a filter leaving only one value, the implication on the remaining data is clear.
(I'm insisting on this, since RMs selling point is to support rapid development - however, such kind of detours as needed in the example make the environment very heavy to use and waste user time on training RM rather than training the learner ... I'm sensing that this is a consequence of the create view on data rather than copy data, which seems to be what the Multiply operator on top level is doing, at least 'sometimes' ...)
Stefan
Yes you can either get the classic confidence value or the classification behavior from the patch. At first I tried to deliver both confidence and prediction but it wasn't that easy, the svm_predict function didn't return the confidence values (java libsvm problem?). So to get both confidence and prediction for each example two svm_* are needed and I didn't like the overhead so I left it out in the patch.
Same here. As I have seen it in the code many checks and decisions in the LibSVMLearner are based on label attribute type and the number of different label attribute values. This would need quite a big change and lots of testing. What would be the most logical GUI variant for one-class? I think one filter and one learner?
You can find very good documentation on the development environment (eclipse, subclipse) on the RM website
Greetings,
Harald
I have a process which eventually filters down a data set to one class, "around which" I want a one-class SVM build a model for use on full data - I want to see, whether such SVM is then able to isolate the samples correctly.
I set a break-point just before the SVM operator and find that I have a binominal label with mode = 1 (3872), least = 0 (0). ok. - good.
Then, I get into SVM: The operator SVM does not have sufficient capabilties ...
Then, I follow Simons advise to check rapidminer.general.capabilities.warn (now in 5.1.017). This has the simple effect of changing the error message to The attribute Label has 2 different values...
So, what now?
Thanks for any help! Stefan
This is because the metadata in RapidMiner needs to refresh. I find that before I send the data into a one-class SVM (if I've filtered the data) I need to save it and then reimport it into process.
One way of doing this is Write CSV followed by Read CSV (reading the CSV from the file output).
That gets the metadata for the binominal label cleared.