Herramientas de usuario

Herramientas del sitio


inteligencia_artificial:datos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
inteligencia_artificial:datos [2023/06/07 10:31] albertointeligencia_artificial:datos [2025/11/21 18:18] (actual) – [Selección de datos (features) y la "maldición" de la dimensionalidad] alberto
Línea 7: Línea 7:
 ===== Clases y etiquetas ===== ===== Clases y etiquetas =====
 Uno de los problemas a resolver por la IA son de "clasificación": clasificar los datos de salida de nuestro modelo en categorías o **clases**.\\ Uno de los problemas a resolver por la IA son de "clasificación": clasificar los datos de salida de nuestro modelo en categorías o **clases**.\\
-A estas clases se les asigna un identificador o **etiqueta** (Border Collie, pastor alemás, husky, etc), que también puede ser un valor numérico para trabajar con ellas. \\+A estas clases se les asigna un identificador o **etiqueta**, que también puede ser un valor numérico para trabajar con ellas. \\
  
-===== Features y feature vectors ó Datos y vectores de datos ===== +===== Features y feature vectors ó Atributos y vectores de atributos ===== 
-Con "feature" ("la traducción literal es "característica") nos referimos al significado físico que representa un dato. Suelen ser numéricos para poder usarlos con los modelos. \\+Con "feature" ("la traducción literal es "característica" o "atributo") nos referimos al significado físico que representa un dato. Suelen ser numéricos para poder usarlos con los modelos. \\
 Estas características representarán alguna cosa, en función del problema a resolver (medidas, imágenes, etc). \\ Estas características representarán alguna cosa, en función del problema a resolver (medidas, imágenes, etc). \\
  
-Me referiré a estas "Features" indistintamente como "features", "características", "características de datos" "datos".+Me referiré a estas "Features" indistintamente como "features", "características", "características de datos",  "datos" o "atributos".
  
-==== Tipos de datos o "features" ====+==== Atributos o "features" ====
 Los //features// pueden ser valores medidos, o cualquier otra cosa. Los //feature vectors// ("vectores de características") son agrupaciones de estos datos usados como entradas a nuestro modelo.\\ Los //features// pueden ser valores medidos, o cualquier otra cosa. Los //feature vectors// ("vectores de características") son agrupaciones de estos datos usados como entradas a nuestro modelo.\\
-Antes de introducir estos //feature vectors// es común tener que manipularlos para adaptarlos a la entrada al modelo.+Antes de introducir estos //feature vectors// es común tener que manipularlos para adaptarlos a la entrada del modelo.
  
 === Números en coma flotante === === Números en coma flotante ===
Línea 37: Línea 37:
 El problema de este sistema es que puede dar lugar a vectores realmente grandes, por ejemplo: sexo: vector de 2 elementos, 5 posibles colores: 5 elementos, miles de posibilidades: miles de elementos por vector. \\ El problema de este sistema es que puede dar lugar a vectores realmente grandes, por ejemplo: sexo: vector de 2 elementos, 5 posibles colores: 5 elementos, miles de posibilidades: miles de elementos por vector. \\
  
-Usando esta estructura, si tenemos una matriz que representan las entradas, cada una especificada por cada fila, sólo habría una posición con '1' en cada fila. Por ello, este enfoqe se denomina //**One-hot encoding**//.+Usando esta estructura, si tenemos una matriz que representan las entradas, cada una especificada por cada fila, sólo habría una posición con '1' en cada fila. Por ello, este enfoqe se denomina //**One-shot encoding**//.
  
 ==== Selección de datos (features) y la "maldición" de la dimensionalidad ==== ==== Selección de datos (features) y la "maldición" de la dimensionalidad ====
-**//Feature selection//**: La selección de "características de datos" es el proceso en el que se seleccionan los datos que se pasarán a los vectores de datos que servirán para entrenar nuestro modelo. \\+**//Feature selection//**: La selección de atributos es el proceso en el que se seleccionan los datos que se pasarán a los vectores de datos que servirán para entrenar nuestro modelo. \\
 El vector de datos debe contener sólo las características de datos (magnitudes, categorías, etc) que contengan información que permitan generalizar al modelo para funcionar con datos nuevos. Es decir, que permitan al modelo diferenciar entre clases. \\ El vector de datos debe contener sólo las características de datos (magnitudes, categorías, etc) que contengan información que permitan generalizar al modelo para funcionar con datos nuevos. Es decir, que permitan al modelo diferenciar entre clases. \\
  
Línea 54: Línea 54:
 Según esto, podemos ver un ejemplo: \\ Según esto, podemos ver un ejemplo: \\
 Usamos como entrada una imagen en color. Esta imagen tendrá 1024 píxeles de largo por 1024 píxeles de ancho. Y cada píxel tiene 3 colores de 1 byte de intensidad por cada color RGB. De esta manera el //feature vector// tendrá: //d// = 1024 x 1024 x 3 = 3.145.728 dimensiones (nº de elementos). Necesitaríamos aproximadamente 10<sup>3.145.728</sup> muestras de datos. Esto simplemente, no es posible. \\ Usamos como entrada una imagen en color. Esta imagen tendrá 1024 píxeles de largo por 1024 píxeles de ancho. Y cada píxel tiene 3 colores de 1 byte de intensidad por cada color RGB. De esta manera el //feature vector// tendrá: //d// = 1024 x 1024 x 3 = 3.145.728 dimensiones (nº de elementos). Necesitaríamos aproximadamente 10<sup>3.145.728</sup> muestras de datos. Esto simplemente, no es posible. \\
 +
 +Sin embargo, ese número tan brutal, lo que indica realmente son todas las posibles combinaciones que podemos hacer con una cantidad de dimensiones tan elevada. En el caso de una imagen, la mayor parte de estos valores es ruido. En realidad, el conjunto de imágenes existentes es un número mucho menor que el de todas las imágenes posibles. \\
 +
 Este problema paralizó la investigación en inteligencia artificial durante décadas, pero en la actualidad hay formas de evitarlo, aunque sigue siendo necesario tenerlo en cuenta para modelos tradicionales.  Este problema paralizó la investigación en inteligencia artificial durante décadas, pero en la actualidad hay formas de evitarlo, aunque sigue siendo necesario tenerlo en cuenta para modelos tradicionales. 
 ===== Características de datos (features) de un buen dataset ===== ===== Características de datos (features) de un buen dataset =====
Línea 79: Línea 82:
 Por ejemplo, si por norma general, una clase aparece aproximadamente el 85% de las veces, y otra el 15%, deseamos que nuestro dataset incluya las clases en la misma proporción. \\ Por ejemplo, si por norma general, una clase aparece aproximadamente el 85% de las veces, y otra el 15%, deseamos que nuestro dataset incluya las clases en la misma proporción. \\
  
-El problema es cuando una clase aparece muy pocas veces (por ejemplo una cada 10.000 entradas), ya que el modelo probablemente aprenderá muy bien la más habitual, pero cuando aparezca una diferente, probablemente fallará debido a que no ha tenido suficientes  de estos datos para entrenar. \\+El problema se da cuando una clase aparece muy pocas veces (por ejemplo una cada 10.000 entradas), ya que el modelo probablemente aprenderá muy bien la más habitual, pero cuando aparezca una diferente, probablemente fallará debido a que no ha tenido suficientes  de estos datos para entrenar. \\
  
 Una forma de salvar este problema es el de entrenar el modelo una en una proporción 10:1 con el modelo que menos aparece, y cuando haya pasado un tiempo, aumentar la proporción hasta obtener la real. \\ Una forma de salvar este problema es el de entrenar el modelo una en una proporción 10:1 con el modelo que menos aparece, y cuando haya pasado un tiempo, aumentar la proporción hasta obtener la real. \\
Línea 100: Línea 103:
 El tamaño del dataset de entrenamiento debe ser lo suficientemente grande para conseguir una precisión adecuada, en relación al coste de conseguir los datos. \\ El tamaño del dataset de entrenamiento debe ser lo suficientemente grande para conseguir una precisión adecuada, en relación al coste de conseguir los datos. \\
  
-La cantidad de datos que debemos tener para entrenar adecuadamente nuestro modelo tampoco tiene por qué ser necesariamente enorme. Por norma general, suele haber un incremento exponencial de la precisión del modelo cuando se empieza a entrenar, pero a partir de cierto número de datos de entrada, la precisión aumenta muy poco en comparación con la gran cantidad de datos que se le están introduciendo. El cose te conseguir los datos, puede que no interese asumirlo a partir de ese punto.\\+La cantidad de datos que debemos tener para entrenar adecuadamente nuestro modelo tampoco tiene por qué ser necesariamente enorme. Por norma general, suele haber un incremento exponencial de la precisión del modelo cuando se empieza a entrenar, pero a partir de cierto número de datos de entrada, la precisión aumenta muy poco en comparación con la gran cantidad de datos que se le están introduciendo. El coste de conseguir los datos, puede que no interese asumirlo a partir de ese punto.\\
  
 También el número de parámetros del modelo cuenta a la hora de definir el tamaño del dataset. Por norma general, será necesario tener un mayor número de muestras que de parámetros, pero existen modelos de aprendizaje profundo que se ajustan muy bien con menos datos de entrenamiento que su número de parámetros. Esto ocurre por ejemplo, cuando hay que diferenciar entre clases muy diferentes. También el número de parámetros del modelo cuenta a la hora de definir el tamaño del dataset. Por norma general, será necesario tener un mayor número de muestras que de parámetros, pero existen modelos de aprendizaje profundo que se ajustan muy bien con menos datos de entrenamiento que su número de parámetros. Esto ocurre por ejemplo, cuando hay que diferenciar entre clases muy diferentes.
Línea 106: Línea 109:
  
 ===== Preparación de los datos ===== ===== Preparación de los datos =====
-Antes de comenzar a construir datasets, hay dos situaciones comunes que hay que resolver antes de usar el dataset en un modelo: escalado de //features// y qué hacer si no se dispone del valor de una //feature//.+Antes de comenzar a construir datasets, hay dos situaciones comunes que hay que resolver antes de usar el dataset en un modelo: escalado de atributos //features// y qué hacer si no se dispone del valor de un atributo.
  
-==== Escalado de características "features" ==== +==== Escalado de atributos ==== 
-Cuando las diferentes características del vector de características tiene rangos de valor muy dispares, es necesario normalizarlos para que el modelo funcione correctamente, y no de más peso a unas características que otras sólo por el rango en que se mueven.+Cuando los diferentes atributos del vector tiene rangos de valor muy dispares, es necesario normalizarlos para que el modelo funcione correctamente, y no dé más peso a unos atributos que otros sólo por el rango en que se mueven.
  
 Para ellos se siguen los siguientes pasos: Para ellos se siguen los siguientes pasos:
-  - Centrado medio: Por cada característica, se saca su media a partir de todos los datos disponibles, y posteriormente se resta a cada valor de esa característica. Obtenemos valores centrados (alrededor) de 0.  {{ :ia:media_aritmetica.png?100 |}} +  - Centrado medio: Por cada atributo, se saca su media a partir de todos los datos disponibles, y posteriormente se resta a cada valor de esa característica. Obtenemos valores centrados (alrededor) de 0.  {{ :ia:media_aritmetica.png?100 |}} 
-  - Cambiamos la desviación estándar σ a 1: Calculamos la desviación estándar σ de todas las muestras de cada característica (esto se hace con la media calculada anteriormente). La desviación estándar indica cuánto se desvía cada muestra de su centro. Una vez calculada, se normaliza para cada muestra con la media y desviación típica de esa característica: {{ :ia:desviacion_tipica.png?150 |}} {{ :ia:normalizacion.png?100 |}}+  - Cambiamos la desviación estándar σ a 1: Calculamos la desviación estándar σ de todas las muestras de cada atributo (esto se hace con la media calculada anteriormente). La desviación estándar indica cuánto se desvía cada muestra de su centro. Una vez calculada, se normaliza para cada muestra con la media y desviación típica de ese atributo: {{ :ia:desviacion_tipica.png?150 |}} {{ :ia:normalizacion.png?100 |}}
  
-Dado un array x, que representa el dataset (un elemento por cada vector, y cada uno es un array en que cada elemento es una característica) podemos hacer esto con NumPy de la siguiente forma:+Dado un array x, que representa el dataset (un elemento por cada vector, y cada uno es un array en que cada elemento es un atributo) podemos hacer esto con NumPy de la siguiente forma:
 <code python> <code python>
 x = (x-x.mean(axis=0))/x.std(axis=0) x = (x-x.mean(axis=0))/x.std(axis=0)
 </code> </code>
  
-Si hiciésemos la media de los valores de cada característica, obtendríamos valores extremadamente cercanos a cero. Si de igual manera, calculamos la desviación estándar de los valores de cada característica, obtendríamos valores extremadamente cercanos a 1 . Los valores del dataset ya están normalizados y listos para ser usados en el modelo.+Si hiciésemos la media de los valores de cada atributo, obtendríamos valores extremadamente cercanos a cero. Si de igual manera, calculamos la desviación estándar de los valores de cada atributo, obtendríamos valores extremadamente cercanos a 1 . Los valores del dataset ya están normalizados y listos para ser usados en el modelo.
  
 ==== Valores perdidos ==== ==== Valores perdidos ====
inteligencia_artificial/datos.1686126707.txt.gz · Última modificación: por alberto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki