公制为"足够相似"对象

时间:2016-09-19 05:52:29

标签: machine-learning signals metric

假设我们有两个信号空间S1和S2,每个信号空间包含数百甚至数千个信号。 S1是由给定系统(飞机,汽车等)发送或接收的所有信号,S2是由系统内的子系统的软件模块发送或接收的所有信号。每个信号都有一组特定的数十个属性,如信号名称,周期时间,电压等。

现在我想检查S1中的每个信号是否在S2中至少有一个表示,这意味着S1中信号的所有属性都等于S2中信号的所有属性。这听起来很容易,因为人们可以遍历信号及其属性,并检查某处是否存在等效信号。但事实证明,在两侧(S1和S2信号)可能存在错误的规格,因此不能识别属于一起的信号对。

示例:

K1 = {姓名:= CAN_1234_UHV;电压:= 0.8 mV;周期= 100毫秒}

D1 = {姓名:= CAN_1234_UH;电压:= 0.8mV;周期= 100毫秒}

尽管存在一些拼写错误,人类很容易看出这两个信号可能很好地融合在一起。

所以我所做的是设计一种算法来计算每个属性的字符串的距离度量,将相似度映射到某个可比性,即该特定属性等于另一个信号的相同属性,计算平均值并进行分类如果这个可能性达到一定的阈值,则信号相等。

这产生了可怕的结果,因为两个信号可以归类为相等,因为某些属性具有在信号空间中非常常见的值。因此,下一步是对这些属性进行加权(信号名称比周期时间更适合识别信号)。

这整个过程对我来说似乎很随意,因为我不太了解产生好结果的概率和权重。所以我感觉这可以通过机器学习算法来解决,因为它可以从训练数据中导出概率和权重。

因此,总而言之,使用机器学习算法将信号识别为足够相似的信号是否可行?这样他们就可以归类为平等。我知道这个问题不能得到普遍的回答,我对#34;肠道感觉更感兴趣"并且"向正确的方向推进"。

提前致谢

1 个答案:

答案 0 :(得分:2)

解决方案1 ​​ - 您可以使用Apache Solr。

  • 您可以在Apache Solr中保存( index )所有信号,其中信号的每个属性都将存储为Solr的字段。

    Example:
    K1 = {Name:= CAN_1234_UHV; Voltage:= 0.8 mV; Cycle=100ms}
    D1 = {Name:= CAN_1234_UH; Voltage:= 0.8mV; Cycle=100 ms}
    
    K1 and D1 is a document in Solr. Name, Voltage, Cycle will be Solr's Field.
    
  • 然后,您可以使用Solr的 MoreLikeThis 功能来识别类似的信号。

  

这产生了可怕的结果,因为两个信号可以归类为相等,因为某些属性具有在信号空间中非常常见的值。因此,下一步是对这些属性进行加权(信号名称比周期时间更适合识别信号)。

对于此检查下面的 mlt.qf

Solr为 MoreLikeThis 提供了许多常用参数,可根据您的需要进行调整。

  • mlt.fl 指定用于相似性的字段。如果可能的话,这些 应该存储termVectors。
  • mlt.mintf 指定最短期限 频率,低于该频率的频率将被忽略 来源文件。
  • mlt.mindf 指定最低文档频率, 单词将被忽略的频率,不会出现在 至少这么多文件。
  • mlt.maxdf 指定最大凭证 频率,发生忽略字的频率 超过这么多文件。
  • mlt.minwl 设置最小字数 长度低于哪些词语将被忽略。
  • mlt.maxwl 设置最大值 字长将高于哪个字会被忽略。
  • mlt.maxqt 设置 将包含在任何生成的查询术语的最大数量 查询。
  • mlt.maxntp 设置每个要解析的最大令牌数 未与TermVector支持一起存储的示例文档字段。
  • mlt.boost 指定查询是否会被有趣的提升 术语相关性。它可以是“true”或“false”。
  • mlt.qf 使用与DisMaxRequestHandler使用的格式相同的格式查询字段及其提升。这些字段也必须在mlt.fl。中指定。

解决方案2 - 编写自己的解决方案。

您可以使用这些算法为此问题编写自定义解决方案。

  • Levenshtein Distance - 非正式地说,两个单词之间的Levenshtein距离是将一个单词改为另一个单词所需的最小单字符编辑数(即插入,删除或替换)。
  • Hamming Distance - 在信息论中,两个相等长度的字符串之间的汉明距离是相应符号不同的位置数。
  • Smith–Waterman-algorithm - Smith-Waterman算法执行局部序列比对;也就是说,用于确定两个串或核苷酸或蛋白质序列之间的相似区域。 Smith-Waterman算法不是查看总序列,而是比较所有可能长度的段,并优化相似性度量。
  • Sørensen–Dice Coefficient - 是用于比较两个样本的相似性的统计数据