尝试应用 embedding 进行 SVC 的一些探索
要解决的问题
市场整机更换,从更换到返厂拆检确认问题原因,平均历时2个多月,重大问题不能早预警、早分析、早解决。
解决思路
整机更换时,维修服务人员会填写维修过程信息,包括故障现象、可能原因、维修方案、协调内容、费用明细等,在数据库中保存在一个字段里。与此同时,返厂拆检确认的原因分类,也已保存至数据库中。通过建立维修过程信息和拆检原因分类的模型,对未拆检的更换原因进行预测,提升响应速度。
数据管道
graph LR
subgraph 数据抽取与转换
direction LR
a((市场换机数据)) -.-> e[LLM关键信息提取] -.-> c[数据抽取与处理]
a --> c
b((拆检数据)) --> c
c --> d((分析用结果表))
end
subgraph 模型训练
direction LR
d --> f[文本向量化]
f -- X --> g[模型训练]
d -- y --> g
end
subgraph 结果应用与存储
direction LR
g --> h((结果存储))
end
模型规划及测试
-
原始文本处理: 选项一:直接使用原始信息;
选项二:从原始信息提取有效信息。使用deepseek-r1,通过结构化提示词,提取故障现象、原因分析、处理措施、责任归属,以json形式返回。 -
文本向量化: 选项一:统计模型。jieba分词,使用scikit-learn TfIdfVectorizer;
选项二:语义模型。使用bge-large-zh-v1.5。 -
分类模型: 选项一:使用scikit-learn svm.SVC; 选项二:使用lightgbm LGBMClassifier。
-
测试及选择:
| 序号 | 方案 | 参数设置 | 准确度 |
|---|---|---|---|
| 1 | 原始信息 + TfIdfVectorizer + SVC | TfIdfVectorizer max_features=1000, SVC kernel=’linear’ | 65% |
| 2 | 抽取信息 + TfIdfVectorizer + SVC | deepseek-r1 temperature=0.7, TfIdfVectorizer max_features=1000, SVC kernel=’linear’ | 65% |
| 3 | 抽取信息 + TfIdfVectorizer + LGBMClassifier | deepseek-r1 temperature=0.7, TfIdfVectorizer max_features=1000 | 18% |
| 4 | 抽取信息+ bge-large-zh-v1.5 + LGBMClassifier | deepseek-r1 temperature=0.7 | 16% |
基于成本和效率考量,选择方案1。
模型表现差异原因分析
业务识别:原因预测是对维修过程信息进行符号处理,需要精确区分。
模型表现差异的原因:
- TF-IDF与bge-large-zh-v1.5向量化的差异:
- TF-IDF:生成高维、稀疏、正交向量,符号区分度高;
- bge-large-zh-v1.5:高维、稠密、旋转向量,近似语义区分度低。
- SVC与LightGBM的差异:
- SVC:几何,基于支持向量,寻找空间中的最佳分割面,适合小样本,适用于高维、稀疏、同质化特征;
- LightGBM:逻辑,基于树,通过一系列If-Then规则的组合来逼近答案,样本越大越好。适用于语义解耦、稠密的结构化特征(表格数据)。
- 降低deepseek-r1 temperature=0.3后,使用TF-IDF + SVC,模型准确度反而下降10%左右,看来模型抽取损失了一些信息。