Skip to content

[Lane 5 · docs] Precision/Recall/F1 — doc partials (math / intuition / examples / references) #1234

Description

@michalharakal

Sub-issue of #1222 (Precision, Recall and F1Score metrics).

Lane: 5 · Docs / DARC
Skill needed: AsciiDoc and technical writing; enough ML background to explain precision vs. recall. No Kotlin beyond reading a 30-line class.
Size: s (~2–3 h for all three)
Blocked by: nothing for the math / intuition / references tags (start now); the examples tag needs #1229 so the example actually runs.

What to do

  1. Write three partials, one per metric, following the tag structure of
    docs/modules/ROOT/partials/ops/tensorops/matmul.adoc:
    • docs/modules/ROOT/partials/ops/metrics/precision.adoc
    • docs/modules/ROOT/partials/ops/metrics/recall.adoc
    • docs/modules/ROOT/partials/ops/metrics/f1score.adoc
      Each with non-placeholder // tag::math[], // tag::intuition[], // tag::examples[],
      // tag::references[] blocks. Use stem:[…] / [stem] (LaTeX; the playbook sets
      stem: latexmath) for the formulas. The math block must state the per-class
      definition, what macro vs. micro averaging does, and the zero-division convention
      adopted in [Lane 1 · numerics] Precision/Recall/F1 — averaging-mode and zero-division conventions #1224.
  2. Metrics are not TensorOps functions, so the operator-doc generator will not pick
    these partials up automatically. Surface them by adding a "Precision, recall and F1"
    subsection to docs/modules/ROOT/pages/how-to/metrics-and-perf-testing.adoc that
    include::partial$ops/metrics/f1score.adoc[tag=intuition] (and the others by tag).
  3. The examples block must be real code that compiles against develop after [Lane 2 · kotlin-core] F1Score metric #1229
    ideally a tagged snippet in skainet-docs-samples included via include::example$…,
    like the existing TrainingDemo.kt accuracy example on that page; a plain
    [source,kotlin] block is acceptable if you say why.
  4. Build the site locally (see Contributing → Build from source / the docs.yml
    workflow) and check the math renders.

Acceptance

Notes

Intuition to convey: precision answers "of what I predicted positive, how much was right";
recall answers "of what was actually positive, how much did I catch"; F1 is their harmonic
mean, so it punishes a classifier that is high on one only because the other is near zero —
which is exactly where raw accuracy stays silent (predict the majority class everywhere:
high accuracy, near-zero minority recall). Also spell out that macro F1 is the mean of
per-class F1s, not the F1 of the macro means.

References to start from: sklearn precision_recall_fscore_support, torchmetrics
F1Score, and https://en.wikipedia.org/wiki/F-score .

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation (DARC: D)good first issueGood for newcomers; no prior SKaiNET codebase knowledge assumedsize:sA few hoursskill:docsAsciiDoc / technical writingsub-issueSub-issue of a tracking issue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions