Tiene datos de series de tiempo que se utilizan para medir la aceleración. Usted debe identificar cuándo la máquina está en su estado nominal (APAGADO) y en estado anómalo (ENCENDIDO). Este problema se resolvería mejor utilizando algoritmos de detección de anomalías. Pero, hay muchas maneras en que puede abordar este problema.
Preparando tus datos
Todos los métodos dependerán del método de extracción de características que seleccione. Suponiendo que continuemos usando la ventana de tiempo de 3 muestras como usted sugirió. En este algoritmo calculará una estadística para este estado nominaly= 0. Sugeriría la media, como supongo que ya está haciendo, tome el promedio de las tres aceleraciones resultantes de la muestra. Entonces te quedarán con una gran cantidad de valores en un conjunto de entrenamientoS definido como
S= {s0 0,s1, . . . ,snorte}
dónde s es la media de las muestras de árboles en una ventana. s Se define como
syo=13∑yok = i - 2Xk
dónde X son sus observaciones de muestra y i ≥ 2.
Luego, recopile más datos si es posible con la máquina activa de modo que y= 1.
Ahora puede elegir si desea entrenar su algoritmo en un conjunto de datos de una clase (detección de anomlay puro). Un conjunto de datos sesgado (detección de anomalías) o un conjunto de datos bien equilibrado. El saldo del conjunto de datos es la relación entre las dos clases en su conjunto de datos. Un conjunto de datos perfecto para un clasificador de 2 clases sería 1: 1. 50% de los datos pertenecientes a cada clase. Parece que tiene un conjunto de datos sesgado, suponiendo que no desea desperdiciar mucha electricidad.
Tenga en cuenta que no hay nada que le impida mantener divididas las muestras vecinas como una instancia en su conjunto de datos. Por ejemplo:
Xyo Xyo - 1 Xi - 2 El | yyo
Esto haría un espacio de entrada tridimensional para una salida específica que se define para la muestra actualmente tomada.
Un conjunto de datos sesgado
Solución fácil
La forma más fácil que sugeriría. Suponga que está utilizando una estadística única para definir lo que sucede en la ventana de 3 muestras. De los datos recopilados obtenga el máximos de sus puntos nominales (y= 0) y el mínimo s de tus puntos anómalos (y= 1) Luego tome la marca de la mitad entre estos dos y úselo como su umbral.
Si una nueva muestra de prueba s^ es mayor que el umbral y luego asignar y= 1.
Puedes extender esto calculando la media s para todas sus muestras nominales y= 0. Luego calcule la media de sus muestras anómalasy= 1. Si una nueva muestra se acerca a la media de las muestras anómalas, entonces clasifíquela comoy= 1.
¡Pero quiero ponerme elegante!
Existen varias otras técnicas que puede utilizar para realizar esta tarea exacta.
- Vecinos k-más cercanos
- Redes neuronales
- Regresión lineal
- SVM
En pocas palabras, casi todos los algoritmos de aprendizaje automático son adecuados para este propósito. Solo depende de la cantidad de datos disponibles y de su distribución.
Realmente quiero usar SVM
Si este es el caso, mantenga las tres muestras completamente separadas. Su matriz de entrenamiento tendrá 3 columnas como se discutió anteriormente. Y entonces tendrás tus salidasy. Usar SVM en python es muy fácil: http://scikit-learn.org/stable/modules/svm.html .
from sklearn import svm
X = [[0, 0, 0], [1, 1, 1], ..., [1, 0, 1]]
y = [0, 1, ..., 1]
clf = svm.SVC()
clf.fit(X, y)
Esto entrena a tu modelo. Entonces querrá predecir el resultado para una nueva muestra.
clf.predict([[2., 2., 1]])