Translate

martes, 2 de julio de 2024

K-means cluster - How to choose K

 One key step in K-means clustering is deciding on the number of clusters. Ideally, the data itself should guide us on the optimal number of groups.

There are several ways to detemine the number of cluster

This is what we want to achieve in a picture with our groups:


Elbow criterion

The elbow criterion helps us achieve this. It plots the ratio of within-cluster variance to between-cluster variance against the number of clusters. We want this ratio to be low, indicating tight clusters and high separation between them.

In a graph: 

It looks like this:


As we increase the number of clusters, this ratio initially drops significantly. However, there comes a point where adding more clusters doesn't lead to a substantial improvement. 

This point, known as the "elbow," is considered the ideal number of clusters.

More information about the elbow criterion

https://en.wikipedia.org/wiki/Elbow_method_(clustering)

domingo, 23 de junio de 2024

Customer segmentation with K-Means

 Today, let's unravel the magic of K-Means clustering, your trusty tool for discovering those hidden gems within your marketing data.

What's K-Means Clustering, you ask?

Think of K-Means as a way to group similar data points together, helping you uncover those underlying patterns that might not be obvious at first glance. It's like sorting your favorite candies into different piles based on their flavors – except in this case, we're using customer data like demographics or location.

How Does It Work?

  1. Choose K: First, you need to decide how many clusters (K) you want. It's like deciding how many candy piles you'll have! We'll talk about how to find the perfect K later.
  2. Random Centers: Imagine randomly picking K candies as the starting centers for your piles. That's what we do with your data – randomly select K points as the initial cluster centers (centroids).
  3. Calculate Distances: Now, measure the distance between each data point (candy) and each center (pile). We use the Euclidean distance formula (don't worry, it's not as scary as it sounds!).
  4. Group Them Up: Assign each data point to the closest center, creating your clusters!
  5. Find New Centers: Re-calculate the center of each new cluster (like finding the average position of all the candies in a pile).
  6. Repeat: Keep repeating steps 3-5 until your clusters stop changing much. You've found your final clusters!

Validate Your Clusters:

  • Check the Variance: How tightly packed are the data points within each cluster? Low variance is good, like having candies that are all very similar in flavor within each pile.
  • Dunn Index: This fancy index measures both the tightness of your clusters and how far apart they are. Aim for a high Dunn Index – it means your clusters are well-defined and distinct.

Remember:

  • K-Means is just a tool, not magic! You'll need to use your marketing expertise to interpret the clusters and give them meaningful names.
  • I´ll cover how to find the best K and name your segments in upcoming posts.

martes, 24 de octubre de 2023

Introducción a Vertex AI y las herramientas que lo componen

 Listado de herramientas que encontramos en Vertex AI

De un vistazo podemos ver en esta tabla de las diferentes herramientas que están contenidas dentro de Vertex y que nos ayudan a crear nuestros modelos de forma más fácil desde las soluciones No code a los servicios para entrenar  y desarrollar estos


Para más info y acceso al servicio en Google Cloud: https://cloud.google.com/vertex-ai/



jueves, 17 de agosto de 2023

Descargar videos y cursos de Coursera a nuestro PC

Espero que no os hayais encontrado en la situación de encontraros sin datos en esta 'epoca de confinamiento. Hace unas semanas yo me encontré con este tema. 
 
Coursera es mi sitio favorito para aprender nuevas cosas y he sido usuaria desde tiempos inmemorables. Tenemos un montón de MOOC donde aprender de todo y cada vez en más idiomas.

Qué son los MOOC

Los MOOC son cursos masivos abiertos. Como mundo capitalista que somo muchas universidades han aprovechando para monetizar los contenidos que abren y si quieres un certificado para muchos de esos cursos debes de pagar. Pero, hemos venido a aprender no?

El primer curso que completé fue uno de HCI (Human Computer Information) de la Universidad de Standford.El profe después se fue a California y se llevó su MOOC con él. Era inimaginable toda la gente que nos juntábamos ahí para aprender. De todos los países, con nuestra media lengua en inglés. 

He de decir que el profesor le echaba horas y muchas ganas. Era un continuo aprender para él y para nosotros Más tarde empezaron a ofrecer el curso en espanol. Yo hice este curso dos veces, aprovechando además los recursos en castellano, ya que lo más valioso eran las peer reviews. Igualmente muchas empresas de software suelen tener convenios y te dejan usar este software.

Así descubrí balsamiq y otro software de prototipado algo más complejo pero que ayudar a los clientes a ver cómo quedaría esta página. 

Hace unos años crearon una app donde puedes descargarte lecciones. Lo cual está bien, pero sinceramente no quiero ver los videos ni las lecciones en el móvil, yo soy mucho más de PC. 
Así es como me veo mientras escribo esto.




Así que volviendo a esto, confinada, sin conexión a Internet en casa, movil roto (ah olvidé esto). Qué podemos hacer.

Tachán (no, no tengo Chromecast)

En caso de que esteis en ese caso y no queráis tirar de datos y toquéis algo de Python aquí tenéis un script para hacerlo. Debemos seguir unos sencillos pasos para hacerlo.

Pasos que vamos a seguir

Para simplificarlo necesitamos en caso de que tengamos un ordenador windows.
  1. Chrome navegador
  2. Instalar en Chrome cookies.txt
  3. Estar inscritos en el curso que queramos descargar. aunque sea en la modalidad auditoria (audit)
  4. En windows- Abrir CMD
En mi caso quiero descargar este curso que Google además ofrecía gratis.
Machine Learning for Business Professionals

Esta es la dirección web :

Descargar cookies


Si tenemos chrome lo primero debemos instalar una extensión que se llama cookies.txt


Y tras esto, vamos  a visitar la página del curso de coursera y descargar las cookies. Primero pulsamos el icono y después en el texto que nos aparece a lo pop up le damos a descargar cookies.




Corriendo el script para descargar el curso de Coursera

Si estamos en windows debemos abrir CMD  y pegar en mi caso
dl_coursera --cookies /Users/Maria/Downloads/cookies.txt  
--slug machine-learning-business-professionals --outdir mt --how builtin

vale, que debes cambiar aquí:

--cookies xxxx-direccion-donde-tenemos-descargadas-las-cookies-de-coursera-xxxx
Aquí debes poner la dirección donde están las cookies)
--slug xxxx-url-especifica-del-curso-xxxx
Aquí pondrás la dirección del curso
--outdir xxxxxxxx
Aquí el nombre del directorio donde se descargará

Resultado : Ya tenemos los videos en nuestro ordenador

Y et voilá aquí tendremos nuestro cursos con sus videos y materiales
 

Espero que sea de ayuda en tu camino al aprendizaje.

Este curso además aunque tiene ya varios años es super útil para entender los beneficios para las empresas.

jueves, 8 de junio de 2023

Crear un modelo de regresión linear en BigQuery ML- GCP

Una de las cosas que mas me ha llamado la atencion al ponerme con Google Cloud platform y especialmente BigQuery (que es la joya de la Corona) es la posiblidad de hacer modelosusando SQL. Después de tan tiempo aprendiendo R y luego Python, ahora resulta que en BigQuery los debes hacer en SQL. 

Bueno, pues nada, parece un poco fuera de lugar pero allá vamos. En el curso una cosa que he echado en falta ha sido el hecho de que apenas se explican que hacen los ejercicios. En decir te explican la forma, pero no el porqué. Aunque entiendo que un ingeniero de datos no debe saber tanto de como hacer los modelos, a mi parece queda un poco cojo hacer un copia y pega sin saber en realidad lo que hace el código. Sobre todo si vienes de Software Engineering, y no sabes ni como funcionan los modelos.
Así que aquí estoy yo para intentar dar un poco de luz a esto.
Además a mi me resultó especialmente fácil porque para mi dissertation yo hice un modelo parecido. (si es que está todo inventado... larga vida al Machine Learning)

A la hora de crear un mdoelo, lo primero que tenemos que hacer es éntrenar nuestro modelo. Para eso vamos a usar una parte de nuesta muestra para entrenarlo(un porcentaje) y luego lo aplicaremos al total para ver si se puede extrapolar.

En cuanto al código que nos da para el ejercicio Google Cloud

Aquí ya vamos a crear un modelo que se llamará bike model. 

// Query train a model
CREATE OR REPLACE MODEL
  bike_model.model

En Options le vamos a meter las variable target. Es decir la que queremos predecir y además le vamos a decir el tipo de algortimo que vamos a usar. En este caso vamos a hacer una regresion lineal
 
OPTIONS
  (input_label_cols=['duration'],
    model_type='linear_reg') 

Para hacer la regresión lineal  vamos a seleccionar además otras variables llamadas independientes. En este caso vamos a seleccionar la duración, el dia de la semana y la hora.
Si no estás muy puesto en SQL te puede resulta raro el tema CAST que se mete por ahí en medio.Es una sentencia avanzada del lenguaje que se usa para cambiar el tipo de variable.En este caso las dos variable las convertimos a string y las llamamos como dayofweek y hoursofday. Las dos las convertirmos desde start-date  
AS
SELECT
  duration,
  start_station_name,
  CAST(EXTRACT(dayofweek
    FROM
      start_date) AS STRING) AS dayofweek,
  CAST(EXTRACT(hour
    FROM
      start_date) AS STRING) AS hourofday
FROM
  `bigquery-public-data`.london_bicycles.cycle_hire

Y para terminar con el from elegimos el dataset que estamos usando. 
Espero que esto sirva para dar un poco más de luz en BigQuery. Todos los derechos reservados a Google que son los que han escrito el código.

En caso de que quieras saber que pasa una vez que le das a run. BigQuery te calculos los cohefientes como si hubieras usado cualquier libreria de DataScience en R o Python. Te lo saca en su tablita y así puedes ver si funciona tu moledo o si debes seguir trabajando en el.

Seguiremos informando
Otros link a checkear

viernes, 20 de enero de 2023

Framework para EDA y como automatizar en Python el análisis exploratorio

 Antes de ponernos a hacer algún modelo o análisis y más allá de las herramientas que vamos a utilizar nos va a tocar familiarizarnos con los datos y ver que tipo de modificiones debemos hacerle antes de tenerlos listos 
Para ello existe un tipo de análisis EDA: Análisis de datos exploratorio. 
Lo que podemos definir que entra dentro de este análisis va a depender de las necesidades del dataset y de las preguntas que tenga el negocio, Lo que si es cierto es que una vez hecho uno, podemos reutiliar formulas para aplicarlo al resto de análisis.Sobre todo la parte de visualización  
Así que podemos definir un framework para transformar esos datos

Framework para realizar el análisis exploratorio

Podemos así ver 5 fases que pueden ser iterativas:

Data Sourcing

De dónde vienen los datos, tenemos que modificar el tipo de variable o la codificación? 

Data Cleaning

Existen valores nulos? Debemos eliminar valores atípicos, valores duplicados.

Univariate analysis

Cómo se distribuye cada una de las variables? Valores máximos y mínimos, ...

Bivariate analysis

Existe correlación entre dos variables. Una variabe ayuda  a predecir a la otra?

Multivariate analysis

Y cómo se comportan estas variables en su conjunto? Podemos añadir nuevas variables a partir de las que ya tenemos?

Automatización del análisis exploratorio en Python

Pues visto así esto nos puedo llevar bastante tiempo, pero se irá una inversión a medio plazo. Como comentaba más arriba gran parte del análisis exploratorio para el análisis de datos se puede automatizar. 

df.describe()

Y sobre todo visualizando las variables usando numpy y pandas con seaborn

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt


Librerias para la automatización del EDA en Python

Hasta la fecha ya tengo en mi bookmark tres librerias que automatizan esta parte. Sobre todo a mi me parece útil para hacer visualización tras transformar datos o creas nuevos. Estas librerias también se puede utulizar para comparar los datos que tenemos en nuestros train dataset de forma muy rápida. 
Las tres librerias que comento aquí hacen uso de tan sólo 2-3 líneas de comando.

Por mi orden de preferencia:
  1. 1. Pandas profiling, que nos da un informe de spoiler como este. Aunque los comandos avanzados no son muy avanzados, aquí tienes como instalar esta librería en Python
  2. 2. Dataprep 
  3. 3. Sweetviz, que es más ligero de pandas profiling

Quiero saber más sobre EDA!!

lunes, 26 de septiembre de 2022

HOW-TO: SQL When to use USING instead of WHERE - SQL INTERMEDIATE

 Visto en Leetcode:

https://leetcode.com/

Problema: 

Dadas dos tablas con IDs de usuario queremos saber el nombre y el id de usuario con su id único.


Además queremos que aparezcan los nulls

Explicación:

En un primer momento lo más fácil sería pensar en usar un LEFT JOIN o un RIGHT JOIN

Sin embargo tenemos una claúsulas que nos puede ayudar a simplicar el código creada para estos casos concretos y sería USING

SELECT unique_id, name 

FROM Employees e

LEFT JOIN EmployeeUNI u ON e.id = u.id


Por qué usar USING en SQL

Using hace más legible el código y además nos ayuda a prevenir problemas más complejos.

Cómo usar USING en SQL

# Write your MySQL query statement below
SELECT unique_id,name
FROM Employees
LEFT JOIN EmployeeUNI
USING(id)