Análisis de la Innovación Empresarial mediante un Modelo de Aprendizaje Automático

Introducción

Actualmente, en Colombia, la tecnología y la información ocupan un lugar central. El país avanza decididamente hacia la innovación, y la Encuesta de Desarrollo e Innovación Tecnológica (EDIT) se establece como una herramienta fundamental para orientar tanto a las empresas como al gobierno en la identificación de oportunidades y el impulso del progreso. La EDIT funciona como un sofisticado radar que el DANE activa para observar cómo las empresas colombianas emplean la tecnología en la creación de nuevos productos y servicios, ofreciendo así un análisis del ritmo innovador de la industria.

Durante la edición de 2019-2020 de la EDIT, se examinaron más de 7,000 empresas, revelando que muchas de ellas están activas en sectores como la moda, la alimentación, los plásticos, y la impresión. Resulta inspirador observar cómo empresas de diversos tamaños participan activamente en el proceso innovador. Este informe se sumerge en los datos recopilados por la EDIT, empleando métodos analíticos como KNN y Árboles de Clasificación para explorar cómo las empresas colombianas están generando y protegiendo sus innovaciones.

La innovación va más allá de la creación de ideas; también se requiere protegerlas mediante patentes, las cuales son esenciales para preservar la propiedad intelectual. Patentar no solo busca proteger estas ideas, sino que también estimula la creatividad y la innovación. Este estudio busca diferenciar entre empresas innovadoras y aquellas que no lo son, analizando cómo esta diferencia puede influir positivamente en las políticas gubernamentales y en las estrategias empresariales.

El análisis sobre cómo el gobierno impulsa la innovación refleja el estado actual de la industria colombiana y propone métodos para su mejora. Cada descubrimiento resalta la importancia de la innovación y las patentes en la competitividad y el desarrollo económico del país. Este informe impulsa a Colombia a seguir apostando por la innovación como su principal estrategia para un futuro prometedor. El objetivo final es comprender la creatividad de estas empresas, su capacidad para generar novedades, y cómo esto contribuye a su crecimiento y fortaleza. Además, se busca evaluar el impacto real del apoyo gubernamental en este proceso.

Metodología

En este estudio se exploran patrones de innovación en las empresas colombianas utilizando métodos de clasificación con los datos obtenidos de la Encuesta de Desarrollo e Innovación Tecnológica (EDIT) 2019 -2020. Los modelos seleccionados son KNN (K-Nearest Neighbors) y árboles de decisión.

Preparación de Datos

Inicialmente, se realizó una limpieza y transformación de los datos de la EDIT. Durante este proceso, se realizo una organización de temas para la identificación y clasificación de las variables correspondientes, Posteriormente se imputaron “ceros” en lugar de N/A, bajo el criterio que las respuestas no aplicables equivalen a 0. Finalmente, se procedió a la reclasificación de la tipología de las empresas, agrupándolas en dos categorías distintas: ‘Innovadoras’ y ‘No Innovadoras’, siendo esta última la variable de interés principal para el análisis.

Reclasificación de Tipología
Tipología.General Categoría Descripción Reclasificación
AMPLIA Ampliamente Innovadora Empresas con un enfoque amplio de innovación en productos y procesos. Innovadora
ESTRIC Estratégicamente Innovadora Empresas con un enfoque estricto y específico en áreas de innovación. Innovadora
INTENC Intencionalmente Innovadora Empresas con una intención definida y planes concretos para innovar. Innovadora
NOINNO No Innovadora Empresas que no realizaron actividades de innovación en el periodo de referencia. No innovadora
POTENC Potencialmente Innovadora Empresas que tienen potencial o interés en innovar pero aún no han implementado cambios significativos. No innovadora

Selección de Variables

Se identificaron y seleccionaron las variables que están directamente vinculadas con la propiedad intelectual y la innovación en el año 2020. Este procedimiento es fundamental para garantizar que los modelos analíticos se enfoquen exclusivamente en los factores más significativos que distinguen a las empresas innovadoras de aquellas que no lo son en el 2020.

Las variables que se seleccionarn para este análisis son:

Tabla 1. Descripción de variables de Propiedad Intelectual e Innovación 2020
Variable Descripción
TIPOLO Tipología de la empresa.
VI1R1C1 Patentes de invención. Si=1, No=2.
VI1R1C2 Número de patentes de invención vigentes a diciembre de 2020.
VI1R2C1 Patentes de modelo de utilidad. Si=1, No=2.
VI1R2C2 Número de patentes de modelo de utilidad vigentes a diciembre de 2020.
VI1R3C1 Derechos de autor de obras literarias, artísticas, musicales, audiovisuales, arquitectónicas o fonogramas. Si=1, No=2.
VI1R3C2 Número de registros de derechos de autor vigentes a diciembre de 2020.
VI1R4C1 Derechos de autor de registros de software. Si=1, No=2.
VI1R4C2 Número de registros de derechos de autor de software vigentes a diciembre de 2020.
VI1R5C1 Registros de diseños industriales. Si=1, No=2.
VI1R5C2 Número de registros de diseños industriales vigentes a diciembre de 2020.
VI1R6C1 Registros de marcas y otros signos distintivos. Si=1, No=2.
VI1R6C2 Número de registros de marcas y otros signos distintivos vigentes a diciembre de 2020.
VI1R7C1 Certificados de obtentor de variedades vegetales. Si=1, No=2.
VI1R7C2 Número de certificados de obtentor de variedades vegetales vigentes a diciembre de 2020.
VI1R8C2 Total de registros de propiedad intelectual vigentes a diciembre de 2020.

Modelo KNN

El modelo KNN se ajustará utilizando un enfoque de validación cruzada para determinar el número óptimo de vecinos más cercanos. Se exploraron diferentes métricas de distancia para encontrar la más adecuada para el conjunto de datos.

El modelo KNN creado funciona mediante la siguiente estructura:

  • Primera parte: se encarga del entrenamiento del modelo, que comprende el 70% del total de los datos “datos_entrenamiento”

  • Segunda parte del modelo que se encarga de la evaluación, que constituye el 30% restante que posee la variable denominada “datos_prueba”.

La variable objetivo, “TipoInnovacion”,se aísla de las variables predictoras en ambos grupos de datos, resultando en conjuntos separados para las entradas (predictoras) y la salida (respuesta) que es la que intentamos predecir mediante el modelo de KNN.

Para poder entrenar el modelo KNN se empleó la función “train()” del paquete de libreria “caret”, ya que esta se encarga de definir el número de vecinos más cercanos a considerar, en este caso tenemos que es “k = n” mediante el parámetro “tuneGrid”, además aplicamos la evaluación del desempeño del modelo mediante la técnica de validación cruzada “cv” para obtener los mejores rendimientos del modelo.

Con el modelo KNN ya entrenado, se generan predicciones para los datos de prueba, las cuales se almacenan en la variable “predicciones_knn”, para tener una buena precisión del modelo se hace mediante una comparación de las predicciones generadas contra los valores reales de la variable de respuesta. Así podremos saber cual es la precisión del modelo y lo expresamos como el porcentaje de aciertos en las predicciones.

Para obtener el máximo valor de precisión procedemos a ejecutar un ciclo iterativo probando distintos valores de “k” (desde 1 hasta 100) con esto podemos saber el valor que máximiza la precisión del modelo. Los resultados de estos valores se registran en resultado_k. Para comprender mejor a continuación lo ilustramos en un diagrama.

Código
# Crear una nueva base descartando las variables de promedios
#nueva_base <- data %>%
#  select(TipoInnovacion, VI1R1C2, VI1R2C2, VI1R3C2, VI1R4C2)

# Dividir los datos en conjunto de entrenamiento y prueba
#set.seed(123) #Semilla
#indices_entrenamiento <- sample(nrow(nueva_base), nrow(nueva_base) * 0.7)
#datos_entrenamiento <- nueva_base[indices_entrenamiento, ]
#datos_prueba <- nueva_base[-indices_entrenamiento, ]

# Función para predecir con KNN (versión corregida)
#knn_predict <- function(new_data, train_data, train_labels, k) {
 # distances <- as.matrix(dist(rbind(new_data, train_data)))[1:nrow(new_data), (nrow(new_data) + 1):(nrow(new_data) + nrow(train_data))]
#  nearest_neighbors <- apply(distances, 1, function(x) order(x, decreasing = FALSE)[1:k])
#  pred_labels <- sapply(nearest_neighbors, function(x) {
#    levels(train_labels)[which.max(table(train_labels[x]))]})
#  return(pred_labels)}

# Función para calcular precisión
#calculate_accuracy <- function(pred_labels, true_labels)
#{return(mean(pred_labels == true_labels))}

# Definir parámetros
#k_values <- 1:10
#accuracies <- numeric(length(k_values))

# Convertir datos a matrices
#entradas_prueba_mat <- as.matrix(entradas_prueba)
#entradas_entrenamiento_mat <- as.matrix(entradas_entrenamiento)

# Calcular precisión para diferentes valores de k
#for (i in seq_along(k_values)) {
#  pred_labels <- knn_predict(entradas_prueba_mat, 
#                             entradas_entrenamiento_mat, 
#                             salida_entrenamiento, 
#                             k_values[i])
#  accuracies[i] <- calculate_accuracy(pred_labels, salida_prueba)}

                           # Gráfico de resultado
#resultado_k <- data.frame(k = k_values, precision = accuracies)
#ggplot(resultado_k, aes(x = k, y = precision)) +
#  geom_line() +
#  labs(title = "Precisión del modelo KNN para diferentes valores de k",
#       x = "Valor de k",
#       y = "Precisión") +
#  theme_minimal()

#ggplotly(resultado_k)
A pesar de varios intentos y ajustes en el valor de K, todos los esfuerzos realizados resultaron en fracaso. Se encontró que, independientemente del valor de K utilizado en el algoritmo KNN, el análisis no pudo completarse debido a un error relacionado con la cantidad de vecinos cercanos. Esto impidió que se lograra el éxito deseado en el análisis de los datos.

Árboles de Decisión

Los árboles de decisión se construirán utilizando el algoritmo CART (Classification and Regression Trees). Se realizará la poda del árbol para evitar el sobreajuste y mejorar la generalización del modelo.

El árbol de decisión se entrena con los “datos_entrenamiento”, con el fin de aprender las reglas que diferencian eficazmente las categorías de la variable objetivo “TipoInnovacion” a partir de los datos predictores. Con la función “summary()”, se obtiene un detalle del árbol ya capacitado, que incluye información como la cantidad de nodos, la profundidad total del árbol y las normas específicas de división en cada nodo y mediante la función “plot()” , se representa gráficamente el árbol de decisión, mostrando su estructura completa con nodos y las reglas de división.

Se emplean los “datos_prueba” para proyectar resultados usando el modelo entrenado. Las predicciones se efectúan con la función predict() y el argumento type = "class", indicando que se proyecta la clase de resultado. Para saber cual es la efectividad del árbol se mide calculando la precisión de las proyecciones en los datos de prueba, definida como el porcentaje de aciertos respecto al total de datos de prueba.

Por último, para tener una visualización avanzada del árbol de decisión se usa la función “rpart.plot()”, así habrá una representación más completa y detallada que mejora la interpretación del modelo. Además se crea una tabla que ofrece un análisis más exhaustivo del desempeño del árbol, exhibiendo la cantidad de proyecciones acertadas e incorrectas por cada categoría.

#modelo_arbol <- rpart(TipoInnovacion ~ ., data = datos_entrenamiento, method = "class")
#summary(modelo_arbol)
#plot(modelo_arbol)
#text(modelo_arbol, use.n = TRUE, cex = 0.6)
#predicciones_arbol <- predict(modelo_arbol, newdata = datos_prueba, type = "class")
#precision_arbol <- mean(predicciones_arbol == datos_prueba$TipoInnovacion)
#precision_arbol
#confusionMatrix(predicciones_arbol, datos_prueba$TipoInnovacion)
#rpart.plot(modelo_arbol, type = 5, extra = 101, tweak = 2, cex = 0.6)
#confusionMatrix

Validación de Modelos

Ambos modelos se validarán utilizando un conjunto de datos de prueba independiente. Se calcularán métricas de rendimiento como la precisión, la sensibilidad y la especificidad para evaluar la capacidad de los modelos para clasificar correctamente las observaciones.

Análisis de la Curva ROC

La curva ROC se analizará para cada modelo, proporcionando una visualización del rendimiento de clasificación en todos los umbrales de clasificación. Esto permitirá una comparación integral de la capacidad predictiva de los modelos.

Resultados Descriptivos

En el transcurso del análisis de la Encuesta de Desarrollo e Innovación Tecnológica (EDIT) correspondiente al periodo 2019-2020, los datos revelaron que solo un 28.79% de las empresas evaluadas cumplen con los criterios para ser consideradas innovadoras.

Se podría considerar que es un dato insignificante, pero la realidad es que un grupo significativo de empresas está resaltando en el mundo de la innovación y la tecnología, para una mejor modernización como mejorar y ayudas a diferentes factores en la industria, con la implementación de nuevas tecnologías, procesos o servicios novedosos, siendo modelos a seguir para dar impulso a continuar con el avance.

Resultados del Modelo

Conclusiones

A pesar de los desafíos encontrados durante el proceso de análisis de datos utilizando el algoritmo KNN, el equipo se mantuvo comprometido con la búsqueda de soluciones efectivas. Durante el estudio, se exploraron diferentes estrategias para optimizar el rendimiento del modelo KNN, variando el número de vecinos cercanos (k) en un rango de 1 a 100. Sin embargo, a pesar de los intentos, no se logró obtener resultados satisfactorios en términos de precisión del modelo.

El análisis reveló que, independientemente del valor de k utilizado, se encontraron problemas de empate múltiple (“too many ties”) al ejecutar el algoritmo KNN. Esta limitación técnica presentó un obstáculo significativo en la implementación exitosa del modelo, impidiendo la generación de resultados precisos. A pesar de estos desafíos, el equipo considera que la experiencia proporcionó una valiosa oportunidad para aprender sobre la complejidad del análisis de datos y las limitaciones técnicas asociadas.

Referencias