# Multidimensional Group Recommendations in the Health Domain
## 3 Single User Recommendations
### User Similarities
#### 3.2.2 Similarity Based on Health Information  
It is quite common in health-related informatics to consider people as similar if they have similar health problems, which in turn leads to similar consumption of health documents. In this work, we use the International Statistical Classification of Diseases and Related Health Problems (ICD10), which is a standard medical classification list maintained by the World Health Organization, to keep track of and recognize similarities between health problems and users. We describe ICD10 as a tree, with health problems as its nodes. We use the 2017 version of ICD10, which includes four levels in tree representation, plus one for the root level. Because of the structure of the taxonomy (acyclic), there is only one path that connects two individual nodes. Another characteristic of the structure is that sibling nodes that appear at lower levels have greater similarity than siblings in the upper levels. Table 1 presents an example of four pairs of sibling nodes from the ICD10 ontology, with their code id, their description, and the level they belong to. From their descriptions, we can identify that the siblings that reside in the forth level share a far greater similarity than the ones in the first level. Because of this discrepancy of the similarity of the health problems at different levels, we assign different weights to nodes taking into account their level. These weights will allow us manage differently sibling nodes at various levels. Intuitively, the goal is to have sibling nodes in the higher levels with greater similarity than those in the lower levels. **Definition 1** (Weight). : _Let \(A\) be a node in the ontology tree. Then,_  
\[weight(A)=w*2^{maxLevel-level(A)} \tag{2}\]  
_where \(w\) is a constant, \(maxLevel\) is the maximum level of the tree, and \(level(A)\) is a function that returns the level of each node._  
Moreover, assume that \(anc(A)\) is the direct ancestor of \(A\). Intuitively, we need a formula that not only takes into account the distance between two nodes, but also the level that those nodes belong. To achieve that, we make use of the notion of the lowest common ancestor (LCA). **Definition 2** (Lca). : _Let \(T\) be a tree. The lowest common ancestor LCA(A,B) of two nodes \(A\) and \(B\) in \(T\) is the lowest node in \(T\) that has both \(A\) and \(B\) as descendants, where each node can be a descendant of itself._  
Then, for counting the distance between A and B, we calculate their distance from \(LCA(A,B)\). For doing so, we identify first the path that connects A (and B, respectively) with \(LCA(A,B)\). \begin{table}
\begin{tabular}{c c c} \hline \hline
**Code ID** & **Description** & **Level** \\ \hline S27 & Injury of other and unspecified intrathoracic organs & 1 \\ S29 & Other and unspecified injuries of thorax & 1 \\ S27.3 & Other injury of bronchus, unilateral & 2 \\ S27.4 & Injury of bronchus & 2 \\ S27.43 & Laceration of bronchus & 3 \\ S27.49 & Other injury of bronchus & 3 \\ S27.491 & Other injury of bronchus, unilateral & 4 \\ S27.492 & Other injury of bronchus, bilateral & 4 \\ \hline \hline \end{tabular}
\end{table} 
Table 1: An instance of the ICD10 ontology. **Definition 3** (Path). : _Let \(T\) be a tree, and \(A\) and \(B\) two nodes in \(T\), with \(\mathit{LCA}(A,B)=C\). \(\mathit{path}(A,C)\) returns a set of nodes including \(A\), its direct ancestor \(\mathit{anc}(A)\), its direct ancestor \(\mathit{anc}(\mathit{anc}(A))\), and so on, until we reach \(C\), without including \(C\) in the set._  
The distance between A and C is computed as the summation the weight of each node in the path:  
\[\mathit{dist}(A,C)=\sum_{n\in\mathit{path}(A,C)}\mathit{weight}(n) \tag{3}\]  
Overall, for computing the similarity between two nodes A and B, we use the following formula. **Definition 4** (simN). : _Let \(T\) be a tree, and \(A\) and \(B\) two nodes in \(T\), with \(\mathit{LCA}(A,B)=C\).