Mysql Abfrage für logarithmische Alterung

8

Ich möchte einen "logarithmischen", auf Alterung basierenden Score-Decay implementieren, und ich versuche, die SUM / LOG-Kombination herauszufinden. Hier haben Sie eine vereinfachte Version der aktuellen Abfrage:

%Vor%

Ich mache gerade SELECT 'SUM (1) als total_score', aber ich möchte die Abfrage modifizieren, um das Datum / Alter der Wahl zu berücksichtigen; wo eine Stimme von heute 1, eine Stimme von vor 15 Tagen eine Gewichtung nahe 0,8 und eine Stimme von vor 30 Tagen nahe 0 hat. Ich speichere das Datumsfeld in der Stimmen-Tabelle (vote_date) als unix_timestamp.

Ich mache mir nicht wirklich Sorgen um die WHERE-Klasse; Das ist ziemlich einfach. Was ich versuche herauszufinden, ist der logarithmische Alterungsteil.

    
user1345178 11.10.2012, 22:46
quelle

3 Antworten

2

Ich denke, es gibt zwei Teile zu Ihrer Antwort. Zuerst die Gewichtungsfunktion und dann die SQL-Implementierung.

Wegweisende Funktion:

Gemäß Ihrer Grafik möchten Sie nicht, dass ein logarithmisches Gewicht eher parabolisch ist.

Von diesem müssen Sie lösen

Xc = y

wo

%Vor%

und

%Vor%

Sie erhalten c = X ^ (- 1) y oder in Matlab

%Vor%

Jetzt haben Sie die entsprechenden Werte der quadratischen Funktion, die Sie abgebildet haben; nämlich y = ax ^ 2 + bx + c mit (a, b, c) = (-. 0013, .0073, .9941).

SQL-Teil:

Sie sollten auswählen, dass die Anweisung wie folgt aussehen soll (vorausgesetzt, dass die Spalte von Interesse "Alter" genannt wird)

%Vor%

Hoffe es hilft

Prost

Hier ist der komplette Matlab Code (auch um die Lösung zu überprüfen)

%Vor%

    
John 07.11.2012 14:51
quelle
0

Angenommen, Sie haben eine Funktion WEIGHT(age) , die das Gewicht einer Abstimmung angibt, die age Tage alt ist.

Dann wäre Ihre Abfrage

%Vor%

Ich fürchte, ich weiß nicht genau, welche Funktion Sie für WEIGHT(age) haben wollen. Aber Sie tun, und Sie können es ausarbeiten.

    
O. Jones 12.10.2012 00:31
quelle
0

Ich habe den SQL-Teil nicht gemacht, aber ich habe eine Funktion gefunden, die den Verfall, nach dem Sie suchen, mathematisch mindestens

liefert %Vor%

oder in Ihrem Fall

%Vor%

Ich hoffe, es kann helfen!

    
Hank 12.10.2012 00:42
quelle

Tags und Links