LaTex
Some checks failed
build_docker / essential (push) Successful in 1s
build_docker / build_easyocr_gpu (push) Has been cancelled
build_docker / build_easyocr (push) Has been cancelled
build_docker / build_doctr (push) Has been cancelled
build_docker / build_doctr_gpu (push) Has been cancelled
build_docker / build_raytune (push) Has been cancelled
build_docker / build_paddle_ocr_gpu (push) Has been cancelled
build_docker / build_paddle_ocr (push) Has been cancelled

This commit is contained in:
2026-02-04 21:10:42 +01:00
parent b91e31e173
commit c796e4cc7f
2 changed files with 20 additions and 21 deletions

View File

@@ -95,20 +95,19 @@ def convert_latex_formulas(text):
"""Convert LaTeX formulas to styled text for easy copy-paste into Word equation editor. """Convert LaTeX formulas to styled text for easy copy-paste into Word equation editor.
Word's equation editor accepts LaTeX directly, so we preserve the LaTeX code Word's equation editor accepts LaTeX directly, so we preserve the LaTeX code
in a visually distinct format that users can copy and paste. that users can copy and paste into Insert → Equation.
""" """
# Block formulas $$...$$ - center and style as equation placeholder # Block formulas $$...$$ - centered
def convert_block(match): def convert_block(match):
latex = match.group(1).strip() latex = match.group(1).strip()
# Style as centered, monospace text that's easy to identify and copy return f'<p class=MsoNormal style="text-align:center"><span lang=ES style="font-family:Cambria Math">{latex}</span></p>'
return f'<p class=MsoNormal style="text-align:center;background:#f5f5f5;padding:8pt;margin:6pt 40pt;font-family:Consolas;font-size:10pt"><span lang=ES>{latex}</span></p>'
text = re.sub(r'\$\$([^$]+)\$\$', convert_block, text) text = re.sub(r'\$\$([^$]+)\$\$', convert_block, text)
# Inline formulas $...$ - style as inline code # Inline formulas $...$ - inline with math font
def convert_inline(match): def convert_inline(match):
latex = match.group(1).strip() latex = match.group(1).strip()
return f'<span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">{latex}</span>' return f'<span style="font-family:Cambria Math">{latex}</span>'
text = re.sub(r'\$([^$]+)\$', convert_inline, text) text = re.sub(r'\$([^$]+)\$', convert_inline, text)
return text return text

View File

@@ -4673,11 +4673,11 @@ _Toc14106979"><span style="mso-bookmark:_Toc437515557"><span lang="ES" style="te
<p class="MsoNormal"><span lang="ES">La evaluación rigurosa de sistemas OCR requiere métricas estandarizadas que permitan comparaciones objetivas. Las métricas fundamentales se basan en la distancia de edición de Levenshtein.</span></p> <p class="MsoNormal"><span lang="ES">La evaluación rigurosa de sistemas OCR requiere métricas estandarizadas que permitan comparaciones objetivas. Las métricas fundamentales se basan en la distancia de edición de Levenshtein.</span></p>
<h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Distancia de Levenshtein</span></b></h4> <h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Distancia de Levenshtein</span></b></h4>
<p class="MsoNormal"><span lang="ES">La distancia de Levenshtein (Levenshtein, 1966) entre dos cadenas es el número mínimo de operaciones de edición (inserción, eliminación, sustitución) necesarias para transformar una cadena en otra. Formalmente, para dos cadenas <i>a</i> y <i>b</i>:</span></p> <p class="MsoNormal"><span lang="ES">La distancia de Levenshtein (Levenshtein, 1966) entre dos cadenas es el número mínimo de operaciones de edición (inserción, eliminación, sustitución) necesarias para transformar una cadena en otra. Formalmente, para dos cadenas <i>a</i> y <i>b</i>:</span></p>
<p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center;background:#f5f5f5;padding:8pt;margin:6pt 40pt;font-family:Consolas;font-size:10pt"><span lang="ES">d(a,b) = \min(\text{inserciones} + \text{eliminaciones} + \text{sustituciones})</span></p></span></p> <p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center"><span lang="ES" style="font-family:Cambria Math">d(a,b) = \min(\text{inserciones} + \text{eliminaciones} + \text{sustituciones})</span></p></span></p>
<p class="MsoNormal"><span lang="ES">Esta métrica es fundamental para calcular tanto CER como WER.</span></p> <p class="MsoNormal"><span lang="ES">Esta métrica es fundamental para calcular tanto CER como WER.</span></p>
<h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Character Error Rate (CER)</span></b></h4> <h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Character Error Rate (CER)</span></b></h4>
<p class="MsoNormal"><span lang="ES">El CER mide el error a nivel de carácter y se calcula como:</span></p> <p class="MsoNormal"><span lang="ES">El CER mide el error a nivel de carácter y se calcula como:</span></p>
<p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center;background:#f5f5f5;padding:8pt;margin:6pt 40pt;font-family:Consolas;font-size:10pt"><span lang="ES">CER = \frac{S + D + I}{N}</span></p></span></p> <p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center"><span lang="ES" style="font-family:Cambria Math">CER = \frac{S + D + I}{N}</span></p></span></p>
<p class="MsoNormal"><span lang="ES">Donde:</span></p> <p class="MsoNormal"><span lang="ES">Donde:</span></p>
<p class="MsoListParagraphCxSpFirst" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">S = número de sustituciones de caracteres</span></p> <p class="MsoListParagraphCxSpFirst" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">S = número de sustituciones de caracteres</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">D = número de eliminaciones de caracteres</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">D = número de eliminaciones de caracteres</span></p>
@@ -4686,7 +4686,7 @@ _Toc14106979"><span style="mso-bookmark:_Toc437515557"><span lang="ES" style="te
<p class="MsoNormal"><span lang="ES">Un CER bajo indica que el sistema comete pocos errores a nivel de carácter. Para aplicaciones críticas se requiere un nivel de error muy reducido, mientras que en tareas de búsqueda o archivo pueden aceptarse errores mayores.</span></p> <p class="MsoNormal"><span lang="ES">Un CER bajo indica que el sistema comete pocos errores a nivel de carácter. Para aplicaciones críticas se requiere un nivel de error muy reducido, mientras que en tareas de búsqueda o archivo pueden aceptarse errores mayores.</span></p>
<h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Word Error Rate (WER)</span></b></h4> <h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Word Error Rate (WER)</span></b></h4>
<p class="MsoNormal"><span lang="ES">El WER mide el error a nivel de palabra, utilizando la misma fórmula pero considerando palabras como unidades:</span></p> <p class="MsoNormal"><span lang="ES">El WER mide el error a nivel de palabra, utilizando la misma fórmula pero considerando palabras como unidades:</span></p>
<p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center;background:#f5f5f5;padding:8pt;margin:6pt 40pt;font-family:Consolas;font-size:10pt"><span lang="ES">WER = \frac{S_w + D_w + I_w}{N_w}</span></p></span></p> <p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center"><span lang="ES" style="font-family:Cambria Math">WER = \frac{S_w + D_w + I_w}{N_w}</span></p></span></p>
<p class="MsoNormal"><span lang="ES">El WER es generalmente mayor que el CER, ya que un solo error de carácter puede invalidar una palabra completa. Esta diferencia es relevante cuando se comparan sistemas que preservan caracteres pero pierden palabras completas.</span></p> <p class="MsoNormal"><span lang="ES">El WER es generalmente mayor que el CER, ya que un solo error de carácter puede invalidar una palabra completa. Esta diferencia es relevante cuando se comparan sistemas que preservan caracteres pero pierden palabras completas.</span></p>
<h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Otras Métricas Complementarias</span></b></h4> <h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Otras Métricas Complementarias</span></b></h4>
<p class="MsoNormal"><span lang="ES"><b>Precisión y Recall a nivel de palabra</b>: Útiles cuando se evalúa la capacidad del sistema para detectar palabras específicas.</span></p> <p class="MsoNormal"><span lang="ES"><b>Precisión y Recall a nivel de palabra</b>: Útiles cuando se evalúa la capacidad del sistema para detectar palabras específicas.</span></p>
@@ -4807,16 +4807,16 @@ _Toc14106979"><span style="mso-bookmark:_Toc437515557"><span lang="ES" style="te
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Parámetros de regularización (dropout, weight decay)</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Parámetros de regularización (dropout, weight decay)</span></p>
<p class="MsoListParagraphCxSpLast" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Umbrales de decisión en tiempo de inferencia</b> (relevante para este trabajo)</span></p> <p class="MsoListParagraphCxSpLast" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Umbrales de decisión en tiempo de inferencia</b> (relevante para este trabajo)</span></p>
<p class="MsoNormal"><span lang="ES">El problema de HPO puede formalizarse como:</span></p> <p class="MsoNormal"><span lang="ES">El problema de HPO puede formalizarse como:</span></p>
<p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center;background:#f5f5f5;padding:8pt;margin:6pt 40pt;font-family:Consolas;font-size:10pt"><span lang="ES">\lambda^* = \operatorname{argmin}_{\lambda \in \Lambda} \mathcal{L}(M_\lambda, D_{val})</span></p></span></p> <p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center"><span lang="ES" style="font-family:Cambria Math">\lambda^* = \operatorname{argmin}_{\lambda \in \Lambda} \mathcal{L}(M_\lambda, D_{val})</span></p></span></p>
<p class="MsoNormal"><span lang="ES">Donde:</span></p> <p class="MsoNormal"><span lang="ES">Donde:</span></p>
<p class="MsoListParagraphCxSpFirst" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">\lambda</span> es un vector de hiperparámetros</span></p> <p class="MsoListParagraphCxSpFirst" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Cambria Math">\lambda</span> es un vector de hiperparámetros</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">\Lambda</span> es el espacio de búsqueda</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Cambria Math">\Lambda</span> es el espacio de búsqueda</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">M_\lambda</span> es el modelo configurado con <span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">\lambda</span></span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Cambria Math">M_\lambda</span> es el modelo configurado con <span style="font-family:Cambria Math">\lambda</span></span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">\mathcal{L}</span> es la función de pérdida</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Cambria Math">\mathcal{L}</span> es la función de pérdida</span></p>
<p class="MsoListParagraphCxSpLast" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">D_{val}</span> es el conjunto de validación</span></p> <p class="MsoListParagraphCxSpLast" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><span style="font-family:Cambria Math">D_{val}</span> es el conjunto de validación</span></p>
<h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Métodos de Optimización</span></b></h4> <h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Métodos de Optimización</span></b></h4>
<p class="MsoNormal"><span lang="ES"><b>Grid Search (Búsqueda en rejilla)</b>:</span></p> <p class="MsoNormal"><span lang="ES"><b>Grid Search (Búsqueda en rejilla)</b>:</span></p>
<p class="MsoNormal"><span lang="ES">El método más simple consiste en evaluar todas las combinaciones posibles de valores discretizados de los hiperparámetros. Para <span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">k</span> hiperparámetros con <span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">n</span> valores cada uno, requiere <span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">n^k</span> evaluaciones.</span></p> <p class="MsoNormal"><span lang="ES">El método más simple consiste en evaluar todas las combinaciones posibles de valores discretizados de los hiperparámetros. Para <span style="font-family:Cambria Math">k</span> hiperparámetros con <span style="font-family:Cambria Math">n</span> valores cada uno, requiere <span style="font-family:Cambria Math">n^k</span> evaluaciones.</span></p>
<p class="MsoNormal"><span lang="ES">Ventajas:</span></p> <p class="MsoNormal"><span lang="ES">Ventajas:</span></p>
<p class="MsoListParagraphCxSpFirst" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Exhaustivo y reproducible</span></p> <p class="MsoListParagraphCxSpFirst" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Exhaustivo y reproducible</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Fácil de paralelizar</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Fácil de paralelizar</span></p>
@@ -4840,12 +4840,12 @@ _Toc14106979"><span style="mso-bookmark:_Toc437515557"><span lang="ES" style="te
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Random Forests</b>: Manejan bien espacios de alta dimensión y variables categóricas</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Random Forests</b>: Manejan bien espacios de alta dimensión y variables categóricas</span></p>
<p class="MsoListParagraphCxSpLast" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Tree-structured Parzen Estimator (TPE)</b>: Modela densidades en lugar de la función objetivo</span></p> <p class="MsoListParagraphCxSpLast" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES"><b>Tree-structured Parzen Estimator (TPE)</b>: Modela densidades en lugar de la función objetivo</span></p>
<h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Tree-structured Parzen Estimator (TPE)</span></b></h4> <h4 style="mso-list:none"><b><span lang="ES" style="text-transform:none">Tree-structured Parzen Estimator (TPE)</span></b></h4>
<p class="MsoNormal"><span lang="ES">TPE, propuesto por Bergstra et al. (2011) e implementado en Optuna, es particularmente efectivo para HPO. En lugar de modelar <span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">p(y|\lambda)</span> directamente, TPE modela:</span></p> <p class="MsoNormal"><span lang="ES">TPE, propuesto por Bergstra et al. (2011) e implementado en Optuna, es particularmente efectivo para HPO. En lugar de modelar <span style="font-family:Cambria Math">p(y|\lambda)</span> directamente, TPE modela:</span></p>
<p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center;background:#f5f5f5;padding:8pt;margin:6pt 40pt;font-family:Consolas;font-size:10pt"><span lang="ES">p(\lambda|y) = \begin{cases} l(\lambda) &amp; \text{si } y &lt; y^<i> \\ g(\lambda) &amp; \text{si } y \geq y^</i> \end{cases}</span></p></span></p> <p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center"><span lang="ES" style="font-family:Cambria Math">p(\lambda|y) = \begin{cases} l(\lambda) &amp; \text{si } y &lt; y^<i> \\ g(\lambda) &amp; \text{si } y \geq y^</i> \end{cases}</span></p></span></p>
<p class="MsoNormal"><span lang="ES">Donde <span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">y^*</span> es un umbral (típicamente el percentil 15-25 de las observaciones), <span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">l(\lambda)</span> es la densidad de hiperparámetros con buen rendimiento, y <span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">g(\lambda)</span> es la densidad de hiperparámetros con mal rendimiento.</span></p> <p class="MsoNormal"><span lang="ES">Donde <span style="font-family:Cambria Math">y^*</span> es un umbral (típicamente el percentil 15-25 de las observaciones), <span style="font-family:Cambria Math">l(\lambda)</span> es la densidad de hiperparámetros con buen rendimiento, y <span style="font-family:Cambria Math">g(\lambda)</span> es la densidad de hiperparámetros con mal rendimiento.</span></p>
<p class="MsoNormal"><span lang="ES">La función de adquisición Expected Improvement se aproxima como:</span></p> <p class="MsoNormal"><span lang="ES">La función de adquisición Expected Improvement se aproxima como:</span></p>
<p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center;background:#f5f5f5;padding:8pt;margin:6pt 40pt;font-family:Consolas;font-size:10pt"><span lang="ES">EI(\lambda) \propto \frac{l(\lambda)}{g(\lambda)}</span></p></span></p> <p class="MsoNormal"><span lang="ES"><p class="MsoNormal" style="text-align:center"><span lang="ES" style="font-family:Cambria Math">EI(\lambda) \propto \frac{l(\lambda)}{g(\lambda)}</span></p></span></p>
<p class="MsoNormal"><span lang="ES">Configuraciones con alta probabilidad bajo <span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">l</span> y baja probabilidad bajo <span style="font-family:Consolas;font-size:10pt;background:#f5f5f5;padding:1pt 3pt">g</span> tienen mayor Expected Improvement.</span></p> <p class="MsoNormal"><span lang="ES">Configuraciones con alta probabilidad bajo <span style="font-family:Cambria Math">l</span> y baja probabilidad bajo <span style="font-family:Cambria Math">g</span> tienen mayor Expected Improvement.</span></p>
<p class="MsoNormal"><span lang="ES"><b>Ventajas de TPE</b>:</span></p> <p class="MsoNormal"><span lang="ES"><b>Ventajas de TPE</b>:</span></p>
<p class="MsoListParagraphCxSpFirst" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Maneja naturalmente espacios condicionales (hiperparámetros que dependen de otros)</span></p> <p class="MsoListParagraphCxSpFirst" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Maneja naturalmente espacios condicionales (hiperparámetros que dependen de otros)</span></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Eficiente para espacios de alta dimensión</span></p> <p class="MsoListParagraphCxSpMiddle" style="margin-left:36pt;text-indent:-18pt"><span lang="ES" style="font-family:Symbol">·</span><span lang="ES" style="font-size:7pt">     </span><span lang="ES">Eficiente para espacios de alta dimensión</span></p>