Funciones para optimización en R

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

Algunos de nuestros reconocimientos:

Premios KeepCoding

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!

Artículos ms leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado