Funciones para optimización en R

Autor: | Última modificación: 18 de octubre de 2022 | Tiempo de Lectura: 2 minutos
Temas en este post:

Podemos utilizar diferentes funciones para optimización en R que, dada una función, nos encuentran el mínimo iterando de forma similar a como hemos visto. Por esto, en este post, te presentamos algunas funciones para optimización en R.

Algunas funciones para optimización en R

Primera función

La primera de estas funciones para optimización en R es una función de una sola dimensión que nos permite calcular el mínimo entre -10 y 10:

In 1: ?optim

In 1: myfunc2 <- function (x) {0.05 * x ^ 2 + sin(x)}

In 1: o <- optimize (myfunc2, interval-c (-10, 10))
        o

$minimum

-1,42755377906257

$objective

-0,877862826571527

En este caso, el mínimo es -1,42755377906257 y el valor que alcanzamos en ese mínimo es -0,877862826571527.

En la recta, el mínimo sería X y el valor objetivo sería Y.

En este caso, al ser una función de una sola dimensión, nos arroja directamente el mínimo absoluto. No se va a quedar en el mínimo local porque es un intervalo pequeño y explora todo (-10, 10).

In : x <- seq (-10, 10, length.out = 100)
y <- myfunc2(x)

options (repr. plot. height = 4, repr. plot. width = 6)
plot (x, y, t = "l")
points (osminimum, osobjective,co l= "blue")

La gráfica de esta función quedaría así:

optimización en R: gráfica primera función

Segunda función

La segunda de las funciones para optimización en R de la que hablaremos es un poco más compleja, ya que es de dos dimensiones:

In 1: #myfunc30 <- function(x1, x2) (sin(x1 + 0.01) *sin(x2)/(x1(x2-0.005))
myfunc3D <- function (x1,x2) {log(abs((sin(x1) (x2 * x1 + 3)) ^ 2 * cos(x2)))}

plotMyFunc <- function (mytunc, margin) {
       x <- seq(margin[1]. margin[2]. length = 100)
       y <- seq(margin[1], margin[2]. length = 100)
       z <- outer (x, y, myfunc)
       image (x, y, z, col = terrain.colors (39))
       contour (x, y, z, add = T)
}

myfuncVector <- function(x) { myfunc3D (x[1], x[2])}

In [ ]: o <- optim (c(5,1), myfuncVector, hessian = TRUE)
         o

El resultado sería el siguiente:

$par

6,28318530717959

1,5707963267949

$value

-104.113243291428

$counts

function: 329 gradient: <NA>

$convergence

0

$message

NULL

$hessian

Vemos que en el primer ejemplo utilizamos la función optimize, y en este segundo caso, utilizamos optim. Ambas cumplen el mismo objetivo, solo que en el primer caso se utiliza para funciones de una dimensión, mientras que en el segundo se utiliza optim para resolver funciones de dos dimensiones.

La gráfica de esta función quedaría así:

optimización en R: gráfica segunda función

¿Qué sigue?

Sabemos que las funciones para optimización en R son un tema mucho más amplio que puede llegar a ser abrumador. Si te gustaría continuar formándote con la guía de un profesional en la materia, no te pierdas nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. En poco tiempo, dominarás la teoría y la práctica de ese mundillo para incursionar rápidamente en el mercado laboral con mejores oportunidades de empleo. ¡Anímate a solicitar más información para descubrir cómo puedes cambiar tu vida!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.