En la comparación anterior, lo hizo mejor el algoritmo genético que mejora primero los individuos. En esta ocasión, se compara ese algoritmo genético contra una red neuronal (perceptrón multicapa).
1. Se genera al azar una ecuación.
2. Esta ecuación genera un conjunto de datos de tipo X, Y.
3. Se reescribieron los algoritmos para que usaran la misma cantidad de tiempo y así comparar cuál es más eficiente.
4. Tanto el algoritmo genético como la red neuronal intentarán cubrir todo el conjunto de datos con una sola ecuación.
Resultados
Se hicieron 50 pruebas. Cada prueba genera un conjunto de datos de 200 registros (nacidos de una ecuación creada en forma aleatoria). En cada prueba, cada algoritmo tuvo 10 segundos para operar.
Cada valor de la tabla es la mejor aproximación que tuvo el mejor individuo en la población al conjunto de datos. Entre más cercano a cero es mejor.
Algoritmo Genético (población: 100 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.
Algoritmo genético mejorando primero los individuos | Red Neuronal (Perceptrón multicapa) |
0,056409587 | 0,050768058 |
0,003112154 | 0,001861577 |
5,01E-05 | 2,367256871 |
0,041525684 | 0,005296844 |
0,04558736 | 0,006861776 |
0,006200571 | 0,001576744 |
0,134919196 | 0,00552177 |
0,091445151 | 0,00727422 |
0,001799825 | 0,004657489 |
0,040832769 | 0,011581341 |
0,384664615 | 0,003653298 |
0,000116745 | 11,93224729 |
0,301865702 | 0,003891278 |
0,2297422 | 0,006171706 |
2,85074217 | 0,003277111 |
0,028779889 | 0,006233412 |
0,916100632 | 0,903040892 |
0,002696252 | 0,001617391 |
0,001897393 | 0,002337936 |
0,212620097 | 0,005410461 |
0,040970555 | 0,003883254 |
1,961298182 | 0,000810018 |
0,040916169 | 0,004052651 |
0,597321421 | 0,386056736 |
0,065896271 | 0,006635768 |
0,012382273 | 0,007900692 |
0,002192463 | 0,003200907 |
0,033991481 | 0,00330776 |
0,0410592 | 0,005365516 |
0,039712344 | 0,011473051 |
0,619756345 | 0,626917069 |
0,038858342 | 0,002719818 |
0,591514408 | 0,366639355 |
0,696365464 | 0,037309013 |
0,003410273 | 0,001217354 |
8,773757702 | 5,895568474 |
0,046814627 | 0,006253101 |
0,003463817 | 0,002035888 |
0,645801505 | 0,001380191 |
0,040839066 | 0,007058582 |
0,03597662 | 0,004449249 |
0,097802952 | 0,014384295 |
0,776244715 | 0,768370477 |
0,05684533 | 0,006116995 |
0,040919958 | 0,012500529 |
0,040935166 | 0,00788109 |
0,90419109 | 0,911076466 |
0,163853156 | 0,011219462 |
0,005222732 | 0,009794643 |
0,102595674 | 0,007928003 |
Promedio: 0,437440348 | Promedio: 0,489280877 |
Algoritmo Genético (población: 250 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.
Algoritmo genético mejorando primero los individuos | Red Neuronal (Perceptrón multicapa) |
0,002738895 | 0,007435696 |
0,053222715 | 0,010510213 |
0,040988507 | 0,012803539 |
0,005555635 | 0,004137448 |
0,053108762 | 0,009026788 |
0,42917138 | 0,00259097 |
0,01265889 | 0,001895588 |
0,039178598 | 0,005084603 |
0,952583285 | 0,989763775 |
0,001745922 | 0,007106661 |
0,053093029 | 0,006365995 |
0,102694856 | 0,019117981 |
0,041476921 | 0,01732451 |
0,926253135 | 0,999355014 |
0,156514695 | 0,006570568 |
0,722398673 | 0,739598247 |
0,05322883 | 0,013483637 |
0,040124633 | 0,013136605 |
0,156520226 | 0,006300334 |
0,039506216 | 0,004715571 |
0,006457773 | 0,005379192 |
0,000106148 | 0,003445485 |
0,004184082 | 0,006535181 |
0,043994173 | 0,010416954 |
0,040847686 | 0,013648211 |
0,008875653 | 0,019212311 |
0,002106464 | 0,001898676 |
0,03973931 | 0,012698318 |
0,190554436 | 0,003283916 |
0,001712208 | 0,00109696 |
0,040906098 | 0,004808459 |
0,040855613 | 0,006232195 |
0,005254851 | 0,002939542 |
0,006887772 | 0,000584531 |
0,001868573 | 0,001171315 |
2,121093271 | 0,000265699 |
0,019453016 | 0,004250675 |
0,915602761 | 0,957964901 |
0,002602513 | 0,000825023 |
0,001780728 | 0,001035339 |
0,009123772 | 0,001696353 |
0,199862698 | 0,003513151 |
0,048613421 | 0,020218377 |
0,007823033 | 0,006341934 |
0,001972889 | 0,020373753 |
0,169492594 | 0,018853633 |
0,591096809 | 0,001398673 |
0,001551313 | 0,000793783 |
0,661345678 | 0,170475862 |
0,038769222 | 0,013956033 |
Promedio: 0,182145967 | Promedio: 0,083832763 |
Algoritmo Genético (población: 500 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.
Algoritmo genético mejorando primero los individuos | Red Neuronal (Perceptrón multicapa) |
0,045705219 | 0,01158748 |
0,096046645 | 0,01323741 |
0,236785894 | 0,009299029 |
0,015921686 | 0,003612142 |
0,014791062 | 0,003863399 |
0,0071595 | 0,0014993 |
0,0036478 | 0,010041613 |
0,002642247 | 0,008896704 |
0,002857066 | 0,006235412 |
0,059810701 | 0,002751161 |
0,039714329 | 0,005549972 |
0,532487942 | 0,003222028 |
0,002672488 | 0,001069281 |
0,023467745 | 0,002759507 |
0,002784431 | 0,0012695 |
0,041088136 | 0,003203934 |
0,039775329 | 0,004455568 |
0,650343962 | 0,328891501 |
0,040866141 | 0,005967821 |
0,004051801 | 0,020495148 |
0,040885588 | 0,004899178 |
0,040863692 | 0,014085881 |
0,003662333 | 0,004609448 |
0,003106835 | 0,001128523 |
0,006494741 | 0,004307463 |
0,003044504 | 0,001710511 |
0,038536761 | 0,004157228 |
0,040839024 | 0,005921686 |
0,038592117 | 0,013879406 |
0,042198918 | 0,012663046 |
0,003120159 | 0,003105548 |
0,039601413 | 0,011418638 |
0,12116823 | 0,015194655 |
0,002063412 | 0,000992255 |
0,039768206 | 0,015028975 |
0,003108242 | 0,001264114 |
7,29E-06 | 0,005665333 |
0,001644004 | 0,006256636 |
0,003739339 | 0,00163749 |
0,066989114 | 0,015576702 |
0,600842158 | 0,364637271 |
0,013301293 | 0,003061603 |
0,010724448 | 0,001901634 |
0,038736597 | 0,012761851 |
0,121150987 | 0,011004292 |
0,577263373 | 0,602620104 |
0,573298084 | 0,600871965 |
0,004868006 | 0,004949279 |
0,004558455 | 0,005940986 |
0,003708808 | 0,001174557 |
Promedio: 0,087010125 | Promedio: 0,044006683 |
Algoritmo Genético (población: 750 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.
Algoritmo genético mejorando primero los individuos | Red Neuronal (Perceptrón multicapa) |
0,073596955 | 0,011701394 |
0,020880206 | 0,003216936 |
0,095274218 | 0,005794233 |
0,040857823 | 0,01271875 |
0,000515327 | 0,004607653 |
0,006606109 | 0,003535447 |
0,000240304 | 0,00426408 |
0,002973698 | 0,001510895 |
0,001942462 | 0,000826035 |
0,023368807 | 0,003010282 |
0,06393348 | 0,005756714 |
0,693699471 | 0,043586601 |
4,978975869 | 1,19378722 |
0,001753929 | 0,000843333 |
0,044808785 | 0,00416116 |
2,599145972 | 0,000482171 |
0,002533144 | 0,001698213 |
0,109135161 | 0,018543145 |
0,001426074 | 0,000836743 |
0,680435996 | 0,697202909 |
0,468869838 | 0,004699076 |
2,642764587 | 0,001707228 |
0,000403009 | 0,000676294 |
0,028839783 | 0,003384246 |
0,054522974 | 0,007228966 |
0,040444764 | 0,007175726 |
0,057468825 | 0,004292816 |
0,009008995 | 0,012764017 |
0,039190996 | 0,004016388 |
0,003532441 | 0,019536189 |
0,607264534 | 0,608038603 |
0,00157024 | 0,001983717 |
0,007530491 | 0,001346314 |
0,00131032 | 0,000745118 |
0,003479239 | 0,002567215 |
0,768140022 | 0,78045493 |
0,049634413 | 0,00411522 |
0,040895419 | 0,004005847 |
0,095372938 | 0,006392564 |
0,597098418 | 0,339193495 |
0,9359204 | 0,974304855 |
0,040852977 | 0,017859016 |
0,007641276 | 0,009389338 |
0,042056329 | 0,018484971 |
0,014580322 | 0,007167583 |
0,040096326 | 0,018287478 |
0,001799158 | 0,002459916 |
1,626247682 | 0,000432976 |
0,003119453 | 0,009242168 |
0,037883893 | 0,012818774 |
Promedio: 0,354192877 | Promedio: 0,098057099 |
Algoritmo Genético (población: 1000 individuos) vs Red neuronal: 2 capas ocultas, cada una de 5 neuronas.
Algoritmo genético mejorando primero los individuos | Red Neuronal (Perceptrón multicapa) |
0,063664801 | 0,007294925 |
0,030609026 | 0,003369836 |
0,006213155 | 0,004122689 |
0,002262269 | 0,004768821 |
0,04092856 | 0,015340665 |
0,025187516 | 0,002683691 |
0,007051688 | 0,002074759 |
1,557855926 | 0,005438602 |
0,039597931 | 0,010815268 |
0,03291923 | 0,004277725 |
0,636903635 | 0,000882676 |
0,038529044 | 0,01345365 |
0,057484079 | 0,007722232 |
0,022116487 | 0,007990784 |
0,927395951 | 0,97450765 |
3,22E-06 | 0,008315674 |
0,021148478 | 0,009234336 |
0,336560335 | 0,003300005 |
0,001290622 | 0,001095776 |
0,039666144 | 0,004560474 |
0,00188847 | 0,006067861 |
0,000301453 | 0,001063474 |
0,871717677 | 0,795047708 |
0,597528709 | 0,384757834 |
0,011251557 | 0,003434738 |
0,00605428 | 0,008681054 |
0,005449899 | 0,005302853 |
0,850042696 | 0,000781718 |
0,372387351 | 0,004532554 |
0,000616332 | 0,001412185 |
0,409279097 | 0,003333115 |
0,482878209 | 0,008587236 |
0,06020981 | 0,002395195 |
0,037342806 | 0,012978091 |
0,178333282 | 0,042423438 |
0,641468443 | 0,661011502 |
0,007514029 | 0,001357586 |
0,001669264 | 0,000727154 |
0,082287604 | 0,006910647 |
0,002957812 | 0,001343235 |
0,634174306 | 0,000890253 |
0,002605849 | 0,001145639 |
0,115337571 | 0,002251434 |
0,887855743 | 0,894815742 |
0,063439362 | 0,004543663 |
0,005523357 | 0,00125938 |
0,852400477 | 0,000906904 |
0,000387608 | 0,004213101 |
0,050510521 | 0,00584791 |
0,04098977 | 0,003847243 |
Promedio: 0,223235829 | Promedio: 0,079262414 |
Conclusiones
En 4 de 5 pruebas, la red neuronal tuvo mejor aproximación en promedio. Por lo general, donde hay una aproximación peor para el algoritmo genético, también lo es para la red neuronal.
Cabe recordar que el algoritmo genético lo componen individuos que tienen la siguiente expresión y=f(x) así:
y=(seno(a*(1-x)^4 + b*(1-x)^3 + c*(1-x)^2 + d*(1-x) +e + f*x + g*x^2 + h*x^3 + i*x^4)+1)/2
el algoritmo genético trabaja en modificar a, b, c, d, e, f, g, h, i.