使用支持向量机(SVM)的主要目的是让算法能够决定输入是真还是假等等。
我正在尝试使用SVM进行预测性维护,以预测系统过热的可能性。
在我的例子中,温度范围是0-102°C,如果温度达到80°C或以上,则被归类为故障。
我的输入是包含30个双精度浮点数的数组(最近30次读数)。
我在制作一些样本输入来训练SVM,我想知道是否应该传入非常具体的数据来进行训练 – 例如,传入80°C, 81°C … 102°C的数组,这样模型会自动将这些值与故障关联起来。你也可以传入30个79°C的数组,并设置为通过。
这种方法似乎是一种完整的做法,但如果输入这样的数组 – 这不就相当于硬编码一个开关语句,当温度读数为80->102°C时触发吗?
传入这些“硬编码”风格的数组是否是个好主意,还是我应该坚持使用更随机的输入?
回答:
如果可能性的集合是有限的,我强烈推荐使用朴素贝叶斯,因为这种方法非常适合这个问题。然而,如果你被迫使用SVM,我认为这会相当困难。首先,SVM的主要思想是用于分类,情景的数量并不重要。然而,输入通常很少是离散的,所以我认为通常有无限的情景。然而,通常实现的SVM只能给你一个分类,除非你有100个类,每个类代表1%的概率,否则这并不能真正解决问题。
结论是,这可能有效,但这不被认为是“最佳实践”。你可以想象你的30维向量空间被划分为100个小子空间,每个数据点,一个30×1的向量,是那个向量空间中的一个点,因此概率由它所在的100个子集中的哪一个决定。然而,拥有100个类,并且数据不干净或不足,会导致模型表现非常差,难以优化。
祝好 🙂