支持向量机Java?
我想用Java编写一个“智能监视器”,每当检测到即将到来的性能问题时,它就会发出警报。我的 Java 应用程序正在以结构化格式将数据写入日志文件:
<datetime> | <java-method> | <seconds-to-execute>
因此,例如,如果我有一个需要812ms才能执行的方法,它将被记录为:Widget#doSomething(String)
2013-03-24 11:39:21 | Widget#doSomething(String) | 812
当性能开始下降时(例如在主要收集期间,在峰值负载期间,或者如果系统只是减慢到爬网),方法执行计时开始变慢;所以最右边的列开始看到巨大的数字(有时20-40秒执行单个方法)。
在大学里,为了一个机器学习练习,我写了我的教授所说的线性二分法器,它采用简单的测试数据(一个人的身高,体重和性别),并“学习”如何根据一个人的身高/体重将一个人归类为男性或女性。然后,一旦它拥有了所有的训练数据,我们就给它提供新的数据,看看它能确定性别的准确程度。
我认为线性二分法器的多变量版本称为支持向量机(SVM)。如果我错了,那么请澄清,我会把我的问题的标题改成更合适的。无论如何,我需要这个应用程序来执行以下操作:
- 在“测试模式”中运行,我从我的主Java应用程序(我希望监视的应用程序)向它提供结构化日志文件,它获取每个日志条目(如上所示)并将其用于测试数据
- 只有 和 列作为输入/测试数据很重要;我不在乎日期时间
java-method
seconds-to-execute
- 在“监视模式”下运行,其中它主动从日志文件中读取新的日志数据,并使用类似的“机器学习”技术来确定性能下降是否迫在眉睫
重要的是要注意,专栏并不是这里唯一重要的因素,因为在性能令人敬畏的时期,我看到某些方法的时序很糟糕,而当服务器似乎要死掉并推动雏菊时,其他方法的计时也非常好。因此,显然某些方法比其他方法“加权”/对性能更重要。seconds-to-execute