{"id":2382,"date":"2015-06-12T09:31:31","date_gmt":"2015-06-12T09:31:31","guid":{"rendered":"http:\/\/www.circadian-capital.co.uk\/?p=2382"},"modified":"2015-06-17T15:56:10","modified_gmt":"2015-06-17T15:56:10","slug":"privacy-algorithm-have-you-cheated","status":"publish","type":"post","link":"https:\/\/circadian-capital.com\/privacy-algorithm-have-you-cheated\/","title":{"rendered":"Privacy Algorithm: have you cheated?"},"content":{"rendered":"

A short blog about a cute algorithm we came across whilst reading on Bayesian Methods, a theme we may develop here as we build upon our machine learning skills.<\/p>\n

We want to know the level of cheating in the population. I think it's safe to say that fewer cheats than reality - regardless of any assurances made by our intrepid interviewer - are going to 'fess up. <\/p>\n

One approach to get to truth might be to figure out this admission rate, but this - I think you'll agree - is fraught with complication and variation.<\/p>\n

Protect, don't assure<\/strong>
\nWhat about protecting anonymity (and embarrassment) instead of assuring it? The basic idea is to dilute the truth-telling cheat responses (our signal) with a whole load of noise (randomly created cheat-responses). That way the signaller is kept safe.<\/p>\n

I don't know who came up with this particular algorithm - and can claim no credit - but can at least point you to Cam Davidson Pilon. Cam references it in his excellent online book Probabilistic Programming and Bayesian Methods for Hackers\/<\/a><\/p>\n

The humble pound coin<\/strong>
\nWithout letting the interviewer see the results, flip...
\n\u00a0\u00a0\u00a0 Heads:<\/strong> tell the truth (whatever it might be!)
\n    Go away happy and safe in the knowledge of anonymity (see below).<\/i><\/p>\n

\u00a0\u00a0\u00a0 Tails:<\/strong> throw again
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 heads:<\/strong> say you're a cheater;<\/i>
\n \u00a0 \u00a0\u00a0 \u00a0\u00a0 tails:<\/strong> say you're not.<\/i><\/p>\n

Long story short, if we have 100 responses we know that this will be made up of two distinct populations: the one we care about, a 'true population' of 50 responses (with a cheat\/no-cheat mix); and mixed in with it a second, false population of 50 made up of 25cheat\/25no-cheats. Simply strike that false population out, so for example if the survey says 30 cheats \/ 100 population, we end up with a more considered view: 5 cheats in 50.<\/p>\n

Simples. Our cheating friends can answer in full knowledge that the interviewer has no idea if the response was truthful or if generated by a tails\/head coin toss. Even better, the truth-teller knows that the interviewer will likely be forgiving and presume that the response was coin-toss generated.<\/p>\n

The best about this game? Everyone knows the rules and no cheating's required!<\/p>\n

Bayesian Inference<\/strong>
\nWe can actually take the above idea and develop much further with Bayesian analysis, but that is for another day.<\/p>\n<\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"

A short blog about a cute algorithm we came across whilst reading on Bayesian Methods, a theme we may develop here as we build upon our machine learning skills. We want to know the level of cheating in the population. I think it’s safe to say that fewer cheats than reality – regardless of any […]<\/p>\n","protected":false},"author":2,"featured_media":2393,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[3],"tags":[],"jetpack_featured_media_url":"https:\/\/circadian-capital.com\/wp-content\/uploads\/2015\/06\/privacy.png","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9TEZs-Cq","_links":{"self":[{"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/posts\/2382"}],"collection":[{"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/comments?post=2382"}],"version-history":[{"count":10,"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/posts\/2382\/revisions"}],"predecessor-version":[{"id":2392,"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/posts\/2382\/revisions\/2392"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/media\/2393"}],"wp:attachment":[{"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/media?parent=2382"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/categories?post=2382"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/circadian-capital.com\/wp-json\/wp\/v2\/tags?post=2382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}