Después de haber comenzado nuestro entrenamiento sobre los datos y sus características, y más específicamente, los conjuntos de datos para aprendizaje de máquinas, es momento de atravesar un sendero más sosegado y conocer los principales lugares y métodos que pueden proveerte conjuntos de datos para la realización de tus proyectos en ámbitos académicos, laborales, o incluso personales.
Equipaje recomendado
En esta exploración solo es recomendable tener presentes las generalidades sobre conjuntos de datos mostradas en las últimas dos sesiones:
Nociones sobre conjuntos de datos
Algún refrigerio como acompañamiento
¿Cómo obtener conjuntos de datos para machine learning?
Existen varias maneras de adquirir conjuntos de datos para todo tipo de proyectos que varían de acuerdo a las fuentes de información, a quiénes extraen esa información, y a su disponibilidad.
Antes de mostrar los lugares de donde podemos obtener conjuntos de datos, explicaremos cómo se clasifican de acuerdo a su origen y forma de obtención:
- Datos de primera mano (First Party Data).
- Datos de segunda mano (Second Party Data).
- Datos de terceros o de tercera mano (Third Party Data).
First Party Data
Los datos de fuente primaria, de primera mano, o first party data, son los conjuntos de datos recabados mediante medios propios por la misma persona, conjunto de personas, o asociados que pretenden utilizarlos, sin acudir a datos obtenidos por gente u organizaciones externas.
Estos datos se recolectan por las vías que se tienen a la mano, interactuando directa o indirectamente con las entidades o fenómenos de los cuales se obtiene la información.
Así es, todo conjunto de datos que son recolectados de forma interna son de este tipo, se obtienen de registros/mediciones con herramientas propias y por parte de personas involucradas en el proyecto.
Para reforzar esta definición, te dejaré algunos ejemplos segmentados por tipos de proyectos.
Ejemplos de First Party Data para proyectos empresariales
Cuando se trata de organizaciones que buscan conjuntos de datos para satisfacer objetivos comerciales, estos son algunos ejemplos de first party data:
- Datos recabados de visitas de usuarios a una aplicación o página web propias mediante una herramienta de medición.
- Datos sobre ventas de productos y/o servicios, provenientes de los registros de los mismos vendedores en tiendas físicas.
- Datos sobre reseñas de un hotel, obtenidos de las opiniones dejadas en su buzón físico y página web.
- Datos sobre películas de terror más vistas en un servicio de streaming, recolectados de mediciones realizadas por la misma plataforma.
Ejemplos de First Party Data para un proyecto académico o científico
Toda investigación científica requiere de información sobre su objeto de estudio. Algunos ejemplos de conjuntos de datos de primera mano para estos fines son:
- Imágenes de resonancia magnética para estudiar alguna enfermedad neurológica, obtenidos directamente de voluntarios, y registrados por el equipo de investigadores involucrados.
- Datos sobre objetos astronómicos recogidos personalmente por el equipo de astrónomos que los utilizará, con telescopios y espectroscopios.
- Videos sobre conductas de animales para estudios biopsicológicos, tomados por el mismo científico que los estudia.
Ejemplos de First Party Data para un proyecto personal
En lo personal, puedes tener interés en desarrollar un proyecto de ciencia de datos para resolver algún problema, o por simple pasatiempo. Este tipo de actividades pueden ser recopiladas en un portafolio, el cual es cada día más valorado por las empresas en el ramo de la ciencia de datos, y que puedes crear en plataformas como GitHub o Kaggle.
Ejemplos de first party data para este tipo de proyectos son los siguientes:
- Conjunto de datos de todas las fotos de tus familiares, tanto físicas como digitales, las cuales recabas para luego entrenar un algoritmo de inteligencia artificial de reconocimiento de rostros.
- Información sobre textos publicados en una página web, la cual obtienes haciendo web scraping.
- Conjunto de datos de publicaciones tuyas en una red social, obtenido mediante el uso de una API, y que utilizas para hacer un análisis.
Estos ejemplos te servirán como un atisbo a las posibilidades que tienes para obtener información para todo tipo de proyectos, y de las técnicas que puedes emplear para este fin.
Esos son algunos de los métodos más utilizados para obtener conjuntos de datos de medios digitales, lo hablaremos casi al final con un poco más de detalle, pero antes daremos una rápida mirada a los datos de segundos y terceros.
Second party data y third Party data
Los datos de fuentes secundarias, de segunda mano, o second party data son aquellos conjuntos de datos que se obtienen de otras personas u organizaciones, quienes los recolectaron utilizando sus propios recursos (es decir, para ellos son first party data), y se suelen intercambiar, vender, o hacer públicos, dependiendo de la entidad que los posea.
Los datos de fuentes terciarias, de tercera mano, o third party data, son conjuntos de datos también provenientes de forma externa, pero que no fueron recolectados directamente por sus proveedores. Se obtienen indirectamente de individuos o grupos dedicados a la obtención y distribución de información, principalmente para su comercio. La Figura 2.4.1 ilustra estas relaciones:
¿De dónde obtener conjuntos datos?
Ahora que hemos entendido que los conjuntos de datos pueden ser recolectados personalmente u obtenidos de fuentes ajenas, y cuál es la denominación asignada de acuerdo a su origen, podemos avistar algunos lugares clave de dónde obtenerlos.
Existen varios sitios web que venden datos (o los medios para conseguirlos) como Bright Data, Data & Sons, o DataStock, pero aquí nos enfocaremos en conjuntos de datos gratuitos (públicos), porque los hay de fuentes confiables, y porque nos servirán principalmente para poner en práctica nuestros conocimientos en aprendizaje automático.
Conjuntos de datos públicos (open data)
En la web hay varias páginas que ofrecen una cantidad enorme de datos gratuitos, documentados y listos para ser descargados. Aquí te enlisto las más conocidas por su variedad y accesibilidad.
Mejores páginas para obtener conjuntos de datos (datasets) gratuitos:
- Kaggle (el más recomendado y fácil de explorar).
- UCI – machine learning repository.
- Google Data Search.
- Data Hub.
- VisualData.
- Carnegie Mellon University.
- Awesome Public Datasets.
- Páginas gubernamentales como el INEGI en México, o Data.gov de Estados Unidos.
Además, existen proyectos científicos cuya información recolectada es pública, como Earth Data de la NASA u opendata del CERN; te recomiendo buscar tipos de datos específicos en la red, y encontrarás varias opciones. También puedes obtener conjuntos de datos más especializados, no públicos pero que solo requieren solicitudes sencillas para su adquisición, como es el caso de IDA y OASIS, que son recursos con conjuntos de datos neurológicos a los que personalmente he accedido con fines académicos.
Las anteriores son formas de obtener second y third party data; ahora hablaremos brevemente de dos técnicas muy comunes para la obtención de datos de primera mano de páginas web y aplicaciones móviles.
Nota: puedes consultar una lista más extensa de repositorios de conjuntos de datos en kdnuggets.com.
Web scraping
El web scraping es una técnica cuyo fin es la extracción de datos de páginas web. Para lograr esto, se crean programas que «navegan» la web y toman datos de partes específicas de esta.
El arte en esta metodología se encuentra en la forma en que se señala en dónde buscar y extraer la información, ya que esto implica no navegar la web como estamos acostumbrados a hacerlo, sino en explorar fragmentos de códigos específicos en el backend de dicha página (dicho de otra forma, consiste en decir a la computadora en qué partes del código que da estructura a la página están los datos que necesitas).
En realidad es más sencillo de lo que parece, sobre todo con las herramientas actuales. Solo es necesario contar con algunos conocimientos de HTML y/o CSS, y puedes utilizar Python con librerías como Beautiful Soup, Scrapy o Selenium, y puedes empezar a hacer tus pruebas en Google Colab.
Consumo de APIs
Por último, hablaremos sobre las APIs, las cuales son ampliamente utilizadas para la extracción de información, y muchas veces son provistas por los mismos creadores de las aplicaciones y páginas web.
Una API es una interfaz de programación de aplicaciones, lo cual es, en pocas palabras, una forma de comunicación entre diferentes softwares mediante protocolos relativamente sencillos.
Una API (en específico, una API Web) permite establecer comunicación para extraer información de plataformas web como Facebook, Google, Netflix o Spotify, y pueden ser consumidas mediante diversas aplicaciones y lenguajes de programación, dentro de los cuales también se encuentra Python.
Las APIs de empresas grandes, como las antes mencionadas, generalmente son elaboradas y lanzadas por las mismas empresas, por lo que la información que arrojan es confiable, y la comunicación suele ser sencilla y estar bien documentada.
Un ejemplo de uso de una API, es utilizar la API de Google Maps para obtener reseñas de sitios web, o la API de Instagram para recolectar información de likes y comentarios de publicaciones.
Si quieres ver un ejemplo mucho más detallado, puedes echar un vistazo al tutorial para utilizar la API de Spotify con Python.
Como menciona Mmerf, lo concerniente a la extracción de datos puede corresponder más a otras áreas dentro de una organización; sin embargo, es mucho mejor estar familiarizados con estas técnicas para ser conscientes de los posibles orígenes de nuestros datos, y para hacer uso de estas en caso de necesitarlas.
Con esto concluimos una de las últimas partes de nuestro entrenamiento en conjuntos de datos, en nuestro próximo destino, nos adentraremos en el ciclo de vida de los datos, lo cual nos introducirá y guiará finalmente hacia el análisis exploratorio y preprocesamiento de datos con Python.