支持向量机(SVM)的一些实现细节 [英] A few implementation details for a Support-Vector Machine (SVM)

查看:139
本文介绍了支持向量机(SVM)的一些实现细节的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在一个特定的应用程序中,我需要机器学习(我知道我在本科课程中学习的东西).我使用了支持向量机,并解决了问题.工作正常.

In a particular application I was in need of machine learning (I know the things I studied in my undergraduate course). I used Support Vector Machines and got the problem solved. Its working fine.

现在我需要改进系统.这里的问题是

Now I need to improve the system. Problems here are

  1. 我每周都会收到其他培训示例.现在,系统开始使用更新的示例(旧示例+新示例)进行全新的培训.我想让它渐进式学习.使用先前的知识(而不是先前的示例)和新的示例来获得新的模型(知识)

  1. I get additional training examples every week. Right now the system starts training freshly with updated examples (old examples + new examples). I want to make it incremental learning. Using previous knowledge (instead of previous examples) with new examples to get new model (knowledge)

对,我的培训示例有3节课.因此,每个培训示例都适合于这三个课程之一.我需要未知"类的功能.任何不适合这3个类别的内容都必须标记为未知".但是我不能将未知"视为新类,也不能为此提供示例.

Right my training examples has 3 classes. So, every training example is fitted into one of these 3 classes. I want functionality of "Unknown" class. Anything that doesn't fit these 3 classes must be marked as "unknown". But I can't treat "Unknown" as a new class and provide examples for this too.

假定实现了未知"类.当类未知"时,应用程序的用户输入他认为的类可能是什么.现在,我需要将用户输入纳入学习中.我也不知道该怎么做.如果用户输入一个新的班级(即培训集中尚没有的班级),会有所不同吗?

Assuming, the "unknown" class is implemented. When class is "unknown" the user of the application inputs the what he thinks the class might be. Now, I need to incorporate the user input into the learning. I've no idea about how to do this too. Would it make any difference if the user inputs a new class (i.e.. a class that is not already in the training set)?

我需要选择一种新算法还是支持向量机可以做到这一点?

Do I need to choose a new algorithm or Support Vector Machines can do this?

PS:我正在为SVM使用libsvm实现.

PS: I'm using libsvm implementation for SVM.

推荐答案

我只是使用与您的问题(1,.,2、3)相同的组织来写我的答案.

I just wrote my Answer using the same organization as your Question (1., 2., 3).

  1. SVM可以做到这一点-即增量学习吗?多层感知器当然可以-因为后续的训练实例不会影响基本的网络架构,所以它们只会引起权重矩阵值的调整.但是SVM?在我看来,(理论上)一个额外的训练实例可以改变支持向量的选择.但同样,我不知道.

  1. Can SVMs do this--i.e., incremental learning? Multi-Layer Perceptrons of course can--because the subsequent training instances don't affect the basic network architecture, they'll just cause adjustment in the values of the weight matrices. But SVMs? It seems to me that (in theory) one additional training instance could change the selection of the support vectors. But again, i don't know.

我认为您可以通过一对多配置LIBSVM(即作为一类分类器)来轻松解决此问题. SVM是一类分类器; SVM在多类中的应用意味着它已被编码为执行多个,一步一步的,反对许多的分类,但是算法又一次被训练(和测试)了一个类.如果执行此操作,则对测试集进行逐步执行后剩下的是未知的",换句话说,执行多次连续的一类分类后未分类的数据根据​​定义为未知" ' 班级.

I think you can solve this problem quite easily by configuring LIBSVM in one-against-many--i.e., as a one-class classifier. SVMs are one-class classifiers; application of an SVM for multi-class means that it has been coded to perform multiple, step-wise one-against-many classifications, but again the algorithm is trained (and tested) one class at a time. If you do this, then what's left after step-wise execution against the test set, is "unknown"--in other words, whatever data is not classified after performing multiple, sequential one-class classifications, is by definition in that 'unknown' class.

为什么不让用户猜测某个功能(即,只是另一个因变量)?唯一的其他选择是使它成为类标签本身,而您不希望这样做.因此,例如,您需要在数据矩阵用户类别猜测"中添加一列,并为其填充一些最有可能对那些不在未知"类别中的数据点没有影响的值,因此对用户而言不会提供猜测-这个值可以是'0'或'1',但实际上取决于您对数据进行缩放和规范化的方式.

Why not make the user's guess a feature (i.e., just another dependent variable)? The only other option is to make it the class label itself, and you don't want that. So you would, for instance, add a column to your data matrix "user class guess", and just populate it with some value most likely to have no effect for those data points not in the 'unknown' category and therefore for which the user will not offer a guess--this value could be '0' or '1', but really it depends on how you have your data scaled and normalized).

这篇关于支持向量机(SVM)的一些实现细节的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆