Skip to main content
Ctrl+K

Cursos documentation

MERCADO DE VALORES:

  • Introducción al Mercado Financiero
  • Derivados Financieros
  • Trading
    • Ninja Trader
  • Bonos
  • Portafolios de inversión

ADMINISTRACIÓN FINANCIERA:

  • Introducción a las Matemáticas Financieras
    • Ejercicios introducción a las Matemáticas Financieras
    • Examen semestre 01-2024
  • Estados Financieros
    • Ejercicios análisis de los Estados Financieros
  • KTNO
  • Análisis vertical y horizontal
  • Indicadores Financieros
    • Ejercicios análisis vertical, horizontal e indicadores de actividad
    • Ejercicios indicadores de liquidez, rentabilidad y endeudamiento
    • Resumen fórmulas Indicadores Financieros
  • Análisis Financiero en Python
    • Análisis Vertical
    • Análisis Horizontal
    • Análisis de los márgenes
  • Flujo de Efectivo
    • Estados Financieros
      • Ejercicios análisis de los Estados Financieros

DERIVADOS FINANCIEROS:

  • Forward
    • Ejercicios valoración contratos Forward
  • Swap
    • Ejercicios tasas FRA
    • Ejercicios swap
  • Futuros
    • Ejercicios operaciones con Futuros BVC
    • Ejercicios coberturas con Futuros
  • Opciones
    • Método de simulación: Movimiento Browniano Geométrico (MBG)
    • Valoración de opciones por el método de Simulación Monte Carlo
    • Simulación de cobertura con opciones
    • Movimiento Browniano Geométrico (GBM) en Python
    • Valoración de Opciones Financieras por Simulación Monte Carlo
    • Simulación estrategia de cobertura
    • Ejercicios propiedades, coberturas y valoración de opciones por SMC
    • Ejercicios valoración de opciones

PORTAFOLIOS DE INVERSIÓN:

  • Portafolios de Inversión
    • Mercado financiero
    • Teoría moderna de portafolios
      • Introducción a portafolios de inversión
      • CAPM
      • Indicadores de desempeño
      • Frontera Eficiente
    • Trading
      • Ninja Trader
    • Bonos
      • Ejercicios: valoración de bonos BVC
      • Ejercicios Bonos

APRENDIZAJE ESTADÍSTICO:

  • Aprendizaje Estadístico
    • Introducción a Python
      • Introducción a Python
      • Pandas
      • NumPy
      • Matplotlib
    • Machine Learning
      • Proceso de Machine Learning
      • Preprocesamiento de datos
    • Clustering
      • Clustering
      • K-Means
      • Ejemplo K-Means
      • Ejercicio K-Means Estados Financieros
      • Clustering Jerárquico
      • Ejemplo clustering jerárquico
      • DBSCAN
      • Ejemplo DBSCAN
      • Ejemplo clustering DBSCAN Estados Financieros
      • Ejemplo DBSCAN para precios
      • Ejemplo DBSCAN precio electricidad
      • Ejercicio Clustering Estados Financieros
      • Ejercicio Clustering acciones
      • Taller Clustering datos ficticios
      • Taller Clustering acciones S&P 500
      • Taller Clustering Estados Financieros
    • Reducción de dimensionalidad
      • Repaso Álgebra Lineal
      • Análisis de Componentes Principales-PCA
      • Kernel PCA (kPCA)
      • Ejemplo reducción de dimensionalidad
      • Ejercicio reducción de dimensionalidad
      • Taller reducción de dimensionalidad
    • Clasificación
      • Clasificación
      • Métricas para Evaluación de Modelos de Clasificación
      • Cross Validation
      • Generalización
      • Regresión Logística
      • Análisis dataset riesgo de crédito
      • Regresión logística riesgo de crédito
      • Regularización regresión logística
      • Ejemplo regularización regresión logística
      • Clasificador de dígitos escritos a mano
      • Support Vector Machines
      • SVM riesgo de crédito
      • Árboles de decisión
      • Ejemplo árboles de decisión
      • Ensemble Learning
      • Bagging
      • Random Forest
      • Ejemplo Random Forest
      • Boosting (AdaBoost)
      • XGBoost
      • Stacking
      • Ejemplo métodos de clasificación sobre Estados Financieros
    • Pipeline
      • Pipeline en Machine Learning
      • Pipeline riesgo de crédito
    • Optimización de Hiperparámetros
      • Optimización de Hiperparámetros
      • Grid Search
      • Randomized Search
    • Regresión
      • Métricas de evaluación en regresión
      • SVM para Regresión
      • SVR para series de tiempo
      • SVR series de tiempo con lags
      • Árboles de decisión para regresión
      • Árboles de decisión para series de tiempo
      • Random Forest para series de tiempo
      • XGBoost para series de tiempo

MACHINE LEARNING:

  • Deep Learning
    • Gradiente descendente
    • Ejemplo gradiente descendente
    • Introducción Redes Neuronales Artificiales
    • Perceptrón multicapa
    • Funciones de activación
    • RNA para clasificación y regresión
    • División del dataset
    • Escalado de variables
    • RNA en Keras para clasificación
    • RNA en Keras para clasificación multiclase
    • RNA en Keras para regresión
    • Ejercicio clasificación
    • RNA para series de tiempo
    • Ejemplo pronóstico serie de tiempo
    • Optimizadores
    • Ejemplo Optimizadores
    • Optimización de Hiperparámetros
    • GridSearchCV
    • RandomizedSearchCV
    • KerasTuner
    • Generalización
    • Regularización
    • Ejemplo regularización
    • RNN
    • LSTM
    • GRU
    • RNN Bidireccional
    • CNN
    • CNN para series de tiempo
    • CNN-LSTM para series de tiempo
    • Taller redes neuronales artificiales
    • Taller RNN

ANÁLISIS DE RIESGO:

  • Análisis de Riesgo
    • Introducción a la gestión del riesgo
    • Conceptos básicos de estadística
    • Distribuciones de probabilidad
    • Análisis de sensibilidad tradicional

RIESGO DE MERCADO:

  • Riesgo de Mercado
    • Introducción a la Gestión del Riesgo
    • VaR varianzas-covarianzas o Delta-Normal
      • Distribución normal
      • VaR método Delta-Normal o varianzas-covarianzas
      • Taller N° 1: VaR método Delta-Normal o varianzas-covarianzas
      • Taller N° 2: VaR método Delta-Normal o varianzas-covarianzas
      • Ejercicios: VaR Delta-Normal
    • Volatilidades dinámicas
      • Volatilidad EWMA
      • Volatilidad GARCH
      • Ejercicios volatilidades dinámicas
    • VaR Simulación Histórica y CVaR
      • Funciones para calcular el VaR por Simulación Histórica y CVaR
      • VaR Simulación Histórica - Método no paramétrico
      • CVaR
      • Taller VaR Simulación Histórica y CVaR
      • Análisis gráfico VaR y CVaR
    • VaR Simulación Monte Carlo
      • Método de simulación: Movimiento Browniano Geométrico (MBG)
      • VaR y CVaR para un activo por Simulación Monte Carlo
      • VaR y CVaR por el método de simulación Monte Carlo
      • Taller VaR y CVaR método de simulación Monte Carlo
    • Backtesting
      • Backtesting VaR Delta-Normal
      • Backtesting método VaR Simulación Histórica
      • Backtesting método VaR Simulación Monte Carlo
      • Puntaje de López - VaR Delta-Normal
      • Puntaje de López - VaR Simulación Histórica
      • Puntaje de López - VaR Simulación Monte Carlo
      • Resumen
    • VaR bonos
      • Duración y duración modificada en bonos
      • VaR Bonos
      • Ejercicios: valoración de bonos BVC

CONCEPTOS PREVIOS:

  • Introducción a R
    • Extraer datos de Yahoo Finance
  • ggplot2
    • ggplot2
  • Análisis y conformación de portafolios de inversión
    • Estadística aplicada a los activos bursátiles
    • Volatilidad portafolio de inversión
    • Conformación portafolio de inversión
    • Ejercicios: Estadística y conformación de portafolios de inversión.
  • Tasas de interés
  • .rst

Grid Search

Grid Search#

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
# Cargar el archivo CSV (ya lo hemos cargado y limpiado previamente)
credit_risk_data = pd.read_csv("credit_risk_data.csv")
credit_risk_data = credit_risk_data.drop(columns=["ID"])

# Dividir los datos en características (X) y etiqueta (y)
X = credit_risk_data.drop(columns=["Estado del Préstamo"])
y = credit_risk_data["Estado del Préstamo"]

# Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=34)

# Estandarizar los datos
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# Definir el modelo
svc = SVC()

# Definir la cuadrícula de parámetros
param_grid = {
    "C": [0.1, 1, 10, 100],
    "gamma": ["scale", "auto"],
    "kernel": ["linear", "rbf"],
}

# Configurar GridSearchCV
grid_search = GridSearchCV(svc, param_grid, cv=5, scoring="accuracy")
grid_search.fit(X_train, y_train)

# Mejor modelo y sus parámetros
print("Mejores parámetros encontrados:", grid_search.best_params_)
print("Mejor precisión en validación cruzada:", grid_search.best_score_)

# Evaluar el mejor modelo en el conjunto de prueba
best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test)
test_accuracy = accuracy_score(y_test, y_pred)
print(f"Precisión en el conjunto de prueba con el mejor modelo: {test_accuracy:.2f}")
Mejores parámetros encontrados: {'C': 10, 'gamma': 'scale', 'kernel': 'rbf'}
Mejor precisión en validación cruzada: 0.9628571428571429
Precisión en el conjunto de prueba con el mejor modelo: 0.94

En param_dist se especificó que busque la mejor combinación de tres hiperparámetros C, gamma y kernel. De esta forma se evaluarán \(4 \times 2 \times 2 = 16\)

Se entrenará cada modelo 5 veces cv=5 (ya que estamos usando validación cruzada de cinco pliegues-folds).

En otras palabras, en total, habrá \(16 \times 5 = 80\) rondas de entrenamiento. Esto se demorará.

Si GridSearchCV se inicializa con refit=True (que es el valor predeterminado), una vez que encuentra el mejor estimador utilizando la validación cruzada, lo vuelve a entrenar en todo el conjunto de entrenamiento.

El parámetro scoring='accuracy' especifica la métrica que se utilizará para evaluar el rendimiento del modelo en cada combinación de hiperparámetros durante la búsqueda.

gamma='scale': es una configuración automática introducida en versiones más recientes de Scikit-Learn.

\(gamma = \frac{1}{n_{features}\times Var(x)}\)

gamma='auto': No tiene en cuenta la varianza de los datos y puede ser menos efectivo que gamma='scale' en la mayoría de los casos, especialmente cuando las características tienen diferentes escalas.

\(gamma = \frac{1}{n_{features}}\)

Se puede establecer un valor numérico fijo para gamma, como 0.1, 1, etc.

Varios diccionarios en param_grid:

Primero evalúa todas las combinaciones posibles dentro del primer diccionario ('kernel': ['poly'], 'degree', 'C' y 'gamma'), luego evaluará todas las combinaciones del segundo diccionario 'kernel': ['rbf'], etc.

# Definir el modelo
svc = SVC()

# Definir la cuadrícula de parámetros
param_grid = [
    {
        "kernel": ["poly"],  # Kernel polinómico
        "degree": [2, 3, 4],  # Grado del polinomio
        "C": [0.1, 1, 10, 100],  # Parámetro de regularización
        "gamma": ["scale", "auto"],  # Parámetro gamma
        "coef0": [0, 1],  # Parámetro
    },
    {
        "kernel": ["rbf"],  # Kernel RBF
        "C": [0.1, 1, 10, 100],  # Parámetro de regularización
        "gamma": ["scale", "auto"],  # Parámetro gamma
    },
]

# Configurar GridSearchCV para buscar en ambos kernels
grid_search = GridSearchCV(svc, param_grid, cv=5, scoring="accuracy")

# Ejecutar la búsqueda de hiperparámetros
grid_search.fit(X_train, y_train)

# Mejor modelo y sus parámetros
print("Mejores parámetros encontrados:", grid_search.best_params_)
print("Mejor precisión en validación cruzada:", grid_search.best_score_)

# Evaluar el mejor modelo en el conjunto de prueba
best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_test)
test_accuracy = accuracy_score(y_test, y_pred)
print(f"Precisión en el conjunto de prueba con el mejor modelo: {test_accuracy:.2f}")
Mejores parámetros encontrados: {'C': 100, 'coef0': 1, 'degree': 2, 'gamma': 'scale', 'kernel': 'poly'}
Mejor precisión en validación cruzada: 0.9671428571428571
Precisión en el conjunto de prueba con el mejor modelo: 0.95

El anterior código evaluó \(48\) modelos del primer diccionario más \(8\) del segundo diccionario, en total corrió \(56\) modelos con validación cruzada.

previous

Optimización de Hiperparámetros

next

Randomized Search

By Miguel Jiménez

© Copyright 2024, Miguel Jiménez.