Proceedings Template - WORD

Transcription

Proceedings Template - WORD
Realización de un Estimador de Quinielas con un
Perceptrón
Raúl Sesmero Ramos
Iñigo Ucero Aristu
Universidad Carlos III de Madrid
NIA 100032778
Universidad Carlos III de Madrid
NIA 100033032
[email protected]
[email protected]
OBJETIVO
A continuación describimos las características y objetivos que se
van ha hacer frente en este estudio. Mediante la técnica de
minería de datos pretendemos realizar un programa que sea capaz
de estimar los resultados de una quiniela. Para simplificar el
proyecto, vamos a tener en cuenta tan sólo los resultados de
primera división.
Herramientas utilizadas para el estudio:
Matlab [Programa y lenguaje de programación]: Utilizamos este
programa para realizar los cálculos y algoritmos que vamos a
necesitar. Hemos programado funciones con esta herramienta de
manera que toda la información necesaria en el estudio la
sacamos de sus resultados. Con Matlab hemos obtenido los pesos
del perceptrón, hemos validado los datos, y los hemos testeado.
Microsoft Excel [Programa]: En este caso hemos hecho uso de
Excel para obtener los datos de entrenamiento y validación para el
perceptrón.
Términos Generales
Lo que pretendemos realizar con este estudio, es un programa que
sea capaz de predecir quinielas deportivas. Para ello hemos
implementado un perceptrón monocapa que entrenamos con
resultados históricos de los partidos.
1. INTRODUCCION
“La minería de datos comprende una serie de técnicas,
algoritmos y métodos cuyo fin es la explotación de grandes
volúmenes de datos de cara al descubrimiento de información
previamente desconocida y que pueda ser empleada como ayuda
a la toma de decisiones.”
En nuestro caso, reducimos este volumen de datos para
simplificar, ya que hemos tenido que introducir los datos a mano.
Si quisiéramos diseñar un programa más potente, realizaríamos el
proyecto con datos de primera y segunda división, además de un
número más exhaustivo de variables, que definiera mejor el
entorno.
Para realizar predicciones utilizamos algoritmos supervisados.
Algoritmo supervisado: “Dado un conjunto de ejemplos en la
forma de pares (entradas, salidas), encontrar las reglas que
mejor modelan la relación entre las entradas y las salidas”. El
algoritmo supervisado que vamos a usar es el del perceptrón, cuya
regla que relaciona las entradas con las salidas es el vector de
pesos.
Vamos a ver a continuación como ha sido la realización de este
perceptrón monocapa. Para ello nos fijamos primeramente en las
variables de entrada y de salida que hemos obtenido, y
explicamos su función y la manera de obtenerlas. A continuación
detallamos como hemos realizado el entrenamiento de los pesos
del perceptrón, decisiones tomadas, y la aclaración de estas
decisiones.
Posteriormente realizaremos unas pruebas específicas que nos
ayudarán a comprender mejor el funcionamiento del perceptrón, y
a definirlo de manera más efectiva.
Como parte principal del estudio, explicaremos los resultados
obtenidos, los esperados, y todas las conclusiones obtenidas.
Finalmente aportaremos soluciones que podrían haberse
implementado etc.
2. VARIABLES DE ENTRADA
Como explicamos anteriormente, para la realización de nuestro
perceptrón hemos definido unas variables de entrada que
ayudarán a caracterizar la salida. En total usamos 26 variables,
que detallaremos a continuación. Con esta cantidad de variables
esperamos obtener una buena respuesta, y gran caracterización de
cada muestra. Una de las cosas que vamos a probar, y nos
ayudarán a realizar un mejor estudio, es que probaremos con
distintos conjuntos de variables de entrada para ver como es el
resultado.Vamos a clasificar las variables en variables a corto
plazo, y variables a largo plazo.
Las variables a largo plazo ayudan a conocer la trayectoria
histórica del equipo, aportando información de la influencia que
ha ejercido sobre otros equipos, así como la influencia sobre el
equipo al que se enfrenta. Estas son:
•
Equipo Local: Hemos clasificado todos los equipos que
están en primera división por orden alfabético y
asociando a cada uno un número de 1 a 20, de manera
que sea más útil a la hora de utilizarlos en el perceptrón.
Esta variable representa al equipo que juega en casa
•
Equipo visitante: El equipo contra el que se enfrenta. La
clasificación es la misma que en el apartado anterior,
cada equipo lleva un número que lo diferencia.
•
Estadísticas históricas del equipo local frente al
visitante: Son tres variables que dan respectivamente las
probabilidades de ganar, de empatar y de perder que
tiene el equipo local frente al visitante. Estas las hemos
calculado dividiendo el número total de partidos
ganados, empatados o perdidos derivados de los
enfrentamientos de ambos equipos, entre el número
total de partidos jugados entre los dos.
•
Estadísticas históricas del equipo visitante frente al
local: Las mismas variables que los anteriores, pero esta
vez invertidas. Hemos observado que al ponerlas, da un
mejor resultado en la estimación.
•
Estadísticas históricas del equipo local: Son las
probabilidades históricas de ganar, empatar o perder del
equipo local frente a todos los equipos que están
actualmente en primera división.
•
Estadísticas históricas del equipo visitante: Iguales que
las anteriores pero para el equipo visitante.
4. PERCEPTRON
Como hemos dicho anteriormente hemos implementado un
perceptrón para decidir el resultado de la quiniela, calculando los
pesos y realizando la validación de los mismos. Dicho perceptrón
utiliza un algoritmo supervisado para el cálculo de los pesos.
Vamos a ver en la siguiente figura como sería un perceptrón
monocapa:
Las variables a corto plazo influyen sobre los resultados
aportando la información de la trayectoria actual del equipo. Este
tipo de variables son las siguientes:
•
Estadísticas de la temporada actual del equipo local:
Son las probabilidades de ganar, empatar o perder que
lleva el equipo en esta temporada.
•
Estadísticas de la temporada actual del equipo visitante:
Igual que las anteriores pero para el visitante.
•
Estadísticas de los últimos seis partidos del equipo local
jugados en casa: Son las probabilidades de ganar,
empatar o perder que lleva el equipo en los últimos seis
partidos jugados en su estadio.
•
Estadísticas de los últimos seis partidos del equipo
visitante jugados fuera de su casa: Son las
probabilidades de ganar, empatar o perder que lleva el
equipo en los últimos seis partidos jugados fuera de su
estadio.
Mediante este conjunto de variables esperamos conseguir la
mayor variabilidad posible de las muestras y a la vez poder
predecir un buen comportamiento.
3. VARIABLES DE SALIDA
En este caso solo tenemos una variable de salida que será el
resultado que habría que apuntar en la quiniela. Hemos generado
una salida discreta que da tres resultados 1,2 ó 3 que equivalen a
1,X,2.
Para calcular dichas variables, nos basamos en un estudio de los
enfrentamientos a lo largo de la historia de los dos equipos de la
muestra. Para ello calculamos la probabilidad histórica de ganar,
empatar o perder del equipo local sobre el visitante, tomando
como resultado de salida, la probabilidad que de un valor
máximo. Dependiendo de cuál sea esta probabilidad, decidiremos
un valor 1, 2, ó 3. Estos datos los copiamos manualmente en una
hoja de calculo Excel, y a partir de ahí realizamos los cálculos
pertinentes.
Figura1. Perceptón
Las Xi son las variables que hemos puesto de entrada, las Wi son
los pesos que queremos calcular. La función T en nuestro caso es
una suma de los productos de cada W con cada X, y finalmente la
Y es la variable discreta de salida.
La solución que hemos adoptado para implementar el perceptrón,
ha sido crear el algoritmo directamente sobre Matlab, ya que de
esta forma podemos realizarlo con las características que
queramos. Para el cálculo de los pesos hemos utilizado un
algoritmo de descenso por gradiente, y seleccionamos aquellos
pesos que produzcan un mínimo error cuadrático medio.
El algoritmo consta de diez cálculos distintos de los pesos, y
selecciona aquellos que produzcan el mínimo error cuadrático
medio. En cada una de las diez iteraciones realiza un algoritmo
del gradiente completo. El algoritmo del gradiente utiliza el 80%
de las muestras para calcular los pesos llamando a este grupo de
muestras, muestras de entrenamiento. Inicializamos los pesos a 1,
y con cada muestra del grupo de muestras de entrenamiento
recalculamos los nuevos pesos. Para recalcular los nuevos pesos
utilizamos el algoritmo secuencial del gradiente:
wi = wi −1 + η ⋅ (di − wi −1 ⋅ xi ) ⋅ xi
El 20% de muestras restantes se utilizan para validad los pesos
obtenidos. Así, cada vez que calculamos los nuevos pesos,
aplicamos estos a todas las muestras de validación, y calculamos
el error medio obtenido. Este error se calcula mediante la resta de
los resultados obtenidos y los resultados reales. Cada vez que se
obtienen unos pesos y un error asociado, se comprueba si este
error es el error más pequeño obtenido hasta el momento, y si lo
es, se almacenan los pesos correspondientes a este mínimo error.
Una vez realizadas las diez iteraciones del algoritmo, se clasifica
a ver cuál de las diez iteraciones ha producido el menor error
mínimo y se vuelve a almacenar estos pesos, que serán el
resultado final del programa.
Villarreal
Valencia
0-1
3
7
Mallorca
Athletic
1-3
3
8
Zaragoza
Sevilla
2-1
1
9
Espanyol
Recreativo
0-1
10
Deportivo
Real Madrid
2-0
Como se puede observar hemos realizado el cálculo de los pesos y
la validación de los mismos en cada una de las iteraciones, con lo
que hemos asegurado que al finalizar el entrenamiento tendremos
los mejores resultados posibles, es decir, los pesos que hacen la
función de coste mínima. En nuestro caso la función de coste que
hemos utilizado es el error cuadrático medio.
6
Hasta este momento hemos realizado tan solo el diseño del
perceptrón, pero aún no hemos terminado ya que faltaría testear
este diseño, para ver si los resultados son correctos en la vida real.
Por ello vamos a proceder a realizar una batería de pruebas, que
nos ofrecerán las características y debilidades de nuestro diseño.
Tras estas pruebas, explicaremos con unos gráficos las
conclusiones extraídas.
3
1
5.1 Prueba 1.
Esta prueba consiste en variar el número de variables de
entrenamiento, y la realizamos sin repetición de muestras.
5.1.1 Nº Variables: 26
Los resultados obtenidos con esta prueba son:
5. PRUEBAS
Para realizar las pruebas vamos a variar el número de variables
que usamos para entrenar, y haremos unas estadísticas
representando los resultados frente al número de variables. Hay
que resaltar que aunque el número de variables son 26, el número
de pesos es siempre uno más. Esto es debido a que hemos
considerado un término independiente en cada muestra. Con esto
pretendemos obtener una mejor respuesta.
w=
[-0,26238
0,73971
0,71412
0,84433
0,87667
0,87095
-0,24542
0,90368
0,745
0,8373
0,8235
0,5615]
0,71412
0,91812
0,90253
0,87429
0,86134
0,91567
0,93172
0,91398
0,844
0,89552
0,93172
0,91567
0,87988
0,84322
0,79503
error = 2.0339
Otro bloque de pruebas será realizar el entrenamiento sin
repetición de muestras, y con repetición de muestras. La
repetición de muestras la hacemos porque los resultados producen
demasiados resultados ganando el equipo local con lo que
aparecen pocas muestras con los otros resultados. Para que el
entrenamiento sea un poco más variable, repetiremos las muestras
que den resultados poco probables, hasta que los resultados sean
aproximadamente parecidos. Con esto solucionamos en parte la
aparición de un estimador con cierto sesgo.
resultado estimado: 3
3
3
1
1
1
3
1
1
2
resultado real:
2
1
1
1
3
3
1
3
1
Una tercera prueba puede ser meter los datos repetidos y
desordenados inicialmente, para que la variabilidad sea mayor.
w=
Total aciertos:
2
4
5.1.2 Nº Variables: 20
Los resultados obtenidos con esta prueba son:
Para cada estimación de los pesos, calcularemos el resultado sobre
la última jornada de liga. Los partidos sobre los cuales se realiza
la estimación son:
[-0,1514 -0,19088
0,76926 0,91086
0,74722 0,76467
0,87437 0,8455
0,59724]
0,74722
0,91713
0,91042
0,86819
0,9293
0,92072
0,92215
0,87232
0,92072
0,9293
0,87738
0,85673
error = 1.0044
Variable
Equipo local
Equipo visitante
Resultado
de salida
1
Getafe
Barcelona
1-1
2
2
Atlético
Nástic
0-0
2
3
Betis
Celta
1-0
1
4
R. Sociedad
Osasuna
2-1
1
5
Levante
Racing
2-0
1
resultado estimado: 3
3
3
1
2
1
3
1
1
resultado real:
2
1
1
1
3
3
1
3
Total aciertos:
2
3
5.1.3 Nº Variables: 10
Los resultados obtenidos con esta prueba son:
w=
[-0,067233 -0,07557 0,8685
0,88
0,79889]
error = 0.2800
0,9537
0,9652
0,96147 0,96893
0,96893 0,96147
2
1
resultado estimado: 3
2
2
1
1
1
2
1
1
2
resultado real:
2
1
1
1
3
3
1
3
1
Total aciertos:
2
4
w=
[-0,05133 -0,04576 0,81484 0,90098 1,0206
0,84501 0,94222 0,94917 1,0206 0,90098
0,7364]
error = 0.2240
resultado estimado: 3
2
2
2
1
1
2
1
1
2
5.1.4 Nº Variables: 6
resultado real:
2
1
1
1
3
3
1
3
1
Los resultados obtenidos con esta prueba son:
Total aciertos:
w=
2
3
[-0,03380 -0,04105 0,86077 0,99642 0,98883
0,8867
0,84602]
5.2.4 Nº Variables: 6
error = 0.2550
resultado estimado: 2
2
2
1
1
1
2
1
1
2
resultado real:
2
1
1
1
3
3
1
3
1
Total aciertos:
2
5
Los resultados obtenidos con esta prueba son:
w=
[0,01448 -0,02898 0,77624 0,96445 1,1042
0,88041 0,84486]
error = 0.2692
5.2 Prueba 2.
resultado estimado: 2
2
2
2
2
2
2
2
2
2
Esta prueba consiste en variar el número de variables de
entrenamiento, además de repetir las muestras que producen
resultados que tienen menos frecuencia de aparición.
resultado real:
2
1
1
1
3
3
1
3
1
5.2.1 Nº Variables: 26
5.3 Prueba 3.
Los resultados obtenidos con esta prueba son:
Esta prueba consiste en variar el número de variables de
entrenamiento, además de repetir las muestras que producen
resultados que tienen menos frecuencia de aparición. Como
novedad, vamos a introducir las muestras desordenadas para que
la variabilidad sea mayor.
w=
[-0,16815
0,54095
0,5323
0,76379
0,78563
0,69827
-0,15808
0,83413
0,57991
0,71089
0,68631
0,22456]
0,5323
0,84947
0,81388
0,75314
0,75262
0,79455
0,89771
0,83077
0,74856
0,85816
0,89771
0,79455
0,74987
0,72286
0,66813
Los resultados obtenidos con esta prueba son:
w=
resultado estimado: 3
3
3
1
2
1
3
1
2
3
resultado real:
2
1
1
1
3
3
1
3
1
Total aciertos:
Total aciertos: 2
5.3.1 Nº Variables: 26
error = 0.9252
2
2
3
[-0,18153
0,54291
0,55024
0,76604
0,77589
0,70751
-0,16338
0,84012
0,60706
0,72427
0,69866
0,24871]
0,55024
0,86568
0,81228
0,76835
0,77416
0,76915
0,92932
0,82936
0,74717
0,87045
0,92932
0,76915
0,7584
0,73319
0,67075
error = 1.0068
5.2.2 Nº Variables: 20
Los resultados obtenidos con esta prueba son:
w=
[-0,15062
0,64859
0,61654
0,82265
0,40443]
-0,0996
0,86607
0,6943
0,77503
0,61654
0,88977
0,85064
0,82646
0,81062
0,97727
0,85949
0,81158
0,97727
0,81062
0,80676
0,7664
1
3
3
1
3
2
3
3
3
resultado real:
2
1
1
1
3
3
1
3
1
Total aciertos:
2
3
5.3.2 Nº Variables: 20
error = 0.6925
Los resultados obtenidos con esta prueba son:
resultado estimado: 3
3
3
2
2
1
3
1
2
3
resultado real:
2
1
1
1
3
3
1
3
1
Total aciertos:
resultado estimado: 3
2
2
w=
[-0,1124
0,65575
0,60853
0,80726
0,4138]
-0,14294
0,8688
0,68008
0,76884
0,60853
0,88925
0,86059
0,81693
0,86004
0,94524
0,87314
0,80362
0,94524
0,86004
0,83771
0,79325
error = 0.7222
5.2.3 Nº Variables: 10
Los resultados obtenidos con esta prueba son:
resultado estimado: 3
1
3
3
1
2
2
3
3
3
resultado real:
Total aciertos:
2
2
1
1
1
3
3
1
3
1
2
ANALISIS PRUEBA 2
3,5
3
3
3
5.3.3 Nº Variables: 10
2
Los resultados obtenidos con esta prueba son:
w=
2
2
[-0,03428 -0,05425 0,83798 0,91077 0,98193
0,83846 0,9421 0,95011 0,98193 0,91077
0,73067]
1,5
1
0,9252
0,6925
0,5
error = 0.2280
resultado estimado: 3
1
3
2
2
2
2
3
3
3
resultado real:
2
1
1
1
3
3
1
3
1
Total aciertos:
Error
Aciertos
2,5
2
0,2692
0,224
0
Nº Variables 26
Nº Variables 20
Nº Variables 10
Nº Variables 6
Prueba 2
1
Figura3. Resultados Prueba 2
5.3.4 Nº Variables: 6
ANALISIS PRUEBA 3
Los resultados obtenidos con esta prueba son:
3,5
w=
[0,01283 -0,0262
0,77399 0,96294 1,0925
0,8689 0,82938]
3
3
error = 0.2539
Error
Aciertos
2,5
2
resultado estimado: 2
2
2
2
2
2
2
2
2
2
2
resultado real:
2
1
1
1
3
3
1
3
1
1,5
2
2
1,0068
Total aciertos: 2
1
1
0,7222
0,5
0,228
0,2539
0
6. ANÁLISIS DE RESULTADOS
En este apartado presentamos un resumen de la información
extraída de las pruebas, y para facilitar la explicación utilizaremos
gráficas.
Nº Variables 26
Nº Variables 20
Nº Variables 10
Nº Variables 6
Prueba 3
Figura4. Resultados Prueba 1
ANALISIS DE PRUEBA 1
6
5
Error
Aciertos
5
4
4
4
3
3
2,0339
2
Como puede verse en estas tres primeras gráficas, hay una
tendencia de disminución del error al reducirse el número de
variables de entrada del perceptrón. Esto ocurre porque hemos
utilizado un conjunto de variables que se aproxima cada vez más
al conjunto utilizado para calcular las variables de salida. Como
vimos en el apartado 3, los datos de salida que íbamos a usar para
entrenar el perceptrón, usaban tres variables que luego utilizamos
como entrada, y este conjunto de 3 variables es al que nos
aproximamos sucesivamente cuando reducimos las variables.
1,0044
1
0,28
0,255
0
Nº Variables 26
Nº Variables 20
Nº Variables 10
Nº Variables 6
Prueba 1
Figura2. Resultados Prueba 1
Este es el estimador sesgado. En las sucesivas pruebas hemos
introducido repetición de los datos para evitar este sesgo.
En cuanto a los resultados del número de aciertos, la tendencia
depende del orden de los datos, y de si el estimador es sesgado o
insesgado.
En las pruebas dos y tres el estimador era insesgado, y se observa
que la tendencia de resultados acertados disminuye conforme el
número de variables decrece. Si nos fijamos en los resultados del
apartado anterior, vemos como para pocas variables, la tendencia
del estimador es a dar siempre un empate como resultado. Luego
aunque a primera vista de un buen error medio, la estimación no
es válida y los aciertos son bajos.
manera que cada vez que se hiciera una nueva
predicción, se incluyera este dato en la base de datos de
entrenamiento.
En este caso, la mejor opción que podemos tomar es la que nos de
un buen compromiso entre el número de aciertos y el error medio.
COMPARACION PRUEBAS
•
A parte de todas estas desventajas que presenta la
predicción de una quiniela, nuestros sistemas producen
una respuesta a tener en cuenta. Como hemos dicho en
los resultados, llegamos a la conclusión que el mejor
algoritmo para calcular los pesos, es el que no usa
muestras repetidas. Esto produce un estimador sesgado,
que da más peso a los resultados de victoria local. Es
lógico ya que el factor campo es uno de los que más
influye en el resultado de un partido, y normalmente la
mayoría de los equipos consiguen la victoria en casa.
•
Se deduce de los resultados del estudio que tenemos que
llegar a un compromiso entre el número de aciertos y el
error medio obtenido mediante cierta técnica.
Consecuentemente y a la vista de los resultados esto nos
lleva a elegir el perceptrón sesgado con un número de
variables de entrada entre 10 y 20.
•
A la vista de todas estas conclusiones el método del
perceptrón simple no es el más adecuado para realizar
una estimación tan compleja.
4,5
4
4
Error Medio
Aciertos Medios
3,5
3
2,5
2,5
2
2
1,5
0,893325
1
0,527725
0,552725
0,5
0
Prueba 1
Prueba 2
Prueba 3
Figura5. Análisis de Pruebas
Se puede observar que en las pruebas dos y tres no influye en
exceso el desorden de las muestras. Por lo que los resultados es
predecible que sean parecidos.
Por lo tanto a la vista de los resultados nos quedaremos con la
primera prueba, aunque sea un estimador sesgado, y con un
número de variables entre 10 y 20. Descartamos usar un
estimador insesgado, porque a pesar de introducir más empates, y
victorias visitantes, la realidad indica que la mayoría de los
resultados son victorias locales.
7. CONCLUSIONES
A la vista del estudio realizado hemos extraído las siguientes
conclusiones:
•
•
•
La predicción de resultados de quinielas es demasiado
compleja como para realizar un estudio que sea
totalmente fiable. Esto se debe al gran número de
variables medibles y no medibles que influyen
directamente en el resultado del partido. Sucesos tales
como estado de forma de los jugadores, expulsiones,
lesiones, crisis económicas de los equipos, errores
arbitrales, etc son hechos que son difícilmente
cuantificables para el estudio. Nuestro programa sólo
refleja aspectos relativos a los enfrentamientos recientes
e históricos de los equipos.
Otro aspecto a reseñar es que podríamos mejorar el
sistema utilizando otros sistemas de predicción más
potentes que el perceptrón, pero a su vez, esos sistemas
introducen una mayor complejidad tanto de diseño
como de desarrollo. Un sistema del tipo perceptrón
multicapa hubiera dado posiblemente mejores
prestaciones, porque particulariza más, pero su
entrenamiento hubiera costado mucho esfuerzo y
tiempo.
Podríamos haber mejorado sensiblemente la capacidad
del perceptrón incluyendo algoritmos de aprendizaje, de
8. SOLUCIONES
Aunque lo hemos explicado antes, la conclusión obtenida es que
nuestro perceptrón no nos sirve como buen estimador de
quinielas. También hemos explicado que necesitaríamos muchas
variables más, y una gran batería de datos más.
Es probable que otra solución fuese calcular de otra manera
diferente los resultados de salida, ya que la forma en que nosotros
lo hacemos puede que no sea del todo precisa. Siempre va a ser
una estimación, pero quizá alguna variable más podría dar unos
resultados más reales.
Finalmente decir que no hay un algoritmo capaz de dar con total
rigor un resultado bueno. En Internet se pueden encontrar gran
cantidad de estimadores de este tipo, pero ninguno da un resultado
capaz de predecir exactamente lo que va a ocurrir en la jornada.
De no ser asi, habría gente que se habría hecho millonaria con la
quiniela y esta hubiera desaparecido.
9. ANEXO
A continuación exponemos el código desarrollado para la
implementación de nuestro estimador. Como dijimos antes, todo
el código ha sido desarrollado en Matlab, porque hemos pensado
que nos daría mejores resultados que el programa Weka. Además
así hemos podido decidir la forma de nuestra variable de salida de
la forma que nosotros queríamos.
function [w_final]=entrenador(datos)
col_resultado=27;
total_cols=7;
ultima_col=6;
w_final
%Paso elegido para el algoritmo del gradiente(LMS)
error_final
nu=0.0015;
%Nº de muestras que usamos para entrenar
long_entrenamiento=length(datos(:,1))*0.8;
%Realizamos 10 iteraciones para obtener el minimo error
for k=1:10
Seguidamente
utilizado para
resultados de
profesional, y
programa.
exponemos el código del programa que hemos
testear nuestro estimador. En él recogemos los
la 17ª jornada de la liga española de fútbol
lo comparamos con los obtenidos por nuestro
orden=randperm(length(datos(:,1)));
error_iter=0;
w=ones(1,total_cols);
for i=1:long_entrenamiento
%Para cada muestra calculamos los nuevos pesos
w=w+(nu*(datos(orden(i),col_resultado)w*[datos(orden(i),1:ultima_col)';1])
*[datos(orden(i),1:ultima_col)1]);
%Calculamos el error obtenido para estos pesos
error = 0;
for j=long_entrenamiento:size(datos(:,1))
error= error +(datos(orden(j),col_resultado)(w*[datos(orden(j),1:ultima_col)';1]))^2;
end
error=error/(2*(length(datos(:,1))-long_entrenamiento));
%Nos quedamos con el error minimo que da el algoritmo
if i==1
error_iter=error+1;
end
if error<error_iter
error_iter=error;
w_iter=w;
end
end
w_iter;
error_iter;
%Nos quedamos con la iteración que consigue menor error
if k==1
error_final = error_iter+1;
end
if error_iter<error_final
error_final=error_iter;
function [ ]=test(datos,w)
ultima_col=6;
col_resultado=27;
%El vector N contiene la situación de los datos a
%estimar en nuestra base de datos, y el resultado
%del partido. Utilizamos un vector N u otro
%dependiendo de que prueba hagamos.
%N=[136 2;27 2;61 1;278 1;183 1;360 3;191 3;378 1;129 3;108 1]
N=[166 2;122 2;385 1;125 1;609 1;736 3;8 3;741 1;905 3;261 1]
%Calculamos el resultado estimado de cada
%enfrentamiento y lo comparamos con el real.
for i=1:10
resultado(i)=round(w*[datos(N(i,1),1:ultima_col)';1]);
%Aquí redondeamos los resultados que se pasan
%de 3, o se quedan por debajo de 1.
if resultado(i) < 1
resultado(i) = 1;
end
if resultado(i) > 3
resultado(i) = 3;
end
resultado(i);
verdadero(i)=N(i,2);
end
%Vectores que dan el resultado estimado y el real.
resultado
verdadero
w_final=w_iter;
end
end
%Estas son las variables de salida del perceptron
10. REFERENCIAS
[1] Apuntes de la asignatura Inteligencia en Redes de
Comunicaciones.
[2] Guía Marca de la Liga de Fútbol Profesional. Temporada
2006-2007. Ed Recoletos.
[3] Bishop, C.M.: Neural Networks for Pattern
Recognition. Oxford. Oxford University Press; 1995.

Documents pareils