Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Breakout Detection de Twitter

Valery Briz
September 24, 2017

Breakout Detection de Twitter

Detección de breakouts en series de datos respecto al tiempo

Valery Briz

September 24, 2017
Tweet

More Decks by Valery Briz

Other Decks in Programming

Transcript

  1. $ whoami Valery Calderón Briz @valerybriz guatebot.com/blog Ingeniera en Telecomunicaciones

    Systems Development Specialist en Skyguard GPS Co-fundadora de @PythonGuatemala
  2. Breakout Detection Este paquete desarrollado en el Lenguaje R por

    Twitter sirve para detectar cambios o anomalías en una serie de datos respecto al tiempo. Pueden encontrar más información del paquete en: http://bit.ly/bkoutinthewild
  3. ¿Cómo funciona el Breakout Detection? Usualmente las anomalías o breakouts

    están caracterizadas por dos estados que se mantienen y un período de transición intermedia. Para detectar esto el paquete utiliza una técnica de estadísticas llamada E-Divisive with Medians (EDM) que es utilizada ampliamente para detectar cambios de nivel o saltos. Documentación en: http://bit.ly/edmBreakingBad
  4. ¿Cómo funciona el EDM? • Detección de Divergencia • Mean

    Shift • Ramp Up • Detección de cambios en la distribución
  5. Ventajas • Es robusto en presencia de anomalías. • EDM

    no es paramétrico. • Es más rapido que otros algorítmos.
  6. Data Points E-Divisive EDM 6,000 29 Min. 24 Seg. 600

    7 Seg. 1 Seg. 3.5x más rápido que otros algoritmos Fuente: https://anomaly.io/anomaly-detection-using-twitter-breakout/ De detección de Breakouts
  7. Desventajas • Se debe combinar con otros algorítmos si se

    necesita descartar breakouts específicos. • Es necesario encontrar la combinación correcta de parametros dependiendo de la serie de datos.
  8. Escalar datos de 0 a 1 zi = xi -

    min(x) max(x) - min(x) Valor = ( x - ValorMinX ) / ( ValorMaxX - ValorMinX ) )
  9. 1 Data: Serie de datos que serán analizados. 2 Min.size:

    El valor minimo de observaciones entre puntos de cambio. 3 Method: "amoc" (al menos un cambio) o "multi" (multiples cambios). 4 Degree: El grado de regresión polinomial. 5 Beta: Constante paraun futuro control en la penalización. 6 Plot: Este indica si se generará un Ploteo luego de la ejecución. Las variables del algoritmo
  10. Instalación de R # sudo apt-key adv --keyserver keyserver.ubuntu.com --

    recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 # sudo add-apt-repository 'deb [arch=amd64,i386] https://cran.rstudio.com/bin/linux/ubuntu xenial/‘ # sudo apt-get update # sudo apt-get install r-base # sudo apt-get install libssl-dev
  11. Instalación del paquete # sudo -i R > install.packages("devtools") >

    devtools::install_github("twitter/BreakoutDetection") > library(BreakoutDetection)
  12. Código en R library(BreakoutDetection) Detect <- function(tsdata, min, met, deg

    ) { res = breakout(tsdata, min.size=min, method=met, beta=.001, degree=deg, plot=FALSE) return(res) }
  13. Requerimientos en Python # sudo pip rpy2 # sudo pip

    install pandas # sudo pip install numpy
  14. Importando desde R from rpy2.robjects.packages import SignatureTranslatedAnonymousPackage from rpy2.robjects.packages import

    importr from rpy2.robjects.vectors import IntVector, FloatVector import rpy2.robjects as ro
  15. Obteniendo los datos mydata = [] with open('datos.csv', 'r') as

    csvfile: dat = csv.reader(csvfile) for line in dat: mydata.append(float(line[0]))
  16. Importando desde R minsize = 30 method = 'multi' degree

    = 0 with open('Codigo.R') as code: rcode = os.linesep.join(code.readlines()) wrapper = SignatureTranslatedAnonymousPackage(rcode, "Codigo")
  17. Ejecutando la función result = wrapper.Detect( FloatVector(mydata), minsize, method, degree)

    print (result) >>>>>> $loc [1] 74 116 147 177 209 $time [1] 0.013 $pval [1] NA
  18. Obteniendo los datos relevantes if len(result) > 0 : for

    val in result[0]: print (val) >>>>>> 74 116 147 177 209