Skip to content

Bosques aleatorios para regresión

Regresión con bosques aleatorios

Bosques aleatorios

Versión mejorada del árbol de regresión ya que es capaz de utilizar miles de árboles de regresión para obtener una mejor predicción.

Pasos a seguir

  1. Elegir un número aleatorio K de puntos de datos del conjunto de Entranamiento.
  2. Árbol de desición asociado a esos K puntos.
  3. Elegir el número de NTree de árboles que queremos construir y repetimos Paso 1 y Paso 2
  4. Cada uno de los árboles hace una predicción del valor Y, luego hacemos un promedio de esos NTree predicciones.

Árboles de decisión para Regresión Lineal

CART -> Classification and Regressión Tree

Una vez ejecutamos nuestro algoritmo árbol de decisión, el conjunto de datos de las variables independientes quedará dividido en segmentos.

Arbol de decision.png

Básicamente se fija en la entropia de los puntos para poder agruparlos, cada una de estas divisiones aporta una información realmente buena.

Arbol decision2.png

Podemos ver en verda la media de los segmentos y en la imagen de abajo el árbol de decisiones

Arbol decision3.png

 
 

Regresión con máquina de soporte vectorial

Regresión con máquina de soporte vectorial SVR

Sirven tanto para regresiones lineales como no lineales. La idea es ajustar una calle, he intentar mantener cuántas más obvervaciones posibles del conjunto de datos dentro de la calle, limitando unos márgenes máximos.

Hyper parámetro épsilon

La anchura del pasillo se controla mediante un hiper parámetro, épsilon. Cuánto mayor es ese valor, mayor es la anchura de la calle.

Objetivo

En la regresión lineal se intenta minimizar el error entre la predicción y los datos. En SVR el objetivo es que los errores no superen el umbral establecido.

Regresión Lineal Multiple

Restriciones de la Regresión Lineal

  1. Linealidad
  2. Homoceadasticidad
  3. Normalidad Multivariable
  4. Independencia de los errores
  5. Ausencia de multicolinealidad. El modelo es incapaz de distinguir los efectos de una variable dummy.

Variable Dummy

Cuando necesitemos construir un modelo con variables ficticias (variables dummy), hay que omitir uno de los factores, uno de los niveles de la variable ficticia. Es decir, si tenemos 100 países como variables ficticias, solo colocaríamos como dummy 99 en el modelo de regresión.

P-Valor

Que no es

  • El p-valor no es la probabilidad de que la afirmación sea cierta.
  • El p-valor no es la probabilidad de que la hipótesis nula sea cierta.

Nos indica que tan probable es obtener un resultado con una hipótesis nula verdadera.

[[1]]

Paso a paso en la regresión lineal multiple

Añadir todas las variables independientes

No, por dos razones:

  1. NO por añadir más variables vamos a tener más información. In Basura = Out Basura.
  2. Si el número de variables va creciendo hace díficil la explicación lógica del proceso.

5 métodos obtención de variables relevantes

Tenemos 5 métodos disponibles para obtener las variables importantes y que tendrán relevancia en el algoritmo de regresión lineal multiple.

Exhaustivo (All-in)

Metemos todas las variables en el modelo, razones por las que hacer esto:

  • Conocimiento previo de todas las variables. Todas son variables predictoras.
  • Por necesidad, nos obligan a utilizar todas las variables.
  • Preparación previa para realizar la eliminación hacia atrás.

Eliminación hacia atrás

  1. Selección del el nivel de significación en el modelo, normalmente SL=0.05
  2. Se calcula el modelo con todas las variables
  3. Se obtiene la variable predictoras con el p-valor más grande. Si P > SL, entonces pasamos al paso 4, sino vamos a fin.
  4. Se elimina la variable predictora.
  5. Reajuste del modelo sin dicha variable.

Con el nuevo modelo creado, las variables de ese tendrán una seria de p-valores y por tanto repetimos el paso 3, consideramos la variable predictora con p-valor más grande, si el p-valor es todavía mayor que el nivel de significación, se elimina y se reajusta el modelo otra vez.

Selección hacia adelante

  1. Seleccionamos un nivel de significación, pero en este caso será para entrar en el modelo.
  2. Ajustamos todos los modelos de regresión lineal simple. Elegimos el que tiene el menor p-valor.
  3. Conservamos esta variables y ajustamos todos los modelos con la variable extra añadida a la que ya tenga el modelo en ese momento.
  4. Consideramos la variable predictora con el menor p-valor. Si P < SL volvemos al paso 3.

Seguiremos sucesivamente añadiendo variables mientras el p-valor sean inferior al nivel de siginificación, en el caso que la variable que se acaba de añadir ya supere el SL, daremos por terminado el trabajo y conservaremos el modelo anterior como el correcto.

Eliminación bidireccional o regresión dual

  1. Seleccionamos dos niveles de significación para entrar y salir del modelo.
  2. Selección hacía delante p-valor < SLEnter
  3. Selección hacía atrás p-valor < SLStay
  4. No hay nuevas variables para entrar ni tampoco variables antiguas para salir

Comparaciones de puntos

  1. Seleccionar un criterio de la bondad de ajuste. Cuando un modelo será mejor que otro.
  2. Construir todos los Modelos: 2N – 1
  3. Selección del modelo con mejor criterio

OJO! -> 10 columnas de datos = 1023 modelos

Linux – Bash

Bash Script

Un Shell Script no es más que un fichero con sentencias para el intérprete que se vaya a utilizar. Entre los intérpretes más utilizados se encuentran: Bash,Perl, Python y PHP para los entornos web.

Argumentos posicionales

En un script se pueden especificar argumentos en una línea de comando, es decir un nombre_de_script+un directorio o más un número o una letra. El script en bash accede a estos parámetros mediante las variables $0, $1, etc.:

  • $0 Nombre del script
  • $1 Argumento uno
  • $2 Argumento dos
  • $3 Argumento tres, así hasta el nueve.
  • $# Número de argumentos total
  • $* Cadena con todos los argumentos
  • shift Desplaza hacia la izquierda los arguementos, el 10 pasa a ser 9 y así posteriormente.
  • $? Código de retorno

El código de retorno

Cada programa que se ejecuta en el shell cuando termina guarda su código de retorno en la variable $?. Este código es un valor numérico que determina si el programa ha terminado de forma correcta. El código de retorno de valor 0 para la correcta ejecucción, cualquier otra valor para la incorrecta ejecucción.ç

  • $? Código de retorno

Algunos scripts con los principales operadores de bash. comprobar ficheros y directorios, condicionales, bucles, while, until, funciones, etc.:

Redirecciones de entrada y salida

Redirección de salida estándar a un archivo

*hace que el descriptor de archivo 6 sea una copia de stdout (descriptor archivo 1)
exec 6>&1
*abre el archivo "test.data" para escritura
exec 1>test.data
*genera algún contenido
echo "data:data:data"
*recupera stdout original, al hacer que sea una copia del descriptor de archivo 6
exec 1>&6
*Cierra el descriptor de archivo 6
exec 6>&-

Abre y cierra archivos

# abre el archivo test.data para lectura
exec 6<test.data
# lee hasta el final del archivo
while read -u 6 dta
do
  echo "$dta" 
done
# cierra el archivo test.data
exec 6<&-

Salida de órdenes externas

VAR=$(find . -name "*h")

Condicionales con números

  • -lt menor que <
  • -gt mayor que >
  • -le menor o igual que <=
  • -gr mayor o igual que >=
  • -eq igual ==
  • -ne no igual !=

Condionales con texto

  • = cadenas de texto exactemente iguales

!= cadenas de texto no iguales

  • <
  • >
  • -n la cadena no está vacía
  • -z la cadena está vacía

Condicionales con archivos

  • -e existe
  • -f archivo normal, no es un directorio
  • -s no tiene tamaño 0
  • -d es un directorio
  • -r tiene permiso de lectura para el usuario que lanza el script
  • -w permiso de escritura para el usua…
  • -x permiso de ejecución

Manipulación de texto

${cadena:posicion:longitud}
Por ejemplo en la cadena string=abcABC123ABCabc:
echo ${string:0} : abcABC123ABCabc
echo ${string:0:1} : a (primer caracter)
echo ${string:7} : 23ABCabc
echo ${string:7:3} : 23A (3 caracteres desde posición 7)
echo ${string:7:-3} : 23ABCabc (desde posición 7 hasta el final)
echo ${string: -4} : Cabc (atención al espacio antes del menos)
echo ${string: -4:2} : Ca (atención al espacio antes del menos)

Linux – Comando Sed

Trucos de consola usando sed

Finales de linea tipo DOS (CR/LF) a formato Unix.

sed ‘s/.$//’ # asume que todas las lineas terminan con CR/LF sed ‘s/\x0D$//’ # funciona con ssed, gsed 3.02.80 o superior

Borrarado espacios en blanco al principio y el final de cada linea
sed 's/^[ \t]*//;s/[ \t]*$//'
Alineando el texto a una anchura de 79 columnas
sed -e :a -e 's/^.\{1,78\}$/ &/;ta'  # set at 78 plus 1 space
Substituciones «foo» por «bar» en cada linea
  • sustituir solo la primera ocurrencia en la linea
    • sed ‘s/foo/bar/’
  • sustituir solo la cuarta ocurrencia en la linea
    • sed ‘s/foo/bar/4’
  • sustituir todas las veces que se encuentre
    • sed ‘s/foo/bar/g’
  • sustituir solo la anteultima ocurrencia
    • sed ‘s/\(.*\)foo\(.*foo\)/\1bar\2/’
  • sustituir solo la ultima ocurrencia
    • sed ‘s/\(.*\)foo/\1bar/’
  • sustituir "foo" por "bar" SOLO en las lineas que contengan "baz"
    • sed ‘/baz/s/foo/bar/g’
  • sustituir "foo" por "bar" EXCEPTO en las lineas que contengan "baz"
    • sed '/baz/!s/foo/bar/g'
Mostrar la linea numero 52
sed -n '52p'                 # metodo 1
sed '52!d'                   # metodo 2

sed '52q;d' # metodo 3, eficiente para ficheros grander

Quitar la mayoria de los tags HTML (reconoce tags multilinea)
sed -e :a -e 's/<[^>]*>//g;/</N;//ba'

Emulación algunos comandos

Contar lineas (emula «wc -l»)
sed -n '$='
Ordenar lineas al reves (emula «tac»)
sed '1!G;h;$!d'               # metodo 1
sed -n '1!G;h;$p'             # metodo 2
Invierta cada caracter de la linea (emula «rev»)
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
Une pares de lineas lado a lado (emula «paste»)
sed '$!N;s/\n/ /'
Muestra las 10 primeras lineas (emula «head»)
sed 10q
Muestra la 10 ultimas filas (emula «tail»)
sed -e :a -e '$q;N;11,$D;ba'
Muestra solo las lineas que se ajustan a la expresion regular (emula «grep»)
sed -n '/regexp/p'           # metodo 1
sed '/regexp/!d'             # metodo 2
Borra lineas duplicadas consecutivas (emula «uniq»)
sed '$!N; /^\(.*\)\n\1$/!P; D'

Referencias:

http://sed.sourceforge.net/sed1line.txt
http://sed.sourceforge.net/sedfaq.html
https://www.gnu.org/software/sed/manual/sed.html  

Bash / sh

Bash Script

Un Shell Script no es más que un fichero con sentencias para el intérprete que se vaya a utilizar. Entre los intérpretes más utilizados se encuentran: Bash,Perl, Python y PHP para los entornos web.

Argumentos posicionales

En un script se pueden especificar argumentos en una línea de comando, es decir un nombre_de_script+un directorio o más un número o una letra. El script en bash accede a estos parámetros mediante las variables $0, $1, etc.:

  • $0 Nombre del script
  • $1 Argumento uno
  • $2 Argumento dos
  • $3 Argumento tres, así hasta el nueve.
  • $# Número de argumentos total
  • $* Cadena con todos los argumentos
  • shift Desplaza hacia la izquierda los arguementos, el 10 pasa a ser 9 y así posteriormente.
  • $? Código de retorno

El código de retorno

Cada programa que se ejecuta en el shell cuando termina guarda su código de retorno en la variable $?. Este código es un valor numérico que determina si el programa ha terminado de forma correcta. El código de retorno de valor 0 para la correcta ejecucción, cualquier otra valor para la incorrecta ejecucción.

  • $? Código de retorno

Algunos scripts con los principales operadores de bash. comprobar ficheros y directorios, condicionales, bucles, while, until, funciones, etc.:

Redirecciones de entrada y salida

Redirección de salida estándar a un archivo

  • Hace que el descriptor de archivo 6 sea una copia de stdout (descriptor archivo 1)
    • exec 6>&1
  • Abre el archivo «test.data» para escritura
    • exec 1>test.data
  • genera algún contenido
    • echo «data:data:data»
  • recupera stdout original, al hacer que sea una copia del descriptor de archivo
    • 6 exec 1>&6
  • Cierra el descriptor de archivo
    • 6 exec 6>&-

Abre y cierra archivos

  • abre el archivo test.data para lectura
    • exec 6

Salida de órdenes externas

VAR=$(find . -name «*h»)

Condicionales con números

  • -lt menor que <
  • -gt mayor que >
  • -le menor o igual que <=
  • -gr mayor o igual que >=
  • -eq igual ==
  • -ne no igual !=

Condionales con texto

  • = cadenas de texto exactemente iguales

!= cadenas de texto no iguales

  • <
  • >
  • -n la cadena no está vacía
  • -z la cadena está vacía

Condicionales con archivos

  • -e existe
  • -f archivo normal, no es un directorio
  • -s no tiene tamaño 0
  • -d es un directorio
  • -r tiene permiso de lectura para el usuario que lanza el script
  • -w permiso de escritura para el usua…
  • -x permiso de ejecución

Manipulación de texto

${cadena:posicion:longitud}

Por ejemplo en la cadena string=abcABC123ABCabc:

  • echo ${string:0} : abcABC123ABCabc
  • echo ${string:0:1} : a (primer caracter)
  • echo ${string:7} : 23ABCabc
  • echo ${string:7:3} : 23A (3 caracteres desde posición 7)
  • echo ${string:7:-3} : 23ABCabc (desde posición 7 hasta el final)
  • echo ${string: -4} : Cabc (atención al espacio antes del menos)
  • echo ${string: -4:2} : Ca (atención al espacio antes del menos