Summasymbolen och index
Kunna läsa och skriva uttryck med Σ och dubbla index — notationen bakom nästan alla ML-formler.
Förkunskaper
Intuition
Σ (stora sigma) betyder bara «lägg ihop». Allt runt omkring säger vad som ska läggas ihop och hur många gånger.
| Del | Betyder |
|---|---|
| räknaren — namnet på det som räknas upp | |
| var den börjar | |
| var den slutar (inklusive) | |
| vad som läggs ihop för varje |
Σ är en for-loop. Det är hela hemligheten:
total = 0
for i in range(1, 5): # 1 till och med 4
total += i ** 2
När du ser en formel med Σ i en artikel — läs den som en loop, så blir den genast mindre skrämmande.
Formellt
Vanliga varianter du kommer att stöta på:
| Notation | Betyder |
|---|---|
| summera till | |
| summera över alla som är underförstådda | |
| summera över alla element i mängden | |
| alla par utom där | |
| samma sak fast multiplicera (stora pi) |
Räkneregler som används hela tiden:
En konstant som inte beror på räknaren kan brytas ut. En konstant inuti summan blir multiplicerad med antalet termer: .
Dubbla index. En matris summeras över rader och kolumner:
Den inre summan körs klart för varje värde på den yttre — precis som nästlade loopar. Är gränserna oberoende av varandra får ordningen bytas fritt.
Tre formler du känner igen om du läser ML:
| Formel | Vad den gör |
|---|---|
| medelvärdet | |
| medelkvadratfelet | |
| skalärprodukten |
Alla tre är «lägg ihop något för varje datapunkt och dela med antalet». När du väl sett det är notationen inte längre i vägen.
Kod
# Σ och for-loop är samma sak
summa = 0
for i in range(1, 5):
summa += i ** 2
print(summa) # 30
print(sum(i ** 2 for i in range(1, 5))) # 30 — samma sak, kortare
# Medelvärde: (1/n) Σ x_i
x = [3, 7, 7, 2, 11]
print(sum(x) / len(x)) # 6.0
# Skalärprodukt: Σ a_i · b_i
a, b = [1, 2, 3], [4, 5, 6]
print(sum(ai * bi for ai, bi in zip(a, b))) # 32
# Dubbla index: ΣΣ a_ij — nästlade loopar
A = [[1, 2, 3],
[4, 5, 6]]
print(sum(A[i][j] for i in range(2) for j in range(3))) # 21
# Ordningen spelar ingen roll när gränserna är oberoende
print(sum(sum(rad) for rad in A)) # 21 — rad för rad
print(sum(sum(A[i][j] for i in range(2)) for j in range(3))) # 21 — kolumn för kolumn
# MSE — den formel du kommer att se allra oftast
y = [3.0, 5.0, 2.0, 8.0]
y_hatt = [2.5, 5.5, 2.0, 7.0]
mse = sum((yi - hi) ** 2 for yi, hi in zip(y, y_hatt)) / len(y)
print(round(mse, 4)) # 0.375
Behärskning innebär
- Läser och skriver summor med Σ
- Hanterar dubbla index och byter ordning
- Översätter mellan Σ-notation och en loop
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Matteboken (Mattecentrum) — fri läsning, ideell förening
- Khan Academy — matematik — CC BY-NC-SA 3.0
- Wikipedia — Summation (CC BY-SA 4.0) — CC BY-SA 4.0