Mostrando entradas con la etiqueta Algoritmos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Algoritmos. Mostrar todas las entradas

lunes, 6 de febrero de 2012

Inteligencia Artificial: Árboles de Decisión (III)


Después de la introducción que hice en la primera parte de este post y la explicación de la técnica en la segunda parte, en este último post os voy a explicar con pseucódigo el algoritmo en sí para crear un árbol de decisión.

El pseucódigo para crear un árbol de decisión es el siguiente:

ID3(E,A,X){
Si (A == vacío or MismaClase(E)) entonces Clase(X) == Clase(Mayoría)
sino
    Am = MejorAtributo(A)
    Para cada valor v de Am:
          N = CrearNodo(Am,v)
          hijos(X) = hijos(X) + N
          Em = ejemplos(E,Am,v)
          ID3(Em,A-Am,N)   
Devolver X
}

La explicación del algoritmo es la vista en la segunda parte de este post. Se crea una función que consiste en construir un árbol de decisión que en función de un ejemplos de entrenamiento E, y unos atributos A nos permita clasificar ejemplos futuros.

martes, 17 de enero de 2012

Algoritmia: Quicksort


El algoritmo Quicksort es un algoritmo de ordenación muy conocido que se caracteriza por su rápidez. Es un algoritmo recursivo encuadrado dentro de las técnicas de "divide y vencerás". Aunque hoy en día, la mayoría de lenguajes ya proporcionan en sus librerías funciones de ordenación, es necesario saber como funcionan este tipo de algoritmos ya que nunca se sabe cuando nos pueden hacer falta.

El funcionamiento del algoritmo consiste en ordenar los elementos de una lista en base a un elemento llamado pivote. En cada llamada a la función se elige un pivote y se ordenan los elementos de manera que a un lado queden todos los elemento menores que el pivote, y al otro lado queden los mayores. Se aplica el mismo proceso recursivamente a cada una de las sublistas generadas a cada lado del pivote. Los pasos a seguir son:

lunes, 16 de enero de 2012

Cursos gratuitos de la Universidad de Standford

Tanto la Universidad de Standford como la de Berkeley han publicado una serie de cursos gratuitos online en los que cualquiera puede inscribirse. Tienen muy buena pinta y sin duda nos servirá para ampliar nuestros conocimientos de mano de los mejores.

Los cursos abarcan distintos campos desde la Ingenieria del Software, Inteligencia Artificial o Emprendimiento.

Los cursos empiezan ahora en enero y febrero. Podéis inscribiros en ellos simplemente indicando vuestro nombre y email.

Os dejo el enlace al curso de Ingenieria de Software, pero al final de la página encontraréis los enlaces a los distintos tipos de cursos.

Imagen: http://www.saas-class.org/

viernes, 13 de enero de 2012

Inteligencia Artificial: Árboles de Decisión (II)


Después de la introducción a los árboles de decisión que hice en el post Árboles de Decisión (I), en esta segunda parte explicaré en que consiste el algoritmo; en concreto la versión ID3.

Como comentamos en la primera parte del post, el algoritmo consiste en crear un árbol de decisión a partir de unos datos o ejemplos de entrenamiento para posteriormente poder usar dicho árbol para clasificar o predecir nuevos datos. Por lo tanto el algoritmo va a tener una serie datos de entrada y de salida:

jueves, 5 de enero de 2012

Inteligencia Artificial: Árboles de Decisión (I)


En Inteligencia Artificial (IA) los Árboles de Decisión son una técnica encuadrada dentro del Aprendizaje Automático, el cual es un campo de la IA que estudia los procesos o técnicas que permiten al software "aprender" o adquirir conocimientos que le permitan resolver problemas en un futuro, o bien adaptarse a partir de la experiencia.

Simplemente o haré una pequeña introducción de en qué consisten los Árboles de Decisión dejando el detalle de su funcionamiento par la segunda parte de este post.

Los Árboles de Decisión (AD) son una técnica inductiva mixta que consiste en crear una estructura de árbol que clasifique una serie de datos iniciales en determinados grupos o clases de forma que a posteriori pueda clasificar nuevos datos que le sean presentados. Es decir, a partir de una serie de datos iniciales se crea una estructura de árbol que permitirá clasificar o predecir a que clase o grupo pertencen los datos que se presenten en un futuro. Precisamente su nombre indica su funcionamiento: cuando se le presenta un dato al algoritmo, éste lo va procesando por cada nodo de árbol y "decide" la rama del nodo por la que continuar en función de cómo decida clasificarlo.