Para construir un sistema de recomendación, también utilizo el coeficiente de correlación de Pearson. Esta es la definición:
$r(x, y)=\frac{\sum_{i=1}^n (x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^n (x_i-\bar{x})^2 \cdot \sum_{i=1}^n (y_i-\bar{y})^2}}$
$x$ y $y$ son parte de $\mathbb{R}$.
Ahora, para programar, es importante tener en cuenta todas las posibles situaciones. Por ejemplo, si el denominador es cero, tendrás que filtrarlo o lanzar una excepción.
Se me ocurrieron algunos argumentos, uno de ellos es que si todos los valores de $x_i$ y/o $y_i$ fueran iguales al promedio de $x$ y/o $y, entonces el denominador sería cero.
Pero ¿cómo puedo demostrar que el coeficiente es o bien no definido (denominador cero) o está entre -1 y 1? ¿Cuál es el mejor enfoque?