sábado, 25 de diciembre de 2021

Crear y utilizar tablas dinámicas en Google Spreadsheet de Google Drive

Las tablas dinámicas de las hojas de cálculo de Google Drive, o Spreadsheet, ofrecen datos a partir de un rango de datos y la información que muestran varía dinámicamente según varía la información en el rango de datos de referencia.

Podemos utilizar tablas dinámicas para delimitar un gran conjunto de datos o ver las relaciones entre datos. Por ejemplo, podríamos determinar qué empresa ha conseguido mayores ganancias en un mes determinado con una tabla dinámica.

Añadir o editar tablas dinámicas

Seleccionamos un rango de celdas con los datos de origen que queramos usar. Es Importante introducir un encabezado en cada columna.

Tablas dinámicas de un Google Spreadsheet de Google Drive


En el menú de arriba, hacemos clic en Datos -> Tabla dinámica. Hacemos clic en la hoja de la tabla dinámica, si aún no está abierta.

Crear y utilizar tablas dinámicas en Google Drive


Aparece un cuadro donde se indica el intervalo de datos elegido y nos pregunta donde queremos el resultado. Le decimos en la hoja actual y pulsamos el botón crear.

Crear y utilizar tablas dinámicas en Google Drive


A veces, nos aparecerán tablas dinámicas recomendadas en función de los datos que elijamos. Podemos elegirla directamente de sugerido. Pero en nuestro caso añadimos filas pulsando el botón Añadir junto a filas.

Tablas dinámicas en Google Drive


Nos sale una lista con los tipos de fila que podemos elegir, En nuestro caso hemos elegido Tipo Petición

Tablas dinámicas en Google Drive


Y ya está. Esta acción creará nuestra tabla dinámica que nos contará el número de peticiones de nuestro rango , desglosadas por tipo de Petición.


sábado, 18 de diciembre de 2021

Arquitectura de datos y gobernanza

La gestión adecuada de datos es fundamental en estos días. Estamos hablando de arquitectura de datos y gobernanza de datos. Esto se logra a través de políticas que se relacionan con cómo se crean o recopilan los datos y cómo se utilizan. Y esto a menudo está dictado por leyes y regulaciones. Por lo tanto, existen diferentes reglas en diferentes partes del mundo sobre cómo se recopilan y utilizan los datos. Como por ejemplo las leyes de protección de datos y otras políticas que se deben cumplir. Si esas políticas se diseñan correctamente y la concienciación y la capacitación de los usuarios, los hacen conscientes de esas políticas y la relevancia de las mismas. Entonces se puede lograr el cumplimiento normativo. Pero esto por sí solo no será efectivo, es necesario un  monitoreo continuo del uso de datos y cumplimiento de las políticas y controles de seguridad que protegen esos activos de datos. 

Arquitectura de datos  y gobernanza
Esto no es algo que se haga de una sola vez, lo primero que debemos hacer es identificar los activos de datos que tienen valor para la organización. A menudo, es difícil determinar esto hasta que organizamos esos datos en información. De modo que podemos inventariar las ubicaciones de almacenamiento de los datos disponibles. Por ejemplo, en una matriz de almacenamiento local, en la nube. También pueden estar en los teléfonos de los usuarios. 

También hay que determinar los usuarios y grupos que tenemos. Y asegurarnos de que las listas de control de acceso, o ACL, otorguen solo los permisos necesarios para que los usuarios completen las tareas del trabajo, y nada más. La arquitectura de datos en la gobernanza también se ocupa de clasificar los activos de datos. Consiste en agregar información adicional, etiquetas o metadatos adicionales de forma que podamos asignar etiquetas de confidencialidad a los datos. Por tanto, podrían utilizarse categorías de clasificación. Por ejemplo, podríamos marcar como confidencial ciertos archivos almacenados en un servidor que contiene tarjetas de crédito. Existe una variedad de herramientas que podemos usar para hacer esto. ¿por qué tenemos que molestarnos en pasar por esto? ¿Por qué asignar una etiqueta de información confidencial a archivos que  contienen información de tarjetas de crédito?

Es necesario porque luego, luego podemos asignar niveles de autorización de seguridad o permisos basados en esas etiquetas y la clasificación de esos datos. La arquitectura y la gobernanza de datos también se ocupa del cumplimiento de las leyes y regulaciones. Y esto variará en diferentes jurisdicciones legales alrededor del mundo. Por lo tanto, como especialistas de TI en datos, debemos estar bien informados sobre qué leyes y regulaciones protegen los datos. Dónde se recopilarán y utilizarán los datos de los que somos responsables. Privacidad de datos significa que tendremos que fortalecer los sistemas de TI que manejan esos datos. Eliminar los agujeros de seguridad haciendo cosas como aplicar actualizaciones. Deshabilitar servicios innecesarios, usar métodos de autenticación sólidos, etc. Dentro de una organización, sus políticas de seguridad a menudo provienen de leyes y regulaciones. Necesitamos algún tipo de forma centralizada en una empresa más grande para hacer cumplir y monitorear el cumplimiento de estas reglas.

Para gobernar adecuadamente los datos, también tenemos que pensar en minimizar el impacto de las filtraciones de datos. Una forma de hacerlo es mediante la realización de un análisis de impacto comercial o BIA por si ocurre algo de este tipo. Como resultado de esto, podemos implementar controles de seguridad efectivos sobre las amenazas que tienen más probabilidades de afectar los activos de datos más valiosos. Pero nuevamente, necesitamos monitorear continuamente los controles de seguridad que implementamos para proteger los datos y asegurarnos de que aún sean efectivos. Lo que es un control de seguridad efectivo hoy en día podría no ser efectivo unos meses después. También deberíamos considerar la redundancia del sistema de TI. Este es otro aspecto de ser un custodio de datos y asegurarse de que los datos estén disponibles. Podemos hacer esto mediante tecnologías de agrupación en clústeres y equilibrio de carga. La redundancia de datos también se puede lograr a través de copias de seguridad de datos y, por supuesto, replicación a otros hosts. Donde la diferencia es que la replicación de datos es una copia más actualizada de los datos que se replica entre hosts. Y podemos hacerlo a nivel del sistema de archivos. O también podemos hacerlo a nivel de base de datos creando, por ejemplo, réplicas de lectura de la base de datos en la nube. 

Tipos de arquitectura de sistemas de datos de TI 

La planificación es un concepto fundamental cuando se trata de analizar los tipos de arquitectura de sistemas de datos de TI. Un tipo es un diagrama de relación de entidades o ERD. Éste nos permite definir entidades así como atributos de datos. Una entidad, por ejemplo, podría ser una tabla de base de datos mientras planificamos la estructura de almacenamiento para nuestro entorno. El atributo de datos esta relacionado con las columnas dentro de la tabla y el tipo de datos de la columna. Los atributos también determinan cualquier restricción sobre lo que se permite almacenar dentro de esa columna. Por otro lado  están las relaciones de datos. Es como una base de datos de tipo del  entorno SQL donde podemos tener relaciones entre tablas. Pero debemos considerar los procesos comerciales que utilizarán estos datos. Lo que se utilizará para crear un diagrama de relación entre entidades. Hay muchas herramientas que permiten crear  diagramas para esto. Utilizamos los modelos guardados para crear activamente una estructura de almacenamiento de base de datos desde nuestro ERD. 

Tipos de arquitectura de sistemas de datos de TI

Cuando trabajamos con una planificación de la arquitectura de nuestro sistema de datos, tenemos que definir las entradas de datos, incluir los requisitos de datos técnicos en términos de qué tipo de datos son aceptables. Esos datos pueden provenir de bases de datos internas dentro de la organización o de fuentes externas, lo que significa que debe existir confianza en la validez de los datos que ingresaremos en nuestros sistemas. También tenemos que definir salidas de datos. Esto es importante porque se relacionará con los procesos comerciales que se ocupan de la gestión de datos. Eso implica el procesamiento de datos, la transmisión y el almacenamiento. Mientras hacemos esto, podemos identificar brechas. Y en nuestro contexto en el que hablamos de arquitectura de datos, hablamos de identificar problemas relacionados con la forma en que se gestionan los datos y detectar incumplimientos de regulaciones para la privacidad de los datos. 

Las salidas de datos también incluyen resúmenes e informes informativos que pueden derivarse de los datos en bruto. Esto puede venir de fuentes internas y externas. El Open Group Architecture Framework, también llamado TOGAF, es una guía de mejores prácticas del sistema de información. Podemos utilizarlo para diseñar nuestra implementación guiada de una solución de arquitectura de datos real. También podemos mapear tareas de gobierno de datos con objetivos comerciales. Por ejemplo, el objetivo comercial podría ser recopilar los hábitos de compra de los clientes con fines de marketing. Pero al mismo tiempo tenemos que hacer el análisis mientras protegemos los datos. La protección de los datos puede significar que, si hay datos confidenciales, es necesario marcarlos como tales. Deben ser clasificados, marcados con los permisos apropiados y en algunos casos, es posible que deban encriptarse. Y eso podría ser necesario para el cumplimiento normativo. El Cuerpo de conocimiento del análisis empresarial, también llamado BABOK, es un conjunto de mejores prácticas relacionadas con el análisis empresarial. Es decir el análisis de estrategias comerciales y cómo se relaciona esto con el uso del sistema de TI. Necesitamos identificar las necesidades del negocio, los objetivos del negocio y las soluciones relacionadas que brindarán valor a las partes interesadas afectadas. Y esto, se relaciona con los datos que ingresan a estos sistemas. Los datos que se obtienen como resultado, donde podemos obtener valor de grandes conjuntos de datos sin procesar. Y cómo manejar esos datos de acuerdo con las leyes y regulaciones.

Informes y análisis de datos

Las organizaciones no tardan mucho en acumular grandes cantidades de datos. Pero, ¿qué hacer con esos datos? Ahí es donde entra en juego el análisis de datos. Al analizar los datos correctamente, podemos extraer información que de otro modo ni siquiera hubiéramos sabido que estaba allí, si hubiéramos dejado los datos sin procesar en su formato original. Pero antes de obtener todos estos conocimientos, tenemos que hacer un poco de trabajo de preparación. Los datos deben limpiarse y transformarse, de modo que podamos proceder con el modelado de datos para ver las relaciones. La limpieza y transformación de datos se considera un trabajo de preparación. Debemos prestar especial atención en asegurarnos de que nuestros datos brutos sean correctos y coherentes. Porque facilitará mucho el modelado y el análisis más adelante. Y, por supuesto, hará que los datos sean mucho más fiables.

Informes y análisis de datos

Consiste en eliminar datos irrelevantes y duplicados, completar valores perdidos, asegurarse de que los valores numéricos sean realistas. ¿Están dentro de un rango aceptable? Corrección de errores tipográficos, mayúsculas y abreviaturas. Y cuando se trata de algunos tipos de datos como fechas, asegurarse de que estén en un formato de fecha consistente. A menudo, es posible escribir fórmulas o scripts para automatizar este tipo de limpieza y transformación de datos. 

El análisis de datos, apoyará la toma de decisiones. Porque hemos limpiado los datos y los podemos modelar de diferentes maneras, observando relaciones, tendencias o patrones. Lo que significa que también pueden resultar en eficiencias en los procesos de negocio, y hacer esto, también significa, eficiencias de costos.

La analítica de datos siempre se beneficia del procesamiento paralelo (agrupación de escala horizontal), para trabajar con conjuntos de datos muy grandes y obtener estos conocimientos podemos utilizar una implementación de  Apache Hadoop. El siguiente paso a considerar, es el origen de los datos con los que trabajaremos mientras realizamos nuestro análisis. Pueden venir de un sistema de procesamiento de transacciones en línea u OLTP. Donde se realizan operaciones estándar de creación, lectura, actualización y eliminación en los datos. La creación, lectura, actualización y eliminación se denomina a menudo CRUD, La otra cosa a tener en cuenta es la dispersión de datos sin procesar entre varios sistemas, ya sean locales, en la nube o ambos. En algunos casos, con organizaciones más grandes, cada departamento tiene una solución diferente o una forma diferente de administrar sus datos.

¿cómo vamos a reunir todos esos datos en una ubicación central? lo hacemos en un almacén de datos. (Data warehouse)  Y es por eso que es importante, asegurarnos de que los datos se limpian y transforman, para que sean coherentes. No podemos realizar un modelado de datos adecuado sin coherencia en los datos subyacentes.

Por otro lado está el concepto de espacio aislado, que se aplica al análisis de datos. Esto significa que tenemos un entorno de análisis de datos independiente, escalable y siempre disponible. Esto se puede hacer mediante virtualización, o en la nube o  también puede ser una partición lógica de un almacén de datos empresarial (Data warehouse) general más grande. Esto permite a los científicos y analistas de datos elegir qué herramientas quieren usar para realizar su análisis. Y al mismo tiempo, también sirve como un entorno de análisis de datos experimentales. Si recopilamos grandes cantidades de datos, queremos intentar sacarles el máximo valor posible.

Estamos hablando de inteligencia del negocio o BI. El análisis de datos también significa que deberíamos tener un portal de informes y análisis de autoservicio. Suele ser un portal web donde los analistas de datos pueden establecer una conexión y luego trabajar desde allí, para realizar su modelado de datos y ejecutar resúmenes e informes. Al hacer esto, podemos descubrir patrones ocultos, identificar correlaciones entre puntos de datos separados, identificar tendencias a lo largo del tiempo. También podemos ejecutar modelos de predicción. Y esto, por supuesto, será muy valioso para cosas como marketing o mirar los patrones de compra de los clientes, etc.


sábado, 11 de diciembre de 2021

Optimización de la velocidad de entrenamiento de redes neuronales

Entrenar una red neuronal profunda puede ser dolorosamente lento, aquí presentaremos cuatro formas de aumentar esta velocidad y alcanzar una solución mejor. 

Vamos a explorar los parámetros y enfoques esenciales para optimizar la velocidad de entrenamiento de las redes neuronales. Para optimizar la velocidad de entrenamiento de las redes neuronales, hay ciertas métricas que debemos vigilar y controlar según las iteraciones del aprendizaje. Necesitamos configurar los ajustes de diferentes hiperparámetros para lograr un rendimiento de aprendizaje óptimo de las redes neuronales. La primera es la función de pérdida. Que es una métrica o parámetro importante que se evalúa a nivel de lote durante el paso hacia adelante del proceso de aprendizaje.

La segunda métrica es la precisión del entrenamiento. Necesitamos rastrear y especificar esta métrica mientras entrenamos un clasificador. Y las métricas brindan la capacidad de identificar sobreajustes en los modelos de redes neuronales. La tercera es la proporción de pesos y sus actualizaciones. Necesitamos evaluar y rastrear los pesos para cada conjunto de parámetros, mutuamente excluyentes entre sí e impulsar el resultado dependiendo de cuán menor o mayor sea la proporción de peso más baja o más alta que la tasa de aprendizaje. Finalmente tenemos la actualización u optimización del momento en cada iteración resta el gradiente local del vector de momento (momento multiplicado por la tasa de aprendizaje) y actualiza los pesos sumando su vector de momento.

La métrica es la función de activación. Hay varias funciones de activación que gestionan la distribución de las activaciones neuronales entre el rango de menos uno y uno. 

Función de pérdida

Es una métrica importante que es útil para tener en cuenta durante el entrenamiento de una red neuronal, ya que se evalúa en cada época durante su entrenamiento.

 

Función de pérdida

El gráfico ilustra los efectos de diferentes tasas de aprendizaje. Las bajas tasas de aprendizaje proporcionarán mejoras lineales. Esto se ilustra con la curva de la línea naranja en el gráfico. Las tasas de aprendizaje muy altas proporcionarán mejoras exponenciales como lo indica la línea púrpura en el gráfico. Las altas tasas de aprendizaje ayudarán a disminuir la pérdida mucho más rápido. Pero existe el riesgo potencial de quedar atrapado en el peor valor de pérdida. 

Si consideramos la naturaleza general de la curva en el gráfico, observaremos que a medida que aumentamos el número de épocas mientras aplicamos diferentes tasas de aprendizaje, la función de pérdida tiende a disminuir. 

Precisión del entrenamiento

La precisión del entrenamiento puede afectar los escenarios de sobreajuste en nuestros modelos de redes neuronales.

 

Precisión del entrenamiento

En el gráfico vemos la brecha entre la precisión del entrenamiento y la validación, lo que muestra la cantidad de sobreajuste. Se proporcionan dos posibles escenarios de sobreajuste en el gráfico. El error de validación, indicado como la curva de color rojo en el gráfico, muestra una precisión de validación pequeña o marginal, en comparación con la precisión de entrenamiento, que se representa con la curva de color púrpura.

En tales casos, observaremos un fuerte sobreajuste. Y en otro para reducir el sobreajuste, podemos aumentar la regularización o recopilar más datos y ejecutar las épocas en consecuencia. El otro error de validación o curva de precisión, indicada como la curva de color azul en el gráfico, muestra una precisión de validación mejor o más alta en comparación con la misma precisión de entrenamiento que se muestra con la curva de color púrpura. En tales casos, observaremos un sobreajuste pequeño o débil, lo que a su vez indica que la capacidad del modelo de red puede no ser lo suficientemente alta.

Podemos aumentar la cantidad de parámetros para asegurarnos de obtener un modelo más grande. Siempre que calculamos el gradiente con retropropagación, generalmente usamos el gradiente para realizar actualizaciones de parámetros con el fin de optimizar las redes neuronales. Hay varios enfoques que podemos utilizar para actualizar los parámetros. El primer enfoque de este tipo es una actualización de momento.

Actualización del momento 

La actualización del momento es un enfoque que proporciona una mejor convergencia que el descenso del gradiente estocástico porque calcula promedios de peso exponenciales que, a su vez, proporcionan una mejor estimación, que está más cerca de las derivadas reales. La figura de la ilustración en la parte inferior izquierda ilustra este enfoque al proporcionar una convergencia comparativa del paso de momento con el paso real y el paso de gradiente. El segundo enfoque que podemos utilizar para actualizar los parámetros es la actualización de momento de Nesterovque es una versión modificada de la actualización de momento. Este método funciona un poco mejor que la actualización de momento. La figura de la ilustración de muestra en la parte inferior derecha muestra la actualización de momento de Nesterov. O también llamada Nesterov accelerated Gradient (NAG).

 

Actualización del momento

No estamos evaluando el gradiente en la posición actual, que se indica con un círculo o un punto negro. Sabemos que el momento nos llevará a la punta de la flecha de color azul. Por lo tanto, evaluamos el gradiente desde una posición mirando hacia adelante, que se indica con la flecha de color naranja. 

Uno de los enfoques esenciales para reducir la tasa de aprendizaje es el  decaimiento del paso (Step Decay), donde la tasa de aprendizaje se reduce en un cierto porcentaje después de completar un cierto número de épocas de entrenamiento. En otras palabras, la disminución de pasos reduce la tasa de aprendizaje en un cierto factor cada pocas épocas.

La reducción de la tasa de aprendizaje con decaimiento escalonado puede implicar dos enfoques diferentes. El primero es la caída exponencial, que disminuye a una tasa proporcional al valor actual. Se considera que cualquier cantidad que decae en un porcentaje fijo a intervalos regulares posee una caída exponencial. El segundo enfoque es la desintegración de 1/t. Este enfoque implica reducir la tasa de aprendizaje en función del número de iteraciones. El siguiente enfoque para la reducción de la tasa de aprendizaje implica la optimización de hiperparámetros. Sabemos que las redes neuronales generalmente involucran numerosos ajustes de hiperparámetros. Y algunos de los hiperparámetros más comunes en el contexto de las redes neuronales incluyen la tasa de aprendizaje inicial, el programa de disminución de la tasa de aprendizaje y la fuerza de regularización.

La tasa de aprendizaje inicial es un hiperparámetro configurable que generalmente usamos al entrenar redes neuronales. Es un valor positivo pequeño, a menudo en el rango de 0,0 y 1,0. El programa de disminución de la tasa de aprendizaje, también conocido como esquemas de disminución, puede implicar una disminución lineal hasta que alcancemos una tasa de aprendizaje mínima fija. La regularización se refiere al proceso de modificación de los algoritmos de aprendizaje para favorecer reglas de predicción más simples para evitar el sobreajuste. Podemos modificar la función de pérdida para penalizar determinados valores de los pesos que estamos aprendiendo mediante la regularización. Algunos ejemplos de fuerza de regularización incluyen penalización L2, fuerza de abandono, entre otros. 

Conjunto de modelos 

Es un enfoque confiable para mejorar el rendimiento de las redes neuronales, donde entrenamos múltiples modelos independientes y promediamos sus predicciones. Con el creciente número de modelos en el conjunto, el rendimiento mejorará gradualmente. Podemos formar un conjunto de modelos usando algunos enfoques distintivos. El primer enfoque es formar un conjunto con el mismo modelo, pero con diferente inicialización. Este enfoque implica una validación cruzada para determinar los mejores hiperparámetros que podemos usar para entrenar múltiples modelos, pero con diferentes inicializaciones aleatorias. El segundo enfoque es utilizar diferentes puntos de control de un solo modelo.

Este enfoque implica el uso de diferentes puntos de control de un solo modelo o red a lo largo del tiempo para formar un conjunto. El enfoque final es ejecutar el promedio de parámetros mientras se entrenan las redes neuronales. Y este enfoque implica promediar el estado de un modelo en múltiples iteraciones anteriores. Lo hacemos manteniendo una copia diferente de los pesos del modelo en la memoria que, a su vez, podemos usar para almacenar una suma exponencialmente decreciente de los pesos anteriores.


sábado, 4 de diciembre de 2021

Big Data

Big data significa que estamos trabajando con grandes cantidades de datos. Y eso es especialmente cierto en gran parte debido a la revolución de Internet. Desde mediados y finales de la década de 1990, de repente, el uso de Internet ha crecido exponencialmente. Hasta el punto en que solía ser algo que podíamos usar para buscar información en la web o tal vez para enviar algún correo electrónico ocasional. Pero hoy en día se usa para servicios de transmisión. Y las empresas realmente no pueden hacer negocios sin conectividad a Internet en todos sus dispositivos informáticos. Los expertos estiman que aproximadamente el 90% de los datos actuales tienen solo dos años.

Eso realmente pone las cosas en perspectiva, para mostrar que el volumen de datos sigue creciendo. Y así, de alguna forma, necesitamos una forma de capturar, recopilar, almacenar y procesar estos datos para que tengan sentido. Y eso es parte de lo que se tratan con Big data. Cuando tenemos datos que se organizan y obtenemos conocimientos de ellos, realmente estamos hablando de información. Así que todos hemos escuchado el antiguo término, la información es poder. Y eso es tan cierto ahora como siempre. Con Big data, estamos hablando de utilizar soluciones informáticas modernas que son realmente necesarias para procesar y organizar datos en información a esta escala.

Los sistemas tradicionales de administración de bases de datos simplemente podrían no ser capaces de manejar este volumen de datos. Las bases de datos tradicionales pueden manejar millones de filas o registros, y podemos ejecutar consultas en ellas y devuelven resultados con bastante rapidez. Pero, ¿qué pasa cuando se trata de miles de millones o billones de artículos almacenados? Bueno, los sistemas tradicionales simplemente no están diseñados para eso, y ahí es donde realmente entra el Big data. Con el Big data, también tenemos que considerar de dónde provienen los datos.

Estos datos pueden provenir de cámaras de vigilancia de seguridad, de dispositivos de IoT, o del uso de aplicaciones de teléfonos inteligentes, o de datos financieros, estamos hablando de los datos recopilados a lo largo del tiempo. Y sabemos que eso sigue creciendo exponencialmente. Los datos realmente pueden venir de cualquier lugar. Podrían ser feeds de redes sociales, registros militares, registros de llamadas telefónicas. Realmente, podrían provenir de cualquier parte. Y esa es una de las razones por las que estamos hablando de Big data. Porque hay mucho y muchas fuentes.

Big data tiene una serie de características, una de las cuales es la cantidad de datos con los que estamos trabajando. Tenemos que considerar no solo el espacio de almacenamiento, que podría estar en terabytes para grandes conjuntos de datos. Pero también cuántos datos se pueden procesar a la vez. Y eso puede ser especialmente importante si estamos utilizando una solución de almacenamiento en caché en memoria de base de datos como Redis. Solo podemos almacenar una cantidad determinada de datos en caché a la vez para acelerar las operaciones. La siguiente característica que tenemos que considerar es el ritmo al que se producen los datos. Eso va a variar de una organización a otra. Donde realmente depende de qué tipo de datos se consideran valiosos en una organización profesional, una agencia gubernamental o incluso una base de datos individual. Así que tenemos que pensar en cuántos datos se producen y de dónde proceden.

Existe una amplia variedad de tipos de datos. También tenemos que pensar en esto. Ya se trate de feeds de redes sociales o registros de llamadas telefónicas, medios de audio y video. Tenemos que considerar qué es lo que queremos recopilar, almacenar y procesar. La siguiente característica de Big data es, ¿cómo de precisos son los datos? ¿Se puede confiar en ellos?  ¿De dónde provienen los datos? ¿Fue de un registro interno u otra base de datos, o se proporcionó externamente? ¿Se proporcionó de forma automatizada o lo proporcionaron los usuarios, lo que significa que podría estar sujeto a errores? O podríamos querer ejecutar algún tipo de reglas de transformación. Para asegurarnos de que cuando las personas ingresen, por ejemplo, diferentes variaciones de Estados Unidos ,E.E.U.U o EE.UU., Lo transformemos para que sea algo consistente para facilitar la búsqueda y obtener información significativa.

La precisión de los datos también es importante cuando se trata de transmitir datos a través de la red y almacenarlos. En otras palabras, protegerlo de manipulaciones, ya sea mediante cifrado y / o firmas digitales. Idealmente, deberían usarse ambos. La característica más importante de los datos es ¿cómo obtenemos valor de esos datos? Porque entonces se convierte en información. Así que tenemos que pensar, por ejemplo, en millones de transacciones de clientes minoristas por hora. Está bien, si estamos capturando esa información. Pero si no hacemos nada con ella, ¿cuál es el valor?, el valor vendría al mirarlo y determinar si hay alguna tendencia a lo largo del tiempo. O patrones para comprar, en diferentes lugares, diferentes momentos del día, diferentes tipos de productos. Además, mirar información, como de dónde son las personas. Y si existe algún tipo de correlación con nuestros hábitos de compra que sean similares para las personas de la misma zona. Ahí es donde el procesamiento de 

Big Data y la obtención de valor de esos datos se vuelve muy frecuente.

Implementar una solución SQL en AWS

Vamos a implementar una instancia de base de datos de Microsoft SQL Server en la nube con Amazon Web Services. Para ello abrimos la consola de AWS 

Tenemos una cuenta de Amazon Web Services o AWS, y hemos iniciado sesión en la Consola de administración de AWS. Nos desplazamos hacia abajo y debajo del encabezado Base de datos hacemos clic en RDS, que significa sistema de base de datos relacional.

Implementar una solución SQL en AWS

Los servicios de base de datos de AWS tienen: RDS, DynamoDB, Neptune, etc. Lo que queremos es crear una nueva base de datos, así que hacemos clic en el botón Crear base de datos (Create database).

Implementar una solución SQL en Amazon Web Services
Con lo que aparece una nueva página para seleccionar el motor de BBDD. Entre otras tiene para elegir:  Amazon Aurora, MySQL, MariaDB, etc. Elegimos Microsoft SQL Server, así que lo seleccionamos. De las opciones que nos permite elegimos SQL Server Express Edition. Y en la parte inferior derecha hacemos clic en Siguiente. 

SQL Server en Amazon Web Services

Hacemos clic en el botón Siguiente (Next). Se muestra una nueva página para especificar detalles de la base de datos. Tiene las siguientes secciones: Especificaciones de la instancia y Configuración. Las especificaciones de la instancia tienen un menú desplegable. 

SQL Server en Amazon Web Services
Para SQL Server Express, no tenemos todas las opciones disponibles, elegimos la clase de instancia de base de datos de la lista desplegable, elegimos db.t2.micro como la clase de instancia, que admite 1 vCPU y aproximadamente 1 gigabyte de RAM.

implementar SQL Server en Amazon Web Services
Y no cambiamos nada más en esta primera página, aparte de ir a Configuración (Settings), para  especificar un identificador de instancia de base de datos que llamamos  db1. Especificamos un nombre de usuario maestro de dbadmin, introducimos una contraseña y  pulsamos continuar (next). 

Escribimos db1, en el cuadro de entrada para el identificador de instancia de base de datos, dbadmin en el cuadro de entrada para el nombre de usuario y escribimos la contraseña en el cuadro de entrada para la contraseña.

Con esto vamos al tercer paso donde aparece una nueva página titulada Configurar página de configuración avanzada (Configure advanced settings).

SQL Server en Amazon Web Services

Especificamos una red virtual en la nube en la que queremos implementar esto. Elegimos VPC-East.  

SQL Server en Amazon Web Services
Bajamos por la pantalla hasta accesibilidad pública (Public accessibility), seleccionamos Yes para poder acceder a la base de datos desde nuestra estación local para administrar la instancia de base de datos de SQL Server. 

Podemos ver aquí que va a usar el puerto de escucha 1433, que Microsoft SQL Server normalmente utiliza. Pero no cambiamos nada aquí más, excepto que desactivaremos la protección contra eliminación. 

SQL Server en Amazon Web Services

Hacemos clic en Crear base de datos. Desactivamos la protección contra eliminación porque después de haber probado esta instancia de base de datos, queremos eliminarla rápidamente. De lo contrario, si la dejamos funcionando, incurriremos en grandes facturas mensuales por ejecutar una base de datos en la nube. 

Aparece una nueva ventana con el siguiente mensaje: Se está creando su instancia de base de datos.

SQL Server en Amazon Web Services

Pulsamos sobre el botón ver detalles de instancia de base de datos, (View DB instance details) Que nos lleva a la configuración de la instancia de la base de datos que se está creando. Al hacer clic en Bases de datos a la izquierda, vemos nuestra instancia de base de datos, db1. 

SQL Server en Amazon Web Services

Le damos unos minutos hasta que termine de crearse y después hacemos clic sobre Bases de datos en el panel de navegación. Verificamos el estado de la base de datos db1. Hacemos clic en el enlace db1 y aparece la hoja de detalles de db1 nos desplazamos hacia abajo en la hoja y copiamos la dirección del Endpoint de la parte de Conectividad (Connectivity)

SQL Server en Amazon Web Services

Después abrimos el IDE de Microsoft SQL Server Management Studio (Administrador). Y pegamos el nombre del servidor que acabamos de copiar. 

SQL Server en Amazon Web Services

Utilizamos el autenticación de SQL Server. Especificamos un ID de inicio de sesión de dbadmin y le ponemos la contraseña que hemos especificado al principio al crearla, y finalmente hacemos clic en Conectar (Connect), esto permite conectamos a la nube con nuestra instancia de base de datos de SQL Server.

Implementar una solución NoSQL en AWS

A veces, nuestros requisitos de almacenamiento de datos aconsejarán el uso de una base de datos NoSQL. si sospechamos que vamos a almacenar una gran cantidad de datos y una variedad de diferentes tipos de datos en la misma ubicación.

Implementar una solución NoSQL en AWS

Entramos en AWS Management Console (enlace a AWS in a Nutshell 1) nos desplazamos hacia abajo en la sección Base de datos y elegimos DynamoDB, que es un tipo de base de datos NoSQL.

solución NoSQL en AWS
Hacemos clic en el botón Crear tabla (Create table)

solución NoSQL en AWS

Introducimos un nombre de tabla (MiTabla)  y especificamos una clave para identificar de manera única los datos. Le ponemos ItemID como nombre, y lo marcamos como de tipo String.

solución NoSQL en AWS

Utilizaremos las configuraciones predeterminadas para esta implementación, por lo que no pondremos índices adicionales para acelerar la búsqueda. Hacemos clic en Crear (Create). Después de crear la tabla podemos cambiar los valores elegidos si lo deseamos.

NoSQL en AWS

Entonces, en este punto, vemos que nuestra tabla DocumentDB está creada a medias.

Vamos a la pestaña Items para agregar elementos a nuestra tabla definida, que en realidad es  equivalente a una fila en un tipo de tabla SQL estándar. Hacemos clic en Crear elemento (Create item). 

NoSQL en AWS

Elegimos un nombre para el objeto al que va asignando los números 001, 002 etc  y hacemos clic en Guardar(Save).  Para añadir una nueva fila pulsamos en el combo desplegable sobre añadir (Append) y elegimos el tipo de dato también.

Con NoSQL cada elemento almacenado en una tabla puede tener diferentes tipos de datos de almacenamiento. Esto significa, que cada vez que hacemos clic en Crear elemento y agregamos, digamos, un segundo ItemID de 002 de otro elemento para nuestra columnas, este elemento puede ser de un tipo diferente al anterior. Así que ahora tenemos dos elementos completamente diferentes que comparten el mismo tipo de valor de clave principal, pero eso es todo.

La clave principal debe ser única. Si hacemos clic en Crear elemento e intentamos crear un nuevo ItemID de 001 nos dará un error.


sábado, 27 de noviembre de 2021

Descenso de Gradiente, Tasa de Aprendizaje y optimización del aprendizaje profundo

El objetivo del descenso de gradiente es minimizar la función de error ajustando poco a poco los parámetros de aprendizaje representados por los distintos pesos. El descenso de gradiente se lleva a cabo mediante el ajuste de los distintos pesos de la red neuronal hasta obtener una convergencia, es decir, un mínimo de errores. Este ajuste se hace mediante pasos cortos, usando un hiperparámetro denominado tasa de aprendizaje (learning rate). 

Descenso de gradiente

El descenso de gradiente se puede definir como las derivadas parciales para un conjunto de parámetros con respecto a sus entradas, es un método iterativo que podemos usar para encontrar los valores de los parámetros de una función que tiende a minimizar el costo. Las tasas de aprendizaje juegan un papel importante en la optimización de los modelos de aprendizaje profundo.

La ilustración inferior, muestra un diagrama conceptual del descenso de gradiente y sus técnicas asociadas, algunas de las cuales veremos a continuación.

 

Descenso de gradiente

Podemos usar la Tasa de Aprendizaje y otras técnicas de optimización para optimizar el aprendizaje en modelos de redes profundas (Deep learning). Cuando queremos optimizar una red neuronal profunda, necesitamos ajustar la red durante el proceso de aprendizaje (asignar los pesos correctos a las neuronas). No podemos utilizar métodos estadísticos o analíticos para calcular el peso de las redes neuronales. Tenemos que adoptar el enfoque de sintonizar, configurar u optimizar los hiperparámetros para lograr un rendimiento óptimo en los modelos de redes neuronales profundas.

Tasa de Aprendizaje

La Tasa de Aprendizaje es uno de esos hiperparámetros que podemos configurar y ajustar para optimizar el aprendizaje. Es posiblemente el hiperparámetro más importante. Representa la cantidad de pesos que terminamos actualizando al entrenar redes neuronales. La cantidad de actualizaciones de peso durante el proceso de entrenamiento de la red neuronal también se conoce como tamaño de paso o paso. La Tasa de Aprendizaje brinda la capacidad de controlar la velocidad a la que aprenden los modelos de redes neuronales. La regla general es que una gran tasa de aprendizaje permite que los modelos aprendan más rápido, pero a costa de llegar a un conjunto final subóptimo de pesos, y esto puede afectar el rendimiento de los modelos de redes neuronales.

Una tasa de aprendizaje menor, por otro lado, permite que el modelo aprenda un conjunto de pesos más óptimo o incluso globalmente óptimo. Pero al mismo tiempo, puede llevar mucho más tiempo entrenar los modelos de redes neuronales profundas. La forma en que ajustamos las tasas de aprendizaje juega un papel importante en el rendimiento de los modelos. Y se recomienda que ajustemos las tasas de aprendizaje correctamente para lograr niveles de rendimiento mejores u óptimos a partir de modelos de redes profundas o neuronales. Las tasas de aprendizaje son un tipo de hiperparámetro que juega un papel crucial en el aprendizaje de las redes neuronales.

El entrenamiento de redes neuronales sobre todo si son profundas, puede ser una tarea de optimización muy difícil y compleja, ya que generalmente usamos diferentes tipos de algoritmos para entrenar redes neuronales. Para lograr un mejor rendimiento, podemos ajustar las tasas de aprendizaje, y este aprendizaje tiende a cambiar el proceso de entrenamiento iterativo. Existen diferentes enfoques que podemos adoptar para configurar y administrar las tasas de aprendizaje. 

El primer enfoque, consiste en disminuir gradualmente la tasa de aprendizaje en función de las épocas. Y el segundo enfoque consiste en disminuir las tasas de aprendizaje utilizando grandes caídas puntuales en épocas específicas. Aparte de estos dos enfoques, podemos adaptar otras técnicas que incluyen un ajuste de tasa de aprendizaje basado en el tiempo y un ajuste de tasa de aprendizaje basado en la caída. El uso del algoritmo de descenso radiante estocástico para la optimización implica un concepto de caída de la tasa, y la caída de la tasa representa la caída de la tasa de aprendizaje basada en el tiempo donde la tasa de aprendizaje se reduce siempre que cambia el valor de la caída. El programa de tasas de aprendizaje basado en caídas, por otro lado, es un enfoque de uso frecuente que implica reducir las tasas de aprendizaje en momentos específicos durante la fase de formación.

La mayoría de las implementaciones de este enfoque implican un programador de tasas de aprendizaje, que proporciona una capacidad de programación para reducir las tasas de aprendizaje en diferentes épocas durante el proceso de capacitación.

Existen diferentes algoritmos de optimización que podemos utilizar para optimizar los modelos de aprendizaje profundo. Y algunos son el descenso de gradiente, el descenso de gradiente estocástico, la programación de la tasa de aprendizaje y el descenso del gradiente de la tasa de aprendizaje adaptativo. El estocástico es un proceso que está estrechamente relacionado con la probabilidad aleatoria.

Descenso de gradiente estocástico

Cuando trabajamos con descenso de gradiente estocástico, seleccionamos aleatoriamente ciertas muestras, en lugar de trabajar con todos los datos en cada iteración. Durante el proceso de entrenamiento, las muestras se barajan y seleccionan para realizar iteraciones, y se calcula el gradiente de la función de costo. Dado que trabajamos con una muestra seleccionada al azar, la ruta que sigue el algoritmo para alcanzar los mínimos es menos apropiada en comparación con la del algoritmo de descenso de gradiente. Pero dado que alcanzamos los mínimos con una cantidad de tiempo de entrenamiento significativamente más corta, generalmente no tiene ningún impacto en el proceso de optimización y entrenamiento.

Con el uso del ajuste de tasas de aprendizaje, el algoritmo ajusta dichas tasas de aprendizaje durante el proceso de capacitación en función de ajustes predeterminados. Dichos ajustes pueden basarse en el tiempo, en pasos o incluso en un mecanismo de disminución exponencial. Existen ciertos ajustes asociados con las tasas de ritmo de aprendizaje. Por ejemplo, los hiperparámetros deben definirse de antemano y las tasas de aprendizaje deben aplicarse a todas las actualizaciones de parámetros.

Para manejar los problemas asociados con la programación de la tasa de aprendizaje, podemos usar el tercer algoritmo de optimización que mencionamos anteriormente, que es el descenso adaptativo de gradiente de velocidad de aprendizaje.

Descenso adaptativo de gradiente de velocidad de aprendizaje

Los algoritmos adaptativos proporcionan un enfoque automatizado de los parámetros de ajuste para las tasas de aprendizaje, y no necesitamos un ajuste manual en estos algoritmos. Hay varios algoritmos de descenso de gradiente de velocidad de aprendizaje adaptativo que podemos implementar, e incluyen Adagrad, Adadelta, RMSProp y Adam. 

 

Descenso adaptativo de gradiente de velocidad de aprendizaje


¿cuáles son los principales métodos de tasa de aprendizaje adaptativo que podemos adoptar o implementar?  Incluyen, RMSProp, AdaGrad, Adam, Adadelta y Adamax. 

RMSProp   

Video explicativo aquí

Es un algoritmo de optimización para redes neuronales. El objetivo principal de RMSProp es restringir la oscilación en dirección vertical, convirtiéndolo en uno de los algoritmos más populares que se ocupa de manera eficiente de la disminución de las tasas de aprendizaje. RMSProp se usa o implementa con frecuencia con redes neuronales recurrentes. 

AdaGrad   

Es un optimizador que involucra tasas de aprendizaje específicas de parámetros, y las tasas de aprendizaje se adaptan en función de la frecuencia con la que se actualiza un parámetro durante el proceso de capacitación. Cuanto más actualizamos un parámetro, menor es la tasa de aprendizaje.

Adam  

Es un algoritmo de optimización que podemos utilizar en lugar del descenso de gradiente estocástico clásico para actualizar los pesos de la red de forma interactiva en función de los datos de entrenamiento. El optimizador de Adam es sencillo de implementar. Es computacionalmente eficiente y requiere muy poca memoria. 

Adadelta

Es esencialmente una extensión de Adagrad, que busca reducir las tasas de aprendizaje agresivas y monótonamente decrecientes en Adagrad. En lugar de acumular todos los gradientes cuadrados pasados, Adadelta restringe la ventana de gradientes pasados acumulados a un cierto tamaño fijo.

AdaMax

Es una variante de Adam, que se basa en la norma del infinito. En AdaMax, el factor de peso en Adam actualiza las reglas y escala el gradiente de manera inversamente proporcional a la norma de regularización L2 de los gradientes pasados. Entonces, dependiendo de nuestros requisitos de automatización, podemos seleccionar el algoritmo o método correcto de entre las opciones mencionadas anteriormente e implementarlas al mismo tiempo. También observamos que la mayoría de los marcos de aprendizaje profundo proporcionan paquetes integrados 


viernes, 26 de noviembre de 2021

Activar Telnet en Windows 10

Es muy sencillo, vamos al icono de la lupa al lado del icono de windows y escribimos Activar, nos salen varias opciones, de las cuales elegimos Activar o desactivar características de Windows

                                     

Nos sale una lista, de la cual marcamos la opción Cliente Telnet y aceptamos. 




sábado, 20 de noviembre de 2021

Crear un diagrama de relación entre entidades

En esta demostración, veremos una herramienta que nos ayudará a crear un diagrama de relación de entidades, o ERD, para planificar la estructura de la base de datos. La herramienta se encuentra en el enlace https://www.visual-paradigm.com en un navegador, vamos a este sitio web donde hacemos clic en el enlace Download para descargar una prueba gratuita de 30 días. Entramos en la interfaz de Visual Paradigm, donde las pestañas de la parte superior identifican diferentes categorías de diagramas que podríamos querer crear con esta herramienta. Por ejemplo, ERD, que son diagramas de relación de entidades. Aunque si nos desplazamos hacia abajo, también tenemos otras opciones disponibles enumeradas a la derecha.  Hacemos  clic en la opción ERD. Aparece una nueva ventana con el encabezado Diagrama de relaciones entre entidades. 



Crear un diagrama de relación entre entidades
Tiene las siguientes opciones: En blanco, Álbum de fotos en línea, Alquiler de películas, etc. En la parte inferior están los botones, Next y Cancel. Podemos construir un diagrama de relación de entidades en blanco, o elegir una de las plantillas preexistentes, por ejemplo, si nos desplazamos hacia abajo, podemos elegir Bookstore Online. Podemos utilizar esta plantilla porque solo deseamos modificarla, y eso puede ser más rápido que construirla desde cero. La seleccionamos y hacemos clic en Siguiente. Le ponemos un nombre, y aceptamos. hacemos clic en el botón Next. Se abre el diagrama de tablas de la librería en línea. 

Crear un diagrama de relación entre entidades


Tiene las siguientes opciones en el panel de navegación: Cursor, Stored Procedures (Procedimientos almacenados), Triggers (Disparadores), etc. En el centro hay un diagrama de flujo de varias entidades como: Author, Book, Publisher, etc. Book está conectado al  Publisher,  Author, ShoppingBasket_Book y Warehouse_Book. Warehouse_Book está conectado a Warehouse. ShoppingBasket_Book está conectado a ShoppingBasket y ShoppingBasket está conectado al Customer. Podemos ver las diversas entidades. Esto sirve para diseñar la estructura de una base de datos, donde cada una de estas entidades, como las llamamos, representan una tabla de base de datos. Y dentro de cada una de ella, tenemos varias columnas. En el ejemplo de Publisher aquí, la tabla Publisher, tiene una columna Name que se define como  Primary Key (clave principal). Podemos verlo porque tiene una llave dorada. 


Crear un diagrama de relación entre entidades : Primary Key
Todo lo que debemos hacer para configurarlo es hacer clic derecho sobre el campo y luego incluir el campo en la clave principal. 

En el diagrama tenemos varias entidades o tablas. Esto define una estructura de base de datos. Por ejemplo, en la tabla Publisher, tiene una serie de columnas como Name, Adress, Telephone, URL.  Podemos realizar cambios en cualquiera de estos elementos. Por ejemplo, si hacemos doble clic en el nombre de una tabla en la parte superior, la selecciona y podemos escribir un nombre nuevo. 

Crear un diagrama de relación entre entidades: Modificar una tabla

Crear un diagrama de relación entre entidades: Modificar un campo


Lo mismo ocurre con una columna. Podemos cambiar lo que queramos. Por ejemplo, podría hacer clic con el botón derecho y escribir un nombre que deseemos. Cuando hacemos clic con el botón derecho en una columna, si elegimos Open Specification podemos determinar el tipo de datos de la lista desplegable Type. 

También podemos agregar nuevos elementos. Y también si estamos construyendo un diagrama de relación de entidades desde cero, podemos hacer clic con el botón derecho y hacer todo manualmente. Si hacemos clic derecho sobre una parte vacía del diagrama, y elegimos add Shape y luego Entity. De modo que se crea una nueva entidad (futura tabla de una base de datos)  

Crear un diagrama de relación entre entidades: Añadir nueva tabla


Una vez creada la tabla podemos definir columnas las columnas, si hacemos clic derecho dentro de esa tabla, podemos elegir New Column. 

Crear un diagrama de relación entre entidades: Nueva columna

Si hacemos clic derecho sobre la columna y elegimos Open Specification sale una lista desplegable donde podemos elegir por ejemplo el tipo de datos de la columna. 

Crear un diagrama de relación entre entidades: Nueva columna

Crear un diagrama de relación entre entidades: Incluir primary key

Crear un diagrama de relación entre entidades: Primary Key

También podemos hacer clic derecho sobre él y configurarlo como clave principal. 

Incluso tenemos la opción, de vincular estas columnas para establecer una relación. Por ejemplo, si colocamos el cursor sobre una tabla existente como Publisher. 

Crear un diagrama de relación entre entidades: Relaciones entre tablas


Contiene un icono que podemos usarlo para arrastrar una línea a la otra tabla. Y determinar si existe una relación de uno a uno con las filas de cada una de esas tablas, o de uno a muchos. Digamos que es uno a muchos.  Aparece una ventana emergente con 4 opciones de iconos de vinculación como: Relación uno a uno, Relación uno a muchos, etc. Hacemos clic en el icono que nos interese (en este caso Relación uno a muchos) y  aparece una ventana de especificación de relación. 

Crear un diagrama de relación entre entidades: Relaciones entre tablas


Tiene dos pestañas: Foreign Key Column Mapping (Asignación de columna de clave externa)  y General, donde se selecciona Asignación de columna de clave externa. Ahora, determinamos las columnas específicas que queremos vincular. Debajo en el combo se nos muestra la lista de columnas que podemos vincular con la clave principal en la tabla de Publisher, y podemos determinar a qué columna queremos  vincular nuestra tabla.

Podemos continuar con esto en el diseño de la estructura para nuestro almacenamiento de datos, y esto es parte de la arquitectura de datos. Hay muchas otras herramientas que hacen esto además de Visual Paradigm.

Si vamos al menú Herramientas en la parte superior y luego elegimos DB para base de datos. Y luego elegimos Configuración de la base de datos, podemos decirle que queremos hacer una conexión a un tipo específico de base de datos.

Crear un diagrama de relación entre entidades: Elegir base de datos

Crear un diagrama de relación entre entidades: Elegir base de datos


Hacemos clic en la opción Configuración de base de datos. Y sale un menú desplegable con el lenguaje de programación, en este caso está seleccionado Java y aparece una ventana que muestra: la Versión, el Driver, User, Engine, etc. y los botones de  Importar, (Import)  Exportar /Export), en la parte inferior.

Digamos que elegimos .NET como idioma, y Microsoft SQL Server. Podemos especificar el nombre del host. Así que la identidad de ese servidor a través de la red con un nombre de usuario y contraseña y prueba la conexión. 

Crear un diagrama de relación entre entidades: Probar la conexión

A la derecha está la Configuración de la base de datos con varias opciones. Nombre de la base de datos, nombre de usuario y contraseña. Justo debajo, hay un botón llamado Probar conexión. (test Connection) Nos encontraremos con muchas de estas herramientas no solo nos permitirán diagramar la relación entre nuestras entidades, las tablas de nuestra base de datos. En realidad, crearemos un sistema de base de datos dado, ya sea MySQL, Microsoft SQL Server, Oracle, DB2, etc. Por lo tanto, es importante tener una herramienta para realizar varios tipos de planificación de la arquitectura de datos en la empresa.