Thomas Nield - Essential Math For Data Science-17-55.en - Es
Thomas Nield - Essential Math For Data Science-17-55.en - Es
Thomas Nield - Essential Math For Data Science-17-55.en - Es
com
CAPÍTULO 1
Comenzaremos el primer capítulo que cubre qué son los números y cómo funcionan las
variables y funciones en un sistema cartesiano. Luego cubriremos exponentes y logaritmos.
Después de eso, aprenderemos las dos operaciones básicas del cálculo: derivadas e integrales.
Antes de sumergirnos en las áreas aplicadas de las matemáticas esenciales, como la probabilidad, el
álgebra lineal, las estadísticas y el aprendizaje automático, probablemente deberíamos revisar
algunos conceptos básicos de matemáticas y cálculo. Antes de que dejes caer este libro y corras
gritando, ¡no te preocupes! Presentaré cómo calcular derivadas e integrales para una función de una
manera que probablemente no te enseñaron en la universidad. Tenemos a Python de nuestro lado, no
a lápiz y papel. Incluso si no está familiarizado con las derivadas y las integrales, no necesita
preocuparse.
Haré que estos temas sean lo más precisos y prácticos posible, centrándome solo en lo que nos ayudará en
capítulos posteriores y lo que cae bajo el paraguas de las "matemáticas esenciales".
1
Teoría de los números
¿Qué son los números? Prometo no ser demasiado filosófico en este libro, pero ¿no son los
números una construcción que hemos definido? ¿Por qué tenemos los dígitos del 0 al 9 y no
tenemos más dígitos que esos? ¿Por qué tenemos fracciones y decimales y no solo números
enteros? Esta área de las matemáticas en la que reflexionamos sobre los números y por qué los
diseñamos de cierta manera se conoce como teoría de números.
Números naturales
Estos son los números 1, 2, 3, 4, 5… y así sucesivamente. Aquí solo se incluyen números positivos,
y son el sistema más antiguo conocido. Los números naturales son tan antiguos que los hombres
de las cavernas marcaban los huesos y las paredes de las cuevas para llevar registros.
Números enteros
Sumado a los números naturales, posteriormente se aceptó el concepto de “0”; los
llamamos "números enteros". Los babilonios también desarrollaron la útil idea de la
notación de reserva de lugar para "columnas" vacías en números mayores que 9, como
"10", "1000" o "1090". Esos ceros indican que ningún valor ocupa esa columna.
enteros
Los números enteros incluyen números naturales positivos y negativos, así como el 0. Podemos
darlos por sentado, pero los antiguos matemáticos desconfiaban profundamente de la idea de
los números negativos. Pero cuando restas 5 de 3, obtienes -2. Esto es útil especialmente cuando
se trata de finanzas donde medimos ganancias y pérdidas. En el año 628 d. C., un matemático
indio llamado Brahmagupta demostró por qué los números negativos eran necesarios para que
la aritmética progresara con la fórmula cuadrática y, por lo tanto, se aceptaron los números
enteros.
Numeros racionales
Cualquier número que puedas expresar como una fracción, como 2/3, es un número racional.
Esto incluye todos los decimales y enteros finitos, ya que también se pueden expresar como
fracciones, como 687/100 = 6,87 y 2/1 = 2, respectivamente. Se les llama racionalporque ellos son
proporciones. Los números racionales rápidamente se consideraron necesarios porque el
tiempo, los recursos y otras cantidades no siempre se podían medir en unidades discretas. La
leche no siempre viene en galones. Es posible que tengamos que medirlo como partes de un
galón. Si corro durante 12 minutos, no se me puede obligar a medir millas enteras cuando en
realidad corrí 9/10 de milla.
Numeros irracionales
Los números irracionales no se pueden expresar como una fracción. Esto incluye el famoso π, las
raíces cuadradas de ciertos números como el 2 y el número de Euler.mi,lo que haremos
Hay una historia interesante detrás de los números irracionales. El matemático griego
Pitágoras creía que todos los números son racionales. Creía esto tan fervientemente que
hizo una religión que rezaba al número 10. “¡Bendícenos, número divino, tú que
engendraste dioses y hombres!” él y sus seguidores rezaban (por qué el “10” era tan
especial, no lo sé). Existe la leyenda de que uno de sus seguidores, Hippasus, demostró que
no todos los números son racionales simplemente demostrando la raíz cuadrada de 2. Esto
alteró gravemente el sistema de creencias de Pitágoras, y respondió ahogando a
Hippassus en el mar.
Numeros reales
Los números reales incluyen tanto números racionales como irracionales. En la práctica, cuando realiza
cualquier trabajo de ciencia de datos, puede tratar cualquier decimal con el que trabaje como números
reales.
En ciencia de datos, encontrará que la mayoría (si no todo) de su trabajo utilizará números
enteros, números naturales, enteros y números reales. Los números imaginarios se pueden
encontrar en casos de uso más avanzados, como la descomposición de matrices, que
abordaremos enCapítulo 4.
Orden de operaciones
Con suerte, usted está familiarizado conOrden de operaciones, que es el orden en que
resuelves cada parte de una expresión matemática. Como un breve repaso, recuerde que
evalúa los componentes entre paréntesis, seguidos de los exponentes, luego la multiplicación,
la división, la suma y la resta. Puede recordar el orden de las operaciones mediante el
dispositivo mnemotécnico PEMDAS (Por favor, disculpe a mi querida tía Sally), que corresponde
al orden de paréntesis, exponentes, multiplicación, división, suma y resta.
Orden de Operaciones | 3
Tomemos por ejemplo esta expresión:
3 + 22
2× −4
5
52
2× −4
5
A continuación resolvemos el exponente, que podemos ver está elevando al cuadrado ese 5 que acabamos de sumar.
Eso es 25:
25
2× −4
5
2 con el25,5dando50: 5
50
−4
5
10 -4
10 − 4 = 6
mi_valor=2*(3+2)**2/5-4
imprimir(mi_valor)#imprime 6.0
mi_valor=2*((3+2)**2/5)-4
imprimir(mi_valor)#imprime 6.0
Si bien ambos ejemplos son técnicamente correctos, el último es más claro para nosotros, los humanos que
nos confundimos fácilmente. Si usted u otra persona realiza cambios en su código, los paréntesis brindan una
referencia fácil del orden de operación a medida que realiza los cambios. Esto proporciona una línea de
defensa contra los cambios de código para evitar errores también.
Variables
Si ha realizado algunos scripts con Python u otro lenguaje de programación, tiene una idea de lo que
es una variable. En matemáticas, unvariablees un marcador de posición con nombre para un número
no especificado o desconocido.
Puede que tengas una variableXrepresentando cualquier número real, y puedes multiplicar esa
variable sin declarar cuál es. EnEjemplo 1-3tomamos una entrada variableXde un usuario y
multiplícalo por 3.
producto=3*X
imprimir(producto)
Hay algunos nombres de variables estándar para ciertos tipos de variables. Si estos nombres de variables y
conceptos no le son familiares, ¡no se preocupe! Pero algunos lectores pueden reconocer que usamos theta θ
para denotar ángulos y beta β para un parámetro en una regresión lineal. Los símbolos griegos crean
nombres de variables incómodos en Python, por lo que probablemente nombraríamos estas variablesthetay
betaen Python como se muestra enEjemplo 1-4.
Variables | 5
Ejemplo 1-4. Nombres de variables griegas en Python
beta=1.75
theta=30.0
Tenga en cuenta también que los nombres de las variables se pueden subíndice para que se puedan usar
varias instancias de un nombre de variable. Para propósitos prácticos, simplemente trátelos como variables
separadas. Si encuentra variablesX1,X2, yX3, simplemente trátelos como tres variables separadas como se
muestra enEjemplo 1-5.
Funciones
Funcionesson expresiones que definen relaciones entre dos o más variables. Más
específicamente, una función tomavariables de entrada(también llamadovariables de dominioo
variables independientes), los inserta en una expresión y luego da como resultado unvariable
de salida(también llamadovariable dependiente).
y =2x +1
Para cualquier valor de x dado, resolvemos la expresión con esoXencontrary. CuándoX=1, entonces y=
3. cuandoX=2,y=5. CuandoX=3,y=7 y así sucesivamente, como se muestra enTabla 1-1.
X 2x + 1 y
0 2(0) + 1 1
1 2(1) + 1 3
2 2(2) + 1 5
3 2(3) + 1 7
Las funciones son útiles porque modelan una relación predecible entre variables, como cuántos
incendiosypodemos esperar enXla temperatura. Usaremos funciones lineales para realizar
regresiones lineales enCapítulo 5.
fx =2x +1
definitivamenteF(X):
retorno2*X+1
valores_x=[0,1,2,3]
porXenvalores_x:
y=F(X)
imprimir(y)
Cuando se trata de números reales, una característica sutil pero importante de las funciones es que a
menudo tienen un número infinito de valores de x y valores de y resultantes. Pregúntese esto:
¿cuántos valores de x podemos poner a través de la funcióny =2x +1? En lugar de solo 0, 1, 2, 3... ¿por
qué no 0, 0,5, 1, 1,5, 2, 2,5, 3 como se muestra enTabla 1-2?
X 2x + 1 y
0.0 2(0) + 1 1
0.5 2(.5) + 1 2
1.0 2(1) + 1 3
1,5 2(1,5) + 1 4
2.0 2(2) + 1 5
2,5 2(2,5) + 1 6
3.0 2(3) + 1 7
¿O por qué no hacer cuartos de paso paraX? ¿O 1/10 de un paso? Podemos hacer estos pasos
infinitamente pequeños, mostrando efectivamentey =2x +1 es unfunción continua, donde para cada
valor posible deXhay un valor paray. Esto nos lleva muy bien a visualizar nuestra función como una
línea como se muestra enFigura 1-1.
Funciones | 7
Figura 1-1. Gráfico para la función y = 2x + 1
Cuando graficamos en un plano bidimensional con dos rectas numéricas (una para cada
variable) se conoce comoplano cartesiano,plano xy, oPlano coordinado. Trazamos un valor x
dado y luego buscamos el valor y correspondiente, y trazamos las intersecciones como una
línea. Note que debido a la naturaleza de los números reales (o decimales, si lo prefiere), hay un
número infinito deXvalores. Es por eso que cuando graficamos la funciónF(X) obtenemos una
línea continua sin interrupciones. Hay un número infinito de puntos en esa línea, o cualquier
parte de esa línea.
Si desea trazar esto usando Python, hay varias bibliotecas de gráficos desde Plotly hasta
matplotlib. A lo largo de este libro usaremos SymPy para realizar muchas tareas, y la
primera que usaremos es trazar una función. SymPy usa matplotlib, así que asegúrese de
tener ese paquete instalado. De lo contrario, imprimirá un gráfico feo basado en texto en
su consola. Después de eso, solo declara elXvariable a SymPy usandosímbolos(),declare su
función, y luego trácela como se muestra enEjemplo 1-7yFigura 1-2.
desimpatíaimportar*
X=simbolos('X') F=
2*X+1
trama(F)
desimpatíaimportar*
X=simbolos('X') F=
X**2+1
trama(F)
Nota enFigura 1-3no obtenemos una línea recta sino una curva suave y simétrica conocida
como parábola. Es continuo pero no lineal, ya que no produce valores en línea recta.
Funciones con curvas como esta son matemáticamente más difíciles de trabajar, pero
aprenderemos algunos trucos para que no sea tan malo.
Funciones curvilíneas
Funciones | 9
Figura 1-3. Usando SymPy para graficar una función exponencial
Tenga en cuenta que las funciones utilizan múltiples variables de entrada, no solo una. Por ejemplo, podemos
tener una función con variables independientesXyy. Tenga en cuenta queyno es dependiente como en los
ejemplos anteriores.
Como tenemos dos variables independientes (Xyy) y una variable dependiente (la salida deF(X,y
)), necesitamos trazar este gráfico en tres dimensiones para producir un plano de valores en
lugar de una línea, como se muestra enEjemplo 1-9yFigura 1-4.
Ejemplo 1-9. Declarar una función con dos variables independientes en Python
desimpatíaimportar*
desympy.plottingimportarplot3d
sumatorias
Prometí no usar ecuaciones llenas de símbolos griegos en este libro. Sin
embargo, hay uno que es tan común y útil que sería negligente no cubrirlo. A
suma se expresa como sigma Σ y suma elementos.
Por ejemplo, si quiero iterar los números del 1 al 5, multiplicar cada uno por 2 y
sumarlos, así es como lo expresaría usando una suma.Ejemplo 1-10muestra cómo
ejecutar esto en Python.
5
∑2yo = 2 1 + 2 2 + 2 3 + 2 4 + 2 5 = 30
yo =1
suma=suma(2*iporienalcance(1,6)) imprimir(
suma)
Tenga en cuenta queies una variable de marcador de posición que representa cada valor de índice consecutivo que
estamos iterando en el ciclo, que multiplicamos por 2 y luego sumamos todos juntos. Cuando usted
sumatorias | 11
están iterando datos, es posible que vea variables comoXiindicando un elemento en una colección en el índice
i.
La función rango()
∑10Xi
norte
yo =1
EnEjemplo 1-11usamos Python para ejecutar esta expresión en una colección de cuatro números. Tenga en cuenta
que en Python (y en la mayoría de los lenguajes de programación en general) generalmente hacemos referencia a
elementos que comienzan en el índice 0, mientras que en matemáticas comenzamos en el índice 1. Por lo tanto,
cambiamos en consecuencia en nuestra iteración comenzando en 0 en nuestroalcance().
X=[1,4,6,2] norte=
Len(X)
suma=suma(10*X[i]porienalcance(0,norte))
imprimir(suma)
Esa es la esencia de la suma. En pocas palabras, una suma Σ dice, "suma un montón de
cosas juntas", y usa un índiceiy un valor máximonortepara expresar cada iteración que
alimenta la suma. Los veremos a lo largo de este libro.
Sumas en SymPy
Siéntase libre de volver a esta barra lateral más tarde cuando aprenda más sobre SymPy. SymPy,
que usamos para graficar funciones, es en realidad una biblioteca matemática simbólica;
hablaremos de lo que esto significa más adelante en este capítulo. Pero tenga en cuenta para
referencia futura que una operación de suma en SymPy se realiza utilizando elSuma()operador. En
el siguiente código, iteramosidel 1 alnorte, multiplica cada unoi, y sumarlos. Pero luego usamos el
sustitutos ()función para especificarnortecomo 5, que luego iterará y sumará todoi elementos del 1
alnorte:
i,norte=simbolos('en')
# especificar n como 5,
# iterando los números del 1 al 5 hasta
5=suma.sustitutos(norte,5) imprimir(
hasta 5.hazlo())#30
Tenga en cuenta que las sumas en SymPy son perezosas, lo que significa que no se calculan
automáticamente ni se simplifican. Así que usa elhazlo()función para ejecutar la expresión.
Exponentes
Exponentesmultiplicar un número por sí mismo un número determinado de veces. Cuando elevas 2 a
la tercera potencia (expresado como 23usando 3 como superíndice), que es multiplicar tres 2 juntos:
23= 2 * 2 * 2 = 8
X2X3=x * x * x * x * x = x2 + 3=X5
Cuando multiplicamos exponentes con la misma base, simplemente sumamos los exponentes, lo que
se conoce como laregla del producto. Permítanme enfatizar que la base de todos los exponentes
multiplicados debe ser la misma para que se aplique la regla del producto.
X2
X5
Exponentes | 13
x*x
x*x*x*x*x
1
x*x*x
1
=X−3
X3
Qué pasa con laX−3, ¿te preguntas? Este es un buen punto para introducir exponentes
negativos, que es otra forma de expresar una operación exponencial en el denominador.
de una fracción. Demostrar,1es lo mismo queX−3:
X3
1
=X−3
X3
Al vincular la regla del producto, podemos ver que también se aplica a los exponentes negativos. Para
obtener intuición detrás de esto, abordemos este problema de una manera diferente. podemos expresar
X2
=X21 =X2X−5=X2 + −5=X−3
X5 X5
Por último, pero no menos importante, ¿puedes averiguar por qué cualquier base con un exponente de 0 es 1?
X0= 1
La mejor manera de obtener esta intuición es razonar que cualquier número dividido por sí mismo es 1.
Si usted tieneX3 es algebraicamente obvio que se reduce a 1. Pero esa expresión también
X3
evalúa aX0:
desimpatíaimportar*
X=simbolos('X') expr=X
**2/X**5 imprimir(expr
)#x**(-3)
Ahora, ¿qué pasa con los exponentes fraccionarios? Son una forma alternativa de representar raíces,
como la raíz cuadrada. Como un breve repaso, un 4 pregunta "¿Qué número multiplicado por
mismo me dará 4? que por supuesto es 2. Note aquí que 41/2es lo mismo que 4:
41/2= 4 = 2
Las raíces cúbicas son similares a las raíces cuadradas, pero buscan un número multiplicado por sí mismo
tres veces para dar un resultado. Una raíz cúbica de 8 se expresa como38 y pregunta
"¿Qué número multiplicado por sí mismo tres veces me da 8?" Este número sería 2 porque
2 * 2 * 2 = 8. En exponentes, una raíz cúbica se expresa como un exponente fraccionario, y38 se puede
reexpresar como 81/3:
81/3=38 = 2
Para volver a cerrar el círculo, ¿qué sucede cuando multiplicas la raíz cúbica de 8 tres
veces? Esto deshará la raíz cúbica y producirá 8. Alternativamente, si expresamos
la raíz cúbica como exponentes fraccionarios 81/3, queda claro que sumamos los exponentes
para obtener un exponente de 1. Eso también deshace la raíz cúbica:
1 1 1 1 1 1
+ +
38 *38 *38 = 83× 83× 83= 83 3 3= 81=8
83 2
= 83 × 2= 86
Exponentes | 15
Si no está seguro de por qué esto es así, intente expandirlo y verá que la regla de la suma lo
aclara:
83 2
= 8383= 83 + 3= 86
Por último, ¿qué significa cuando tenemos un exponente fraccionario con un numerador diferente
2
que 1, como 83? Bueno, eso es sacar la raíz cúbica de 8 y luego elevarla al cuadrado. Echar un vistazo:
2 12
83= 83= 22= 4
Y sí, los números irracionales pueden servir como exponentes como 8π, que es 687.2913. Esto
puede parecer poco intuitivo, ¡y es comprensible! En aras del tiempo, no profundizaremos en
esto, ya que requiere algunos cálculos. Pero esencialmente, podemos calcular exponentes
irracionales aproximando con un número racional. Esto es efectivamente lo que hacen las
computadoras, ya que de todos modos solo pueden calcular hasta tantos lugares decimales.
Por ejemplo, π tiene un número infinito de decimales. Pero si tomamos los primeros 11 dígitos,
3,1415926535, podemos aproximar π como un número racional 31415926535 / 10000000000.
Efectivamente, esto nos da aproximadamente 687,2913, que debería coincidir
aproximadamente con cualquier calculadora:
31415926535
8π≈ 810000000000≈ 687.2913
logaritmos
Alogaritmoes una función matemática que encuentra una potencia para un número y una base específicos.
Puede que no suene interesante al principio, pero en realidad tiene muchas aplicaciones. Desde la medición
de terremotos hasta la gestión del volumen de su estéreo, el logaritmo se encuentra en todas partes.
También encuentra mucho su camino en el aprendizaje automático y la ciencia de datos. De hecho, los
logaritmos serán una parte clave de las regresiones logísticas enCapítulo 6.
2X=8
Intuitivamente sabemos la respuesta,x =3, pero necesitamos una forma más elegante de expresar esta
operación matemática común. Esto es lo queIniciar sesiónla función es para.
Como puede ver en la expresión logarítmica anterior, tenemos una base 2 y estamos encontrando una
potencia que nos dé 8. De manera más general, podemos reexpresar un exponente variable como un
logaritmo:
aX= segundo
Iniciar sesiónasegundo = x
Hablando algebraicamente, esta es una forma de aislar elX, que es importante resolver para X.
Ejemplo 1-12muestra cómo calculamos este logaritmo en Python.
deMatemáticasimportarIniciar sesión
imprimir(X)#imprime 3.0
Cuando no proporciona un argumento base a unIniciar sesión()funcione en una plataforma como Python,
normalmente tendrá una base predeterminada. En algunos campos, como las mediciones de terremotos, la
base predeterminada para el registro es 10. Pero en la ciencia de datos, la base predeterminada para el
registro es el número de Euler.mi.Python usa este último, y hablaremos demidentro de poco.
Al igual que los exponentes, los logaritmos tienen varias propiedades cuando se trata de multiplicaciones,
divisiones, exponenciaciones, etc. En aras del tiempo y el enfoque, solo presentaré esto enTabla 1-3. La idea
clave en la que centrarse es que un logaritmo encuentra un exponente para una base dada para dar como
resultado un número determinado.
División xm
=xm−norte registrar un=registrar un−registro b
b
xn
exponenciación xm norte =xmn registrar un=norte×registrar
logaritmos | 17
Número de Euler y logaritmos naturales
Hay un número especial que aparece bastante en matemáticas llamado número de Euler.mi. Es
un número especial muy parecido a Pi π y es aproximadamente 2,71828.mise usa mucho
porque matemáticamente simplifica muchos problemas. vamos a cubrirmien el contexto de
exponentes y logaritmos.
Número de Euler
Una propiedad del número de Euler es que su función exponencial es una derivada de sí mismo,
lo cual es conveniente para funciones exponenciales y logarítmicas. Aprenderemos acerca de las
derivadas más adelante en este capítulo. En muchas aplicaciones donde la base realmente no
importa, elegimos la que resulta en la derivada más simple, y ese es el número de Euler. Por eso
también es la base predeterminada en muchas funciones de ciencia de datos.
Así es como me gusta descubrir el número de Euler. Digamos que le prestas $100 a alguien con
un 20% de interés anual. Por lo general, el interés se capitalizará mensualmente, por lo que el
interés de cada mes sería . 20/12 = . 01666. ¿A cuánto ascenderá el saldo del préstamo después
de dos años? Para simplificar, supongamos que el préstamo no requiere pagos (y no se realizan
pagos) hasta el final de esos dos años.
Reuniendo los conceptos de exponentes que aprendimos hasta ahora (o tal vez sacando un
libro de texto de finanzas), podemos encontrar una fórmula para calcular el interés. consiste en
un equilibrioApara una inversión inicialPAG, tasa de interésr, espacio de tiempot(número de
años) y períodosnorte(número de meses de cada año). Aquí está la fórmula:
r Nuevo Testamento
UNA = PAG× 1 +
norte
Entonces, si fuéramos a capitalizar el interés cada mes, el préstamo crecería a $148.69 como se
calcula aquí:
r Nuevo Testamento
UNA = PAG× 1 +
norte
deMatemáticasimportarExp
pag=100
r= .20
t=2.0
norte=12
a=pag*(1+(r/norte))**(norte*t)
imprimir(a)#estampas 148.69146179463576
r Nuevo Testamento
UNA = PAG× 1 +
norte
. 20365 × 2
100 × 1 + = 149.1661279
365
¡Eh! Si capitalizamos nuestro interés diariamente en lugar de mensualmente, ganaríamos 47.4666 centavos
más al final de dos años. Si nos volvimos codiciosos, ¿por qué no componer cada hora como se muestra a
continuación? ¿Eso nos dará aún más? Hay 8.760 horas en un año, así que establezcanortea ese valor:
r Nuevo Testamento
UNA = PAG× 1 +
norte
. 208760 × 2
100 × 1 + = 149.1817886
8760
r Nuevo Testamento
UNA = PAG× 1 +
norte
. 20 525600 × 2
100 × 1 + = 149.1824584
525600
UNA = PAG×mirt
Volviendo a nuestro ejemplo, calculemos el saldo de nuestro préstamo después de dos años si
capitalizamos continuamente:
UNA = PAG×mirt
Esto no es demasiado sorprendente considerando que la capitalización de cada minuto nos dio un
saldo de 149.1824584. Eso nos acercó mucho a nuestro valor de 149.1824698 al capitalizar
continuamente.
deMatemáticasimportarExp
a=pag*Exp(r*t)
imprimir(a)#huellas 149.18246976412703
r Nuevo Testamento
UNA = PAG× 1 +
norte
UNA = PAG×mirt
forever se hace más y más grande, acercándose así al infinito. Intente experimentar
con valores cada vez más grandes paranorte. Al hacerlo cada vez más grande notarás
algo:
1norte
1+
norte
1 100
1+ = 2.70481382942
100
1 1000
1+ = 2.71692393224
1000
1 10000
1+ = 2.71814592682
10000
1 10000000
1+ = 2.71828169413
10000000
Más adelante en el libro, usaremos el número de Euler para construir distribuciones normales
en Capítulo 3y regresiones logísticas enCapítulo 6.
Logaritmos naturales
Sin embargo, en Python, un logaritmo natural se especifica mediante elIniciar sesión()función. Como se
discutió anteriormente, la base predeterminada para elIniciar sesión()la función esmi.Simplemente deje el
segundo argumento para la base vacío y se usará de manera predeterminadamicomo la base que se muestra
en Ejemplo 1-15.
deMatemáticasimportarIniciar sesión
Usaremosmien varios lugares a lo largo de este libro. Siéntase libre de experimentar con
exponentes y logaritmos utilizando Excel, Python, Desmos.com o cualquier otra
plataforma de cálculo de su elección. Haz gráficos y siéntete cómodo con el aspecto de
estas funciones.
Límites
Como hemos visto con el número de Euler, surgen algunas ideas interesantes cuando siempre
aumentamos o disminuimos una variable de entrada y la variable de salida se acerca a un valor
pero nunca lo alcanza. Exploremos formalmente esta idea.
1
=
efectos especiales
X
Figura 1-5. Una función que siempre tiende a 0 pero nunca llega a 0
1
límite =0
X ∞X
La forma en que leemos esto es "cuando x tiende a infinito, la función 1/x tiende a 0 (pero nunca llega
a 0)". Verá mucho este tipo de comportamiento de "acercarse pero nunca tocarse", especialmente
cuando nos sumergimos en derivadas e integrales.
Usando SymPy, podemos calcular a qué valor nos acercamosfx =1comoXtiende a infinito ∞ (
X
Ejemplo 1-16). Tenga en cuenta que ∞ se expresa inteligentemente en SymPy conoh
desimpatíaimportar*
X=simbolos('X') F=
1/X
resultado=límite(F,X,oh)
imprimir(resultado)#0
Como has visto, descubrimos el número de Eulermide esta manera también. Es el resultado de
extender para siemprenortehasta el infinito para esta función:
1norte
límite 1 + =mi =2.71828169413...
norte∞ norte
Curiosamente, cuando calculamos el número de Euler con límites en SymPy (que se muestra en el
siguiente código), SymPy lo reconoce inmediatamente como el número de Euler. podemos llamar
evaluar()entonces podemos mostrarlo como un número:
desimpatíaimportar*
norte=simbolos('norte') F=(1+(1
/norte))**n resultado=límite(F,
norte,oh)
imprimir(resultado)#mi
imprimir(resultado.evaluar())#2.71828182845905
Límites | 23
El poder de SymPy
SymPyes un poderoso y fantástico sistema de álgebra computarizada (CAS) para Python
que usa cálculo simbólico exacto en lugar de cálculo aproximado usando decimales. Es útil
para aquellas situaciones en las que usaría "lápiz y papel" para resolver problemas de
matemáticas y cálculo, con el beneficio de usar la sintaxis familiar de Python. En lugar de
representar la raíz cuadrada de 2 aproximando 1.4142135623730951, la conservará
exactamente comosqrt2 .
Entonces, ¿por qué no usar SymPy para todo lo relacionado con las matemáticas? Si bien lo usaremos a lo largo
de este libro, es importante seguir sintiéndose cómodo haciendo matemáticas de Python con decimales simples,
ya que scikit-learn y otras bibliotecas de ciencia de datos adoptan este enfoque. Es mucho más rápido para las
computadoras usar decimales en lugar de símbolos. SymPy también tiene problemas cuando las expresiones
matemáticas comienzan a hacerse demasiado grandes. Pero mantenga SymPy en su bolsillo trasero como su
ventaja, y no se lo cuente a sus hijos de secundaria y universitarios. Literalmente pueden usarlo para hacer su
tarea de matemáticas.
Derivados
Volvamos a hablar de funciones y mirémoslas desde una perspectiva de cálculo,
comenzando con las derivadas. Aderivadoindica la pendiente de una función, y es útil para
medir la tasa de cambio en cualquier punto de una función.
¿Por qué nos preocupamos por los derivados? A menudo se utilizan en el aprendizaje automático y
otros algoritmos matemáticos, especialmente con descenso de gradiente. Cuando la pendiente es 0,
eso significa que estamos en el mínimo o máximo de una variable de salida. Este concepto será útil
más adelante cuando hagamos una regresión lineal (Capítulo 5), Regresión logística (Capítulo 6) y
redes neuronales (Capítulo 7).
Comencemos con un ejemplo simple. Echemos un vistazo a la función.fx = x2en Figura 1-6.
¿Qué tan “empinada” es la curva enx = 2?
Observe que podemos medir la "inclinación" en cualquier punto de la curva, y podemos visualizar esto
con una línea tangente. Pensar en unlinea tangentecomo una línea recta que “apenas toca” la curva en
un punto dado. También proporciona la pendiente en un punto dado. Puede estimar crudamente una
línea tangente en un valor de x dado creando una línea que interseque ese valor de x y unmuy cerca
valor de x vecino en la función.
Derivados | 25
Puedes calcular rápidamente la pendientemetroentre dos puntos usando la fórmula simple de aumento y
desbordamiento:
y2−y1
metro =
X2−X1
4,41 − 4,0
metro =
2,1 - 2,0
metro =4.1
si hice elXpaso entre los dos puntos aún más pequeño, comoX=2 yX=2.00001, lo que resultaría
enF(2) = 4 yF(2.00001) = 4.00004, eso obtendríaDe Verdadcerca de la pendiente real de 4.
Entonces, cuanto menor sea el paso al valor vecino, más nos acercaremos al valor de la
pendiente en un punto dado de la curva. Como tantos conceptos importantes en matemáticas,
encontramos algo significativo cuando nos acercamos a valores infinitamente grandes o
infinitamente pequeños.
definitivamentederivado_x(F,X,Numero de pie):
metro=(F(X+Numero de pie)-F(X))/((X+Numero de pie)-X) retorno
metro
definitivamentemi_funcion(X):
retornoX**2
pendiente_en_2=derivado_x(mi_funcion,2,.00001)
imprimir(pendiente_en_2)#impresiones 4.000010000000827
Ahora, la buena noticia es que hay una forma más limpia de calcular la pendiente en cualquier parte
de una función. Ya hemos estado usando SymPy para trazar gráficos, pero le mostraré cómo también
puede realizar tareas como derivadas utilizando la magia de la computación simbólica.
Cuando te encuentras con una función exponencial comofx = x2la función derivada hará
que el exponente sea un multiplicador y luego disminuirá el exponente en 1, dejando
nosotros con la derivadadX2= 2X.Éldindica underivada con respecto a x, cual
dx dx
dice que estamos construyendo una derivada apuntando al valor de x para obtener su pendiente. Entonces, si
queremos encontrar la pendiente enX=2, y tenemos la función derivada, simplemente reemplazamos ese valor de x
para obtener la pendiente:
fx = x2
Si tiene la intención de aprender estas reglas para calcular derivadas a mano, hay muchos libros de
cálculo para eso. Pero hay algunas buenas herramientas para calcular derivadas simbólicamente para
ti. La biblioteca de Python SymPy es gratuita y de código abierto, y se adapta muy bien al uso de la
sintaxis de Python.Ejemplo 1-18muestra cómo calcular la derivada de
fx = x2en SymPy.
desimpatíaimportar*
¡Guau! Entonces, al declarar variables usando elsímbolos()función en SymPy, luego puedo proceder a
usar la sintaxis normal de Python para declarar mi función. Después de eso puedo usar
diferencia()para calcular la función derivada. EnEjemplo 1-19luego podemos llevar nuestra
función derivada de vuelta a Python simple y simplemente declararla como otra función.
definitivamenteF(X):
retornoX**2
definitivamentedx_f(X):
retorno2*X
pendiente_en_2=dx_f(2.0)
imprimir(pendiente_en_2)#imprime 4.0
Si desea seguir usando SymPy, puede llamar alsustitutos ()función para cambiar elX
variable con el valor2como se muestra enEjemplo 1-20.
Derivados | 27
Ejemplo 1-20. Uso de la función de sustitución en SymPy
Derivadas parciales
Otro concepto que encontraremos en este libro esDerivadas parciales, que usaremos en
los capítulos5,6, y7. Estas son derivadas de funciones que tienen múltiples variables de
entrada.
Piénsalo de esta manera. En lugar de encontrar la pendiente en una función unidimensional, tenemos
pendientes con respecto a múltiples variables en varias direcciones. Para cada derivada variable dada,
asumimos que las otras variables se mantienen constantes. Echa un vistazo a la
gráfico 3D defx, y =2X3+ 3y3enFigura 1-8, y verá que tenemos pendientes en dos
direcciones para dos variables.
Tomemos la funciónfx, y =2X3+ 3y3. ÉlXyycada variable obtiene sus propias derivadas
dyd.Estos representan los valores de la pendiente con respecto a cada variable.
dx dy
sobre una superficie multidimensional. Técnicamente las llamamos "pendientes"
gradientescuando se trata de múltiples dimensiones. Estas son las derivadas deXyy,
seguido del código SymPy para calcular esas derivadas:
desimpatíaimportar*
desympy.plottingimportarplot3d
imprimir(dx_f)#imprime 6*x**2
imprimir(dy_f)#imprime 9*y**2
# trazar la función
plot3d(F)
Así que para (X,y) valores (1,2), la pendiente con respecto aXes 6 1 = 6 y la pendiente con
respecto ayes 9 22= 36.
SymPy nos permite hacer algunas exploraciones interesantes sobre matemáticas. Toma nuestra función
fx = x2; aproximamos una pendiente parax =2 dibujando una línea a través de un punto vecino
cercanox =2,0001 añadiendo un paso 0,0001. ¿Por qué no usar un límite para disminuir para
siempre ese paso?sy ver a qué pendiente se acerca?
x + s2−X2
límite
s 0 x+s−x
Derivados | 29
En nuestro ejemplo, estamos interesados en la pendiente dondex =2 así que sustituyamos eso:
2 +s2− 22
límite =4
s 0 2 +s -2
Siempre acercándose a un tamaño de pasosa 0 pero sin llegar nunca a él (recuerde que el punto vecino
no puede tocar el punto enx =2, de lo contrario no tenemos línea!), podemos usar un límite para ver que
convergemos en una pendiente de 4 como se muestra enEjemplo 1-22.
desimpatíaimportar*
# declarar función
F=X**2
# calcula la pendiente en x = 2
# acercarse infinitamente al tamaño de paso _s_ a 0
resultado=límite(pendiente_2,s,0)
imprimir(resultado)#4
Ahora, ¿qué pasa si no asignamos un valor específico aXy dejarlo solo? ¿Qué sucede si disminuimos
nuestro tamaño de paso?sinfinitamente hacia 0? echemos un vistazoEjemplo 1-23.
desimpatíaimportar*
# declarar función
F=X**2
imprimir(resultado)#2x
Eso nos dio nuestra función derivada.2x.SymPy fue lo suficientemente inteligente como para descubrir
nunca permita que nuestro tamaño de paso llegue a 0, sino que siempre se acerque a 0. Esto convergefx = x2
para llegar a su contraparte derivada 2X.
La regla de la cadena
EnCapítulo 7cuando construimos una red neuronal, vamos a necesitar un truco matemático especial
llamado regla de la cadena. Cuando compongamos las capas de la red neuronal, tendremos que
desenredar las derivadas de cada capa. Pero por ahora aprendamos la regla de la cadena con un
ejemplo algebraico simple. Digamos que le dan dos funciones:
y = x2+ 1
z = y3− 2
Observe que estas dos funciones están vinculadas, porque elyes la variable de salida en la primera
función pero es la variable de entrada en la segunda. Esto significa que podemos sustituir la primera
funciónyen la segunda funciónzMe gusta esto:
3
z = x2+ 1 − 2
desimpatíaimportar*
z=(X**2+1)**3-2 dz_dx=
diferencia(z,X) imprimir
(dz_dx)
# 6*x*(x**2 + 1)**2
2
Entonces nuestra derivada parazcon respecto aXes 6XX2+ 1 :
dz 3
X2+ 1 − 2
dx
Derivados | 31
2
= 6XX2+ 1
Pero mira esto. Comencemos de nuevo y tomemos un enfoque diferente. Si tomamos las
derivadas de losyyzfunciones por separado, y luego las multiplica juntas, esto también produce
la derivada dezcon respecto aX! Vamos a intentarlo:
dy
X2+ 1 = 2X
dx
dz
y3− 2 = 3y2
dy
dz
= 2X3y2= 6xy2
dx
2
Muy bien, 6xy2puede que no parezca 6XX2+ 1 , pero eso es solo porque no tenemos
sustituyó elyfunción todavía. Haz eso para que tododzla derivada se expresa en
dx
términos deXsin quey.
dz 2
= 6xy2= 6XX2+ 1
dx
2
Ahora vemos que tenemos la misma función derivada 6XX2+ 1!
Este es elcadena de reglas, que dice que para una función daday(con variable de entradaX)
compuesta en otra funciónz(con variable de entraday), podemos encontrar la derivada dez
con respecto aXmultiplicando las dos derivadas respectivas entre sí:
dz dz dy
= ×
dx dy dx
Ejemplo 1-25muestra el código SymPy que hace esta comparación, mostrando que la
derivada de la regla de la cadena es igual a la derivada de la función sustituida.
desimpatíaimportar*
X,y=simbolos('x y')
La regla de la cadena es una parte clave del entrenamiento de una red neuronal con los pesos y
sesgos adecuados. En lugar de desenredar la derivada de cada nodo en forma de cebolla anidada,
podemos multiplicar las derivadas en cada nodo, lo que es matemáticamente mucho más fácil.
Integrales
El opuesto de una derivada es unaintegral, que encuentra el área bajo la curva para un rango
dado. en capítulos2y3, estaremos encontrando las áreas bajo distribuciones de probabilidad.
Aunque no usaremos integrales directamente, y en su lugar usaremos funciones de densidad
acumulativa que ya están integradas, es bueno saber cómo las integrales encuentran áreas bajo
curvas.Apéndice Acontiene ejemplos del uso de este enfoque en distribuciones de probabilidad.
Quiero adoptar un enfoque intuitivo para aprender integrales llamado Reimann Sums, uno que
se adapte de manera flexible a cualquier función continua. Primero, señalemos que encontrar el
área de un rango debajo de una línea recta es fácil. Digamos que tengo una funciónfx =2X y
quiero encontrar el área debajo de la línea entre 0 y 1, como se sombrea enFigura 1-9.
Integrales | 33
Figura 1-9. Cálculo de un área bajo una función lineal
Observe que estoy encontrando el área delimitada entre la línea y el eje x, y en elXrango
de 0.0 a 1.0. Si recuerda fórmulas geométricas básicas, el áreaApor un triangulo
esun =12bℎdondebes la longitud de la base yhes la altura podemos visualmente
detectar esosegundo =1 yℎ =2. Entonces, conectando la fórmula, obtenemos para nuestra área 1.0 como se
calcula aquí:
1
un = bℎ
2
1
un = * 1 * 2
2
un =1
Eso no estuvo mal, ¿verdad? Pero veamos una función en la que es difícil encontrar el área
debajo:fx = x2+ 1. ¿Cuál es el área entre 0 y 1 sombreada enFigura 1-10?
Nuevamente estamos interesados en el área debajo de la curva y arriba del eje x, solo dentro delX
rango entre 0 y 1. La curvatura aquí no nos da una fórmula geométrica clara para encontrar el área,
pero aquí hay un pequeño truco inteligente que puedes hacer.
¿Qué pasa si empacamos cinco rectángulos de igual longitud debajo de la curva como se
muestra en Figura 1-11, donde la altura de cada uno se extiende desde el eje x hasta donde el
punto medio toca la curva?
el area de un rectangulo esun =largo × ancho, por lo que podríamos sumar fácilmente las áreas
de los rectángulos. ¿Nos daría eso una buena aproximación del área bajo la curva? ¿Qué pasa si
empacamos 100 rectángulos? 1,000? 100,000? A medida que aumentamos el número de
rectángulos mientras disminuimos su ancho, ¿no nos acercaríamos al área bajo la curva? Sí, lo
haríamos, y es otro caso más en el que aumentamos/disminuimos algo hacia el infinito para
acercarnos a un valor real.
Integrales | 35
Figura 1-11. Rectángulos de embalaje debajo de una curva para aproximar el área
Probémoslo en Python. Primero necesitamos una función que aproxime una integral que
llamaremosintegral_aproximada().Los argumentosaybespecificará el mínimo y el máximo
de laXrango, respectivamente.norteserá el número de rectángulos a empacar, yF
será la función que estamos integrando. Implementamos la función enEjemplo 1-26,
y luego usarlo para integrar nuestra funciónfx = x2+ 1 con cinco rectángulos, entre
0,0 y 1,0.
definitivamenteintegral_aproximada(a,b,norte,F):
delta_x=(b-a)/n
suma_total=0
porienalcance(1,norte+1):
punto medio=0.5*(2*a+delta_x*(2*i-1)) Suma total+=F(
punto medio)
retornoSuma total*delta_x
definitivamentemi_funcion(X):
retornoX**2+1
área=integral_aproximada(a=0,b=1,norte=5,F=mi_funcion)
Entonces obtenemos un área de 1.33. ¿Qué pasa si usamos 1,000 rectángulos? Probemos en
Ejemplo 1-27.
área=integral_aproximada(a=0,b=1,norte=1000,F=mi_funcion)
imprimir(área)#imprime 1.333333250000001
Bien, estamos obteniendo algo más de precisión aquí y obteniendo algunos lugares decimales más. ¿Qué
pasa con un millón de rectángulos como se muestra enEjemplo 1-28?
área=integral_aproximada(a=0,b=1,norte=1_000_000,F=mi_funcion)
imprimir(área)#imprime 1.3333333333332733
OK, creo que estamos obteniendo un rendimiento decreciente aquí y convergiendo en el valor 1.333
donde la parte ".333" se repite para siempre. Si fuera un número racional, es probable que 4/3 = 1,333.
A medida que aumentamos el número de rectángulos, la aproximación comienza a alcanzar su límite
con decimales cada vez más pequeños.
Ahora que tenemos algo de intuición sobre lo que estamos tratando de lograr y por qué,
hagamos un enfoque más exacto con SymPy, que admite números racionales, en Ejemplo
1-29.
desimpatíaimportar*
imprimir(área)#impresiones 4/3
Integrales | 37
¡Fresco! Entonces, el área en realidad es 4/3, que es en lo que convergió nuestro método anterior.
Desafortunadamente, Python simple (y muchos lenguajes de programación) solo admiten decimales,
pero los sistemas de álgebra computacional como SymPy nos brindan números racionales exactos.
Usaremos integrales para encontrar áreas bajo curvas en los capítulos2y3, aunque haremos que scikit-
learn haga el trabajo por nosotros.
La idea principal sigue mucho de lo que hicimos antes: empaqueta rectángulos bajo una curva y
hazlos infinitamente más pequeños hasta que nos acerquemos al área exacta. Pero, por
supuesto, los rectángulos no pueden tener un ancho de 0... solo tienen que seguir acercándose a
0 sin llegar nunca a 0. Es otro caso de usar límites.
Khan Academy tiene un gran artículoexplicando cómo usar los límites para Reimann Sums, pero así es
como lo hacemos en SymPy como se muestra enEjemplo 1-30.
desimpatíaimportar*
imprimir(área)#impresiones 4/3
Conclusión
En este capítulo cubrimos algunos fundamentos que usaremos para el resto de este libro. Desde la
teoría de números hasta los logaritmos y las integrales de cálculo, destacamos algunos conceptos
matemáticos importantes relevantes para la ciencia de datos, el aprendizaje automático y el análisis.
Es posible que tenga preguntas acerca de por qué estos conceptos son útiles. ¡Eso vendrá después!
Antes de pasar a discutir la probabilidad, tómate un poco de tiempo para repasar estos conceptos una
vez más y luego haz los siguientes ejercicios. Siempre puede volver a visitar este capítulo a medida
que avanza en este libro y actualizar según sea necesario cuando comience a aplicar estas ideas
matemáticas.
Ejercicios
1. ¿El valor 62.6738 es racional o irracional? ¿Por qué o por qué no?
Conclusión | 39