[Gllug] Algorithm question for your Friday morning
salsaman
salsaman at xs4all.nl
Fri Nov 17 14:01:51 UTC 2006
Adrian McMenamin wrote:
>Inspired by an article in the latest edition of Linux Journal (NB you
>really should subscribe - exchange rate makes it about 50% cheaper than
>buying in on the news stand) on top (1)
>
>I have some code that currently takes an arithmetic mean of people's
>preferences/votes. But it occurs to me that it would be better to replace
>that with some sort of algorithm that weights historical votes less than
>more recent votes.
>
>(I believe top(1) uses an exponential decay function)
>
>Is there a simple way to do this when the only record I currently have of
>historic votes is the arithmetic mean?
>
>
>
The algorithm is not difficult. Basically you currently calculate the
mean value as:
(a0+a1+a2+a3+a4+...an) / n = mean
What you want to do is to weight current votes more than past votes.
You can do this on a daily basis for example.
From the equation above:
mean * n = (a0+a1+a2+...an)
Simply halving n will give today's votes twice as much effect as
yesterday's votes, four times as much as the day before, etc.
Of course, halving n might be too much, you could use some other factor,
e.g.
1/sqrt(2) will give today's votes twice as much effect as those from 2
days ago and 4 times as much as from 4 days ago. Etc.
Gabriel.
-------------- next part --------------
--
Gllug mailing list - Gllug at gllug.org.uk
http://lists.gllug.org.uk/mailman/listinfo/gllug
More information about the GLLUG
mailing list