Privacy enhancing straight average algorithm: Difference between revisions
More actions
No edit summary |
No edit summary |
||
Line 5: | Line 5: | ||
The new algorithm only communicates the sum of the probabilities at each node along with the population that the sum represents. Thus every time a node performs an average of its own and its children’s probabilities, it records the sum of the probabilities (numerator) in the average calculation and the population (denominator). It then sends this sum and population on as <code>intermediate_results</code> to its parent node. The parent can now compute its own average by combining these results with its own probability and its other children’s numerator sum and population information. |
The new algorithm only communicates the sum of the probabilities at each node along with the population that the sum represents. Thus every time a node performs an average of its own and its children’s probabilities, it records the sum of the probabilities (numerator) in the average calculation and the population (denominator). It then sends this sum and population on as <code>intermediate_results</code> to its parent node. The parent can now compute its own average by combining these results with its own probability and its other children’s numerator sum and population information. |
||
A simple example shows how this works. Let’s start with the [[ |
A simple example shows how this works. Let’s start with the [[A_simple_averaging_technique_to_supplement_the_Bayes_equation|tree diagram we used earlier for the averaging algorithm]] and focus on just Nodes 1,3,4. |
||
<kroki lang="graphviz"> |
<kroki lang="graphviz"> |
||
Line 49: | Line 49: | ||
output012 = [0.6157142857142858, 0.38428571428571423] |
output012 = [0.6157142857142858, 0.38428571428571423] |
||
inter_results012 = [[4.3100000000000005, 2.6899999999999995], 7.0]</pre> |
inter_results012 = [[4.3100000000000005, 2.6899999999999995], 7.0]</pre> |
||
Here the <code>inter_results134</code> show the same result as calculated above. The 1.23 in the results is simply the same calculation for the 2nd probability in the [[predicate]] distribution (1-P). The <code>output012</code> is the same overall result as shown [[ |
Here the <code>inter_results134</code> show the same result as calculated above. The 1.23 in the results is simply the same calculation for the 2nd probability in the [[predicate]] distribution (1-P). The <code>output012</code> is the same overall result as shown [[A_simple_averaging_technique_to_supplement_the_Bayes_equation|previously]]. |
||
The functions associated with this algorithm have the suffix <code>_privacy</code>. Since they are relatively simple, and the algorithm has been discussed before, we will skip a detailed look at how they work. Inspection of the [https://gitlab.syncad.com/peerverity/trust-model-playground/-/snippets/148 snippet ]should reveal what it is doing. This algorithm required no new changes to the <code>algorithms.py</code> interface. |
The functions associated with this algorithm have the suffix <code>_privacy</code>. Since they are relatively simple, and the algorithm has been discussed before, we will skip a detailed look at how they work. Inspection of the [https://gitlab.syncad.com/peerverity/trust-model-playground/-/snippets/148 snippet ]should reveal what it is doing. This algorithm required no new changes to the <code>algorithms.py</code> interface. |
Latest revision as of 17:54, 26 September 2024
Main article: A simple averaging technique to supplement the Bayes equation
The straight average algorithm discussed previously was modified to obscure trust information as it works up the tree, thus enhancing privacy. The previous algorithm communicated all trust-modified probabilities up to the head node, where the average would be calculated. This could potentially lead to reverse engineering the trust information associated with those probabilities.
The new algorithm only communicates the sum of the probabilities at each node along with the population that the sum represents. Thus every time a node performs an average of its own and its children’s probabilities, it records the sum of the probabilities (numerator) in the average calculation and the population (denominator). It then sends this sum and population on as intermediate_results
to its parent node. The parent can now compute its own average by combining these results with its own probability and its other children’s numerator sum and population information.
A simple example shows how this works. Let’s start with the tree diagram we used earlier for the averaging algorithm and focus on just Nodes 1,3,4.
First the trust modified probabilities are found, noting that no modification is needed for Node 1 because it trusts itself:
The average is clearly:
The intermediate_results
information passed on to Node 0 is then [1.77, 3], the numerator and denominator of the average. In the attached snippet it is called straight_average_intermediate_privacy
. The snippet will run an example, which is just a repeat of the previous (less private) averaging algorithm, to verify that it is giving the correct result:
straight_average_intermediate_privacy -- TEST1 output134 = [0.59, 0.41] inter_results134 = [[1.7699999999999998, 1.23], 3] output256 = [0.71, 0.29] inter_results256 = [[2.13, 0.8699999999999999], 3] output012 = [0.6157142857142858, 0.38428571428571423] inter_results012 = [[4.3100000000000005, 2.6899999999999995], 7.0]
Here the inter_results134
show the same result as calculated above. The 1.23 in the results is simply the same calculation for the 2nd probability in the predicate distribution (1-P). The output012
is the same overall result as shown previously.
The functions associated with this algorithm have the suffix _privacy
. Since they are relatively simple, and the algorithm has been discussed before, we will skip a detailed look at how they work. Inspection of the snippet should reveal what it is doing. This algorithm required no new changes to the algorithms.py
interface.