Curve-fitting

Uit De Vliegende Brigade
Versie door Jeroen Strompf (overleg | bijdragen) op 22 aug 2018 om 15:28
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen

Dit gaat over tweedegraads polynome functies, zoals je die krijgt als je in Google Ads of Amazon, winst als functie van bod uitzet: Een omgekeerde tweedegraads polynoom met ergens een optimum. Het betreft géén exponentiële functie.

Inleiding

  • Kleinste-kwdaratenmethode is bedoeld voor een lineaire functie, maar je kunt het generaliseren naar andere functies, zoals polynomen [1]
  • De tweede afgeleide van een kwadratische functie, is een constante. Dat kun je gebruiken om het soort functie te identificeren, en vermoedelijk ook voor een kleinste-kwadratenmethode [2]
  • Met twee datapunten kun je een lineaire functie defineren. Met drie datapunten kun je een kwadratische functie defineren
  • Een kwadratische functie heeft drie onbekenden. De meetdata kun je in een matrix stoppen ⇒ Oplossen als een stelsel van vergelijkingen - Dat werkt alleen niet voor stochastische data ⇒ Wel met een pseudo-inverse
  • Curve fitting met kwadratische modellen [3]
  • Standaardformule: ax^2 + bx + c Tav. winstfuncties, is c altijd 0: Bij een bod van 0 is de winst ook 0.

Voorbeeld CBlissMath

[4]

Datapunten:

(x,y)
-----
(1,7)
(2,2)
(3,1)
(4,3)

Bijbehorend stelsel van vergelijkingen:

 1a + 1b + c = 7
 4a + 2b + c = 2
 9a + 3b + c = 1
16a + 4b + c = 3 

In matrixalgebra:

Ax=y <=>

[  1 1 1    [a     [7
   4 2 1  *  b  =   2
   9 3 1     c]     1
  16 4 1]           3]

Oplossing:

x = A^(+)y    A^(+) = Penrose-Moore pseudo-inverse

  = [ 7/4
      -10,05
      15,25]

De pseudo-inverse heb ik hier berekend

Voorbeeld Amazon

Uit een Amazon-campagne haal ik drie datapunten:

  Bod      Winst
  ------   ------
* € 0,02 - € 4,30
* € 0,20 - € 5,70
* € 0,66 - € 3,60

In matrix-algebra:

|0,0004	0,2	1|		|a|		4,3
|0,04	0,2	1|	*	|b|	=	5,7
|0,4356	0,66	1|		|c|		3,6

Pseudo-inverse:

  -25.2525   25.2525    0.0000
   21.7172  -23.8911    2.1739
   -3.3333    4.7681   -0.4348

Berekening v=A^(+)*y heb ik hier gedaan:

   4.7418
   4.9121
   9.2352

Conclusies

  • Deze uitkomst klopt niet: Ik moet een parabool krijgen met een maximum, niet met een minimum - Jammer.
  • Wellicht dat het eerste datapunt (0,02, y) te extreem is om betrouwbaar te zijn.

Bronnen