Dernière couche d'optimisation appliquée après toutes les passes principales.
Condition : entrance_hall, conf ≤ 0.95, ≥ 4 portes, tous voisins ∈ {bedroom, bathroom, toilet}
→ corridor (conf 0.85)
Logique : si un « hall d'entrée » ne donne que sur des chambres et sanitaires, c'est un couloir distributif, pas l'entrée de l'appartement.
Version : v8.1
Condition : toilet, conf < 1.0, connected ≥ 2
→ corridor (conf 0.75)
Logique : un WC n'a jamais 2+ connexions. S'il en a, c'est un petit espace de circulation mal classé.
Version : v8.1
Condition : storage, conf < 1.0, portes ≥ 4
→ corridor (conf 0.70)
Logique : un placard a 1 porte. 4+ portes = espace de distribution.
Version : v8.1
Au lieu de comparer l'appartement entier (Passe 0.5), on compare le voisinage immédiat d'une pièce.
Condition : entrance_hall, conf ≤ 0.95, WL local hash ∈ 32 hashes corridor purs (features W, A, depth=2)
→ corridor (conf 0.82)
Principe : les 32 hashes ont été extraits de P1+P2 et correspondent à des patterns de voisinage qui sont toujours des corridors (0% ambiguïté).
Version : v8.1 · Axe C
Condition : bedroom ou living_room, conf < 1.0, WL local hash discrimine (70 bedroom, 33 living)
→ swap vers le type du hash (conf 0.78)
Principe : certains patterns de voisinage sont fortement corrélés au type réel. Ex : un « séjour » qui a le hash d'une chambre est reclassé.
Version : v8.1 · Axe C
Condition : toilet leaf → entrance_hall, l'appartement a déjà un toilet ET pas de laundry
→ laundry (conf 0.70)
Version : v8.1
Condition : storage ≤ 3.5m² + fenêtre, appartement sans toilet, ≥ 3 pièces
→ toilet (conf 0.65)
Version : v8.1
Condition : corridor, conf < 1.0, sans fenêtre, area < 15, ≥ 5 types voisins distincts
→ entrance_hall (conf 0.78)
Logique : un corridor qui voit 5+ types différents de pièces est probablement l'entrée — le point de distribution principal.
Version : v8.1
Condition : corridor, conf < 1.0, total_conn < 2
→ bedroom / storage / entrance (par taille) (conf 0.55)
Logique : un corridor avec < 2 connexions n'est pas un couloir — il ne relie rien.
Version : v5.x
Condition : side=ext, pas déjà classé balcony/terrace/garden
→ balcony/terrace/garden (conf 0.70)
Version : v6.1
Condition : side ≠ int, 0 portes, N00, area ≥ 15, sep_ratio ≥ 0.50
→ garden (conf 0.65)
Logique : grand espace au RDC sans porte et avec beaucoup de séparateurs = jardin non détecté par R1.
Version : v6.1