故障诊断阶段,将构建好的模型运用到测试集上,对故障诊断结果分析。以决策树建立故障诊断模型,可见在训练集上的效果可达98.94%,测试集上可达90.24%。
为进一步提高模型性能,一方面应具体分析训练集和测试集上被错误分类的故障工单,查看三种日志的内容并查找问题;另一方面,可增加更多的数据用于构建模型,一般而言,数据量越大,模型越接近。
不同算法:尝试采用不同的文本分类算法用于故障分类,测试效果能反映出该算法对当前问题的适用性。如下,笔者采用了8种算法进行对比,并对结果进行总结分析。
关联规则:左键 ->右键,左键的组合导致右键的发生。引入关联规则挖掘,可进一步分析日志中关键词的出现,可以如何判定某一类故障的发生。譬如当{'TSC', 'CPU', 'Hardware', 'Error'}等词同时出现时,可理解为当这些关键词出现时,有89.1%的置信度人为发生了硬件故障-内存故障。
解决方案补充从工程实践的角度出发,笔者提出以下几种可能的解决方案,以作为对上面方法步骤的补充:
1.故障分级:将故障划分等级,如一级故障(硬件故障-软件故障),二级故障为硬件故障下更具体的故障类型。当直接对所有二级故障做分类效果不理想时,可先考虑对一级故障做分类,再对二级故障做分类,实现故障分级的效果。
2.数据不平衡:即不同类别的故障工单在数量级上不一致,数据量上相差较大,使得分类模型偏向于数量多的故障。考虑到故障工单数据不平衡的问题,可考虑将数目少的归总为一类——其他类。示例如下,九分类问题可被转化为四分类问题。但是,在工单数量严重不平衡而且故障类别多的情况下,这种归总少类样本为其他类的方法,使得模型分类效果具有较大的随机性。
3.多字特征词:原理即将文本内容按字节流进行大小为N的滑动窗口操作,形成长度为N的字节片段序列,以自动产生多字特征词。相比于分开存在,几个单词的连续出现可能会有产生不一样的意义,对分类产生影响。
4.布尔权重:CPU发生故障时,CPU多核故障和单核故障属于同一类,但多核故障会记录每一个核的情况,导致某些关键词或者格式重复出现,使得模型对于两者的相似性降低。此时,可考虑使用布尔权重代替tf-idf进行文本向量化。
后续由于文本分类涵盖的内容较多,本文尽可能从简出发,阐述母机日志分析的大体流程,以及工程实践上的解决方案,以供交流。对于文本分类特征选择,模型参数调优和数据不平衡的更为详细的解决方法,笔者将在后续跟进。
以上内容基于roganhuang(黄荣庚) 在实习期间工作的总结。感谢运营开发组的小伙伴们的帮助,感谢学长@simbazhou,导师@lelandwu和学姐@mengnizhang给予的指导和帮助。
笔者不才。如有错误,欢迎指正!
参考链接1.https://blog.csdn.net/zrc199021/article/details/53728499
2.https://blog.csdn.net/sangyongjia/article/details/52440063
3.
4.https://blog.csdn.net/lxg0807/article/details/52776183?fps=1&locationNum=10
5.https://blog.csdn.net/wangongxi/article/details/51591031
6.https://blog.csdn.net/wangongxi/article/details/51591031
问答
机器学习入门需要哪些数学基础?
相关阅读
基于多维数据频繁项挖掘的母机隐患排查
再也不用担心网吧开黑队友听不清了!
自己动手打造前端性能监控系统
【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识