En la unidad anterior mostramos
que un modelo de maxima entropía inocente
para la distribución de popularidad de los lenguajes
donde la popularidad de un lenguaje es
cuantas veces fue usado ese lenguaje en el archivo de código libre
ese modelo, que tiene la siguiente forma
y restringe el valor de expectación de abundancia de lenguajes
[Nuestro modelo "inocente" de maxima entropia tenia la forma]
que restringe solo
el numero promedio de veces que un lenguaje es usado en el archivo
sobre todos los lenguajes
este modelo de maxima entropía falla en reproducir
los datos que tenemos
no predice los lenguajes populares
y da valores muy altos a los lenguajes menos populares
este es el modelo que mejor se ajusta a los datos
esto es lo que pasa cuando resuelvo lambda y z
para obtener la restricción correcta del promedio que vemos en los datos
lo que voy a hacer es pedirle que
considere un modelo mas rico
y otra vez
por modelo me refiero a distribución de probabilidad
y esta distribución de probabilidad
va a tratar de explicar
no solo
la popularidad de los lenguajes
sino también
la cantidad de tiempo dedicada a ellos
La cantidad de tiempo de los programadores dedicado a un lenguaje
aqui va n, como antes
el numero de proyectos
[Considere un mejor modelo]
que aparecen en ese lenguaje
[Donde n es el numero de proyectos que hay en un lenguaje]
y esto de aqui
epsilon es la cantidad de tiempo
dedicada por proyecto
[y epsilon es la cantidad de tiempo dedicada por proyecto]
debe pensar en epsilon representa
algo como la eficiencia del lenguaje
[ε modela la "eficiencia del lenguaje"]
y n representa la popularidad del lenguaje
[n modela la "popularidad del lenguaje"]
algunos lenguajes, por ejemplo
son extremadamente populares
y extremadamente eficientes
entonces tienen n grande y epsilon pequeño
tal vez otros lenguajes
no son tan populares
y sean menos eficientes
o requieren mas tiempo del programador
y claro, puede haber lenguajes extremandametne eficientes
que son profundamente impopulares
y vise versa
la idea aqui es estamos tratando de describir dos cosas al mismo tiempo
antes
tratamos de hacer un modelo que solo incluyera
una variable, popularidad
ahora vamos a tratar de construir un modelo
que tenga dos variables
popularidad y eficiencia
o cantidad de tiempo dedicado por proyecto
lo que vamos a hacer
es restringir estas dos cantidades
como antes
vamos a restringir el numero promedio de proyectos
[Restringir dos cantidades]
[ numero promedio de proyectos]
y también vamos a restringir
el promedio del tiempo
dedicado a un lenguaje
[ promedio de tiempo dedicado por lenguaje]
la idea es que hay una especie
de fuerza intrínseca que mantiene
el numero promedio proyectos por lenguaje constante
hay una especie de
factor social de gran escala
o conjunto de factores sociales
que mantiene el numero promedio de proyectos constante
y también restringe
el promedio de tiempo dedicado
a un lenguaje en particular
entonces
vamos a poner una distribución de maxima entropía
para este modelo de dos parametros
vamos a restringir n
sabemos que
tenemos un termino que se ve como
e a la lambda por n
como antes
e a la menos lambda por n
y también vamos a tener un termino
en el exponente que se ve como
lambda dos, ese es nuestro segundo multiplicador de Lagrange
por n por ε
y claro, todo sera normalizado por un factor Z
así que la única cosa que debe parecerle misteriosa
es de donde sacamos este segundo termino
sabemos de donde sale esto
pero ¿por qué tenemos esto?
así que lo que hare es
recordarle rápidamente
como obtuvimos esta forma funcional originalmente
derivamos la función
a la que deseamos maximizar la entropía
y ahora vamos a tener tres restricciones
vamos a tener una restricción
en el numero promedio de proyectos
que restringe g1
g1 de p es igual a c
vamos a tener una restricción g2
en este termino
g2 de p es igual a c prima
y finalmente todos sobre una constante de normalización
g3 de p_i
entonces
escribiré esto aqui
g1 de p es igual
y g2 de p
g1 de p es el numero promedio de lenguajes
o el numero promedio de proyectos para un lenguaje en particular
ese es P(n) por n
y podemos escribirlo en función de la distribución conjunta
como P(n,ε) por n
ahora no solo sumamos sobre todos los valores de n
sino sobre todos los valores de tiempo dedicado, ε
g2(p) se ve parecido, excepto que ahora
no solo estamos restringiendo n
sino n por ε
entonces tenemos que integrar sobre ε
y tenemos que sumar sobre todos los valores de p
y así es que se vera nuestra ecuación
así es como se ve nuestra restricción
para esta segunda cantidad
ahora, cuando hacemos la derivada de g1 con respecto a p1
sabemos como se ve
es lambda_1 por n
y cuando derivamos esto con respecto a p_i
todo sale, excepto por
lambda_2 n ε
y finalmente g_3
es solamente una constante de normalización
eso significa
que cuando integro sobre todo ε
y sumo sobre tono n, sera igual a 1
entonces cuando derivo esto
con respecto a p
obtenemos lambda_3 por uno
en este otro lado
la derivada de la entropía con respecto a p_i
es igual al log(p_i)
menos log(p_i), mas, o mas bien, menos uno
[(aqui también, i = n)]
y cuando re-arreglamos
tenemos que p_i
es proporcional a e a la menos lambda_1 por n
menos lambda_2 n ε
todo lo demás puede ser factorizado
en una constante de normalización
[(recuerde, i = n)]
y de ahi es que viene esta forma funcional
y como regla general
prácticamente
si se quiere ver
que restringe la distribución de maxima entropía
vea termino por termino
en la exponencial par encontrarlo
lo que tenemos ahora
[Tenemos la forma funcional de la distribución conjunta]
es la siguiente forma funcional
para la distribución conjunta de popularidad de los lenguajes
y eficiencia de los lenguajes
y voy a hacer otra cosa
voy a tratar de recuperar
la distribución original Pn
integrando
la distribución conjunta con respecto a epsilon
lo que hice fue
construir un modelo mas sofisticado
que tiene dos restricciones
restringe el numero promedio de proyectos
y la cantidad promedio de tiempo dedicado
a un lenguaje en particular
y ahora lo que hare es
integrar esta variable oculta
si hago eso, si hago esta integral
obtengo esto
aun tengo este factor de e a la menos lambda_1 por n
llamare esto lambda prima
aun tengo este factor de 1 sobre Z
y luego solo queda por hacer
esta pequeña integral
menos lambda_2 n ε dε
y eso es igual a 1 sobre n menos lambda_2
por e a la menos lambda_2 n ε
el rango de la integral es de cero a infinito
y cuando pongo estos términos aquí
mi forma funcional final, y repito
no estoy llevando registro de todas las multiplicaciones
así que transformo Z en Z' para absorver todos estos factores
la forma funcional final
se ve como una exponencial arriba
dividida por n
así que mi nueva forma funcional
para la abundancia de lenguajes
es modificada
previamente, para recordarle
previamente, cuando hice Max. Ent.
restringiendo solo el numero promedio de proyectos
mi distribución de popularidad de lenguajes
se veia como una exponencial
y nos dimos cuenta de que no concuerda
este es el ajuste que ve en la gráfica
pero ahora, lo que hicimos
[Forma funcional de la Max. Ent. con dos restricciones]
es producir una distribución conjunta con dos restricciones
una de las restricciones es la misma
la otra es una nueva restricción
que involucra una variable oculta
eficiencia para programar
y cuando integro esa variable oculta
obtengo una nueva forma funcional
para la popularidad de los lenguajes
en particular, encontramos que es proporcional
a e a la menos lamda n dividida por n
esta distribución es llamada
la serie de logaritmos de Fisher
[Esta distribución es llamada la serie de logaritmos de Fisher]
entonces esta es la forma funcional
que obtuvimos integrando
la variable oculta, eficiencia para programar
y lo que puede ver ahora es que
esa distribución es un mejor modelo para la popularidad de los lenguajes
y lo que hemos hecho aquí
solo para aclararlo
es postular una restricción adicional
que involucra una variable oculta
que no podemos ver
e integramos en función de esta
lo que debería impresionarnos
es el hecho de que no solo
obtuvimos un buen ajuste
sino también del mecanismo que lo soporta
que es lo que el modelo de Max. Ent. le sugiere
sugiere que estas dos cosas que están fijas
los lenguajes no tienden a ser muy populares
en promedio
hay una especie de limite en que tan popular puede volverse un lenguaje
en promedio
ese es el origen de esta restricción
pero también hay un limite
en que tanto tiempo o esfuerzo puede ser dedicado
a los proyectos en un lenguaje en particular
y esa es esta restricción de aquí
esencialmente, lo que esta pasando
es que estos lenguajes aquí arriba
pueden volverse mas populares
porque no consumen mucho tiempo de programación por proyecto
en el lenguaje de un ecologista
estas son especias muy abundantes
con necesidades metabólicas bajas
así que somos capases de reproducir
estos lenguajes realmente populares
podemos explicar con precision, o
podemos predecir con precision
que deben haber lenguajes extremadamente populares
como C, C++ y Java
y también podemos explicar
porque la popularidad de los lenguajes en la cola
es menor a la esperada
con el modelo exponencial
en particular, posiblemente,
muchos de estos lenguajes están asociados con menores eficiencias
o mas bien, con un epsilon mayor
lo que significa que hay una mayor cantidad de tiempo
dedicada por proyecto a esos lenguajes
e intuitivamente, programamos en Java
que es un lenguaje muy eficiente
comparado con Haskell
que es un lenguaje profundamente bello
pero este no es uno que se asocia con eficiencia para
escribir librerías rápidas
para analizar paginas HTML
así, postulando la existencia de esta variable escondida
y usando argumentos de maxima entropía
podemos empezar a reproducir los datos
y se siente como si empezaremos a hablar
de restricciones importantes en el sistema
así que debe estar impresionado con esto
en parte porque es mas profundo
que el resultado que obtuvimos para el caso del taxi
en el caso del taxi escogimos una restricción en particular
y por coincidencia correspondía
con un modelo realmente simple
y usted podría decir
"Bien, yo podia inventar
ese modelo por mi cuenta
muchas gracias"
aqui lo que hemos hecho
es postular un conjunto de restricciones
que son sinónimos científicos
la primera restricción dice que
vamos a restringir el numero promedio de proyectos
así que el movimiento de código abierto puede hacer lo que quiera
mientras que mantenga fijo el numero promedio de proyectos por lenguaje
la gente toma decisiones
de hecho, están tomando decisiones
de la manera que es máximamente desordenada
esa es la parte de maxima entropía de la suposición
así que preservan
esta cantidad de aqui
en promedio
y aun mas
la comunidad de código libre
por cualquier metodo
o por cualquier grupo de metodos cognitivos
que le permite hacer esto
y posiblemente por muchos procesos diferentes interactuantes
también mantiene fijo el promedio
de tiempo de programación dedicado a un lenguaje en particular