Twitter
Breakout Detection
Para detección de anomalías en series de datos
Slide 2
Slide 2 text
$ whoami
Valery Calderón Briz
@valerybriz
guatebot.com/blog
Ingeniera en Telecomunicaciones
Systems Development Specialist en Skyguard GPS
Co-fundadora de @PythonGuatemala
Slide 3
Slide 3 text
Soy de Guatemala
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
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
Slide 6
Slide 6 text
¿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
Slide 7
Slide 7 text
¿Cómo funciona el EDM?
• Detección de Divergencia
• Mean Shift
• Ramp Up
• Detección de cambios en la distribución
Slide 8
Slide 8 text
Mean Shift
Slide 9
Slide 9 text
Mean Shift
Slide 10
Slide 10 text
Ramp Up
Slide 11
Slide 11 text
Cambios en la distribución
Slide 12
Slide 12 text
Ventajas
• Es robusto en presencia de anomalías.
• EDM no es paramétrico.
• Es más rapido que otros algorítmos.
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
Robusto en presencia de anomalías
Las anomalías no son lo mismo que un Breakout
Slide 15
Slide 15 text
Robusto en presencia de anomalías
Slide 16
Slide 16 text
EDM no es paramétrico
Slide 17
Slide 17 text
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
Slide 18
Slide 18 text
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.
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
Escalar datos de 0 a 1
zi =
xi - min(x)
max(x) - min(x)
Valor = ( x - ValorMinX ) / ( ValorMaxX - ValorMinX ) )
Slide 21
Slide 21 text
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
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
Slide 27
Slide 27 text
Obteniendo los datos
mydata = []
with open('datos.csv', 'r') as csvfile:
dat = csv.reader(csvfile)
for line in dat:
mydata.append(float(line[0]))
Slide 28
Slide 28 text
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")
Slide 29
Slide 29 text
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
Slide 30
Slide 30 text
Obteniendo los datos relevantes
if len(result) > 0 :
for val in result[0]:
print (val)
>>>>>>
74
116
147
177
209