我通过跨所有列相似性具有带有ID和数据整数数值从-5到5的列包括0比较多个数值列,以确定记录相似
╔════╦══════╦══════╦══════╦══════╗
║ ID ║ COL1 ║ COL2 ║ COL3 ║ COL4 ║
╠════╬══════╬══════╬══════╬══════╣
║ A ║ -5 ║ -2 ║ 0 ║ -2 ║
║ B ║ 0 ║ 1 ║ -1 ║ 3 ║
║ C ║ 1 ║ -2 ║ -3 ║ 1 ║
║ D ║ -1 ║ -1 ║ 5 ║ 0 ║
║ E ║ 2 ║ -3 ║ 1 ║ -2 ║
║ F ║ -3 ║ 1 ║ -2 ║ -1 ║
║ G ║ -4 ║ -1 ║ -1 ║ -3 ║
╚════╩══════╩══════╩══════╩══════╝
欲组ID的。 例如上面的ID A和G类似,因为它们在每列中的值非常相似。
╔════╦══════╦══════╦══════╦══════╗
║ ID ║ COL1 ║ COL2 ║ COL3 ║ COL4 ║
╠════╬══════╬══════╬══════╬══════╣
║ A ║ -5 ║ -2 ║ 0 ║ -2 ║
║ G ║ -4 ║ -1 ║ -1 ║ -3 ║
╚════╩══════╩══════╩══════╩══════╝
在另一方面A和B是不同的
╔════╦══════╦══════╦══════╦══════╗
║ ID ║ COL1 ║ COL2 ║ COL3 ║ COL4 ║
╠════╬══════╬══════╬══════╬══════╣
║ A ║ -5 ║ -2 ║ 0 ║ -2 ║
║ B ║ 0 ║ 1 ║ -1 ║ 3 ║
╚════╩══════╩══════╩══════╩══════╝
对于给定的ID对我正在考虑在每一列中计算的差值,然后将所述差异,以获得相似性得分(较大数字不太相似)。在这个时候它是我拥有的最好主意,但我更乐于接受更准确或有效的方法。要做到这一点(使用列中的值之差的绝对值)
要小心,要使用距离的绝对值,否则一些差异可能会相互抵消,例如:((5-0)+(0-5))。根据你的定义,这两者会有所不同,但一个天真的实现将标记它们是相同的。 – Sirko 2014-10-03 18:16:03
为什么不求和绝对差值:'score = ABS(5-0)+ ABS(0-5)+ ...' – Rimas 2014-10-03 18:33:03
这里的麻烦是什么决定了“相似”,如果每一个都是1是相似的? 2呢?如果4个中的3个是相同的,并且其中一个关闭了2,那么...因此,整个ROW和所有4列的比较......这里有太多的模糊逻辑来定义“相似” – xQbert 2014-10-03 19:08:25