I would like to find a similarity function $f$ between two values (each value is continuous and is bounded by $[0,1]$) that would have the following properties:

$$ f(1, 1) = 0.5 $$

$$ f(0.5, 0.5) =0.25 $$

$$ f(1, 0) = 1 $$

$$ f(0, 1) = 1 $$

$$ f(0, 0) = 0$$

Is there such a function in math? If not how could I design it?

  • $\begingroup$ I took the liberty of editing your question. Please take a look and roll back if I misunderstood. $\endgroup$ Jun 8 '16 at 9:49
  • 2
    $\begingroup$ If you want a similarity function, do you require that $f(a,b)=f(b,a)$ and that $f\geq 0$? Possibly also that $f(a,b)>0$ if $a\neq b$? $\endgroup$ Jun 8 '16 at 9:50
  • $\begingroup$ I don't strickly require metric properties you mentioned. But this would be desirable to have them. $\endgroup$
    – fractile
    Jun 8 '16 at 9:52

The function

$$ f\colon [0,1]\times[0,1]\to[0,1], \quad(x,y)\mapsto \frac{1}{4}x+\frac{1}{4}y+\frac{3}{4}(x-y)^2 $$

does what you want. Plus, it's positive, symmetric and definite ($x\neq y$ implies that $f(x,y)>0$).

Neither it nor its root is linearly homogeneous like a norm-derived distance function, though ($f(\lambda x, \lambda y)\neq\lambda f(x,y)$) - but that does not seem to possible anyway given your requirements.

perspective plot

I found it by estimating a linear model based on your input data, with covariates $x$, $y$ and $(x-y)^2$:

foo <- data.frame(a=c(1,.5,1,0,0),b=c(1,.5,0,1,0),y=c(.5,.25,1,1,0))
model <- lm(y~a*b+I((a-b)^2),foo)

xx <- yy <- seq(0,1,.01)
  • $\begingroup$ I guess now I can also try to specify more data points and make the function more precise, right? $\endgroup$
    – fractile
    Jun 8 '16 at 10:05
  • $\begingroup$ Yes indeed. Then it likely won't fit so nicely at the boundaries any more, though. $\endgroup$ Jun 8 '16 at 10:12
  • $\begingroup$ Very clever solution. How did you hit upon the specific covariates you used, symmetry? $\endgroup$ Jun 8 '16 at 16:32
  • 1
    $\begingroup$ @MatthewDrury: yes. As a matter of fact, after thinking about it, I'd rather use $(x+y)^2$ (instead of $x$ and $y$) and $(x-y)^2$, to enforce symmetry even with different input data. I don't like (dis)similarities that are not symmetric. $\endgroup$ Jun 8 '16 at 18:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.