Java combina un algoritmo de entrenamiento SIG para lograr la máxima entropía

Dirección de descarga de recursos : https://download.csdn.net/download/sheziqiong/88284338
Dirección de descarga de recursos : https://download.csdn.net/download/sheziqiong/88284338
MaxEnt

Esta es una implementación Java concisa de máxima entropía, que proporciona interfaces de entrenamiento y predicción. El algoritmo de entrenamiento utiliza el algoritmo de entrenamiento GIS y viene con un conjunto de entrenamiento de muestra y una demostración de pronóstico del tiempo.

Entrenamiento y predicción de MaxEnt

método de llamada

public static void main(String[] args) throws IOException
{
    
    
        String path = "data/train.txt";
        MaxEnt maxEnt = new MaxEnt();
        maxEnt.loadData(path);
        maxEnt.train(200);
        List<String> fieldList = new ArrayList<String>();
        fieldList.add("Sunny"); // 假如天晴
        fieldList.add("Humid"); // 并且湿润
        Pair<String, Double>[] result = maxEnt.predict(fieldList);  // 预测出门和自宅的概率各是多少
        System.out.println(Arrays.toString(result));
}

Implementación Java de máxima entropía

Explicación detallada del algoritmo
La entropía máxima pertenece al modelo de identificación, que puede satisfacer todas las restricciones conocidas y no hace suposiciones excesivas sobre información desconocida.

Esta es una implementación Java concisa de máxima entropía, que proporciona interfaces de entrenamiento y predicción. La capacitación utiliza un algoritmo de capacitación GIS y viene con un conjunto de capacitación de muestra. Este artículo tiene como objetivo presentar el principio, la clasificación y la implementación de la entropía máxima. No implica derivación de fórmulas u otros algoritmos de entrenamiento, así que siéntase libre de consumirlo.

teoría de la máxima entropía

Introducción

La entropía máxima pertenece al modelo de identificación, que puede satisfacer todas las restricciones conocidas y no hace suposiciones excesivas sobre información desconocida.

¿Cuáles son las restricciones conocidas? Este artículo no te confundirá con terminología oscura. Aquí tienes un ejemplo:

Tu amiga "sale" o "se queda en casa" todos los días. Estas dos actividades se ven afectadas por el "clima", el "estado de ánimo" y la "humedad" (por ser niña) al mismo tiempo. Podemos llamarlas características.

A continuación, recopilamos algunos ejemplos correspondientes de "actividad <-> características" de su historial de Weibo, como por ejemplo:

1.“今天天气真好,我很开心,所以出门逛街了”
2.“太干燥了,我要睡个美容觉!”
3.“我的备胎2号又来踩我的微博主页了,气死我了!魔都的雨冷死了,干脆看美剧算了!”
4.“男神约我逛街,就算天气差,我也要去!”
5.……

Podemos sentir intuitivamente que esto es una... digresión de la perra del té verde ( ̄_ ̄|||)... Podemos sentir intuitivamente que "buen tiempo" se relaciona positivamente con "salir" y "buen humor" " Lo mismo ocurre: el mal humor tiene una correlación negativa, pero esto no es absoluto: puede que sólo sea cierto cuando "no está seco".

La entropía máxima digitaliza nuestra intuición como una característica (o función de característica) y calcula qué tan importante es cada característica. Las restricciones significan que la distribución de los resultados predichos satisface las probabilidades estadísticas de las características, y estas probabilidades se distribuyen uniformemente. El resultado final es que se maximiza la entropía del sistema.

La entropía máxima no supone que el "clima" y el "estado de ánimo" se distribuyan de forma independiente, ni admite que el "clima" tenga un impacto en el "estado de ánimo". Tal vez sí tenga un impacto, pero la entropía máxima sólo garantiza que el resultado final se ajuste a restricciones de probabilidad.

Si tiene conocimientos matemáticos profundos y suficiente tiempo, puede optar por leer los artículos y los procesos de derivación en el apéndice, donde obtendrá descripciones rigurosas y derivación de fórmulas.

Clasificación

Los modelos de máxima entropía se pueden dividir en dos tipos para la estimación de probabilidad basada en información de muestra: modelos conjuntos de máxima entropía y modelos condicionales de máxima entropía. Supongamos que a es un evento y b es el entorno (o contexto) en el que ocurre el evento a, entonces la probabilidad conjunta de a y b se registra como p(a, b). En términos generales, suponiendo que el conjunto de todos los eventos posibles es A y el conjunto de todos los entornos es B, entonces para cualquier a∈A, b∈B dado, se debe establecer la entropía máxima conjunta para encontrar la probabilidad p(a, b ) Modelo. Para calcular la probabilidad de que el evento a ocurra bajo la condición de b, es decir, la probabilidad p (a | b), se debe establecer un modelo de entropía máxima condicional.

El modelo de máxima entropía implementado en este artículo pertenece al modelo de máxima entropía condicional.

lograr

El código lo puedes descargar tú mismo.

Conjunto de entrenamiento

Si convertimos el Weibo recopilado anteriormente en un conjunto de datos legible por computadora data/train.txt (ya incluido en este proyecto de código abierto):

Outdoor Sunny Happy
Outdoor Sunny Happy Dry
Outdoor Sunny Happy Humid
Outdoor Sunny Sad Dry
Outdoor Sunny Sad Humid
Outdoor Cloudy Happy Humid
Outdoor Cloudy Happy Humid
Outdoor Cloudy Sad Humid
Outdoor Cloudy Sad Humid
Indoor Rainy Happy Humid
Indoor Rainy Happy Dry
Indoor Rainy Sad Dry
Indoor Rainy Sad Humid
Indoor Cloudy Sad Humid
Indoor Cloudy Sad Humid

Vemos que los datos tienen hasta 4 columnas, la primera columna de cada fila representa las actividades del día y el resto representa el entorno del día.

tren

En realidad, el propósito del entrenamiento es calcular un conjunto de multiplicadores de Lagrange óptimos, que corresponden a la importancia de cada función característica.

Algoritmo SIG

Defina λi como el multiplicador de Lagrange de la función característica i, C como el número máximo de características para cada evento, y el numerador y denominador en log representan la expectativa de distribución empírica y la expectativa de estimación del modelo respectivamente.

El algoritmo GIS utiliza el modelo de la enésima iteración para estimar la distribución de cada característica en los datos de entrenamiento. Si excede el real (la fracción es menor que 1, log obtiene un número negativo), reduzca el parámetro correspondiente (agregar números negativos lo hará más pequeño). De lo contrario, hazlos más grandes. Cuando la distribución característica de la muestra de entrenamiento es la misma que la del modelo, se obtienen los parámetros óptimos.

Esta fórmula se describe en Java de la siguiente manera:

for (int i = 0; i < maxIt; ++i)
       {
    
    
          computeModeE(modelE);
          for (int w = 0; w < weight.length; w++)
          {
    
    
           lastWeight[w] = weight[w];
           weight[w] += 1.0 / C * Math.log(empiricalE[w] / modelE[w]);
           }
          if (checkConvergence(lastWeight, weight)) break;
        }

predecir

Por fin ha llegado el momento más emocionante. Como respaldo número 2, mañana le pedirás que vea una película. Por la previsión meteorológica sabes que mañana hará sol y habrá buena humedad. Entonces, ¿cuál es la probabilidad de que ella acepte salir contigo?

   String path = "data/train.txt";
        MaxEnt maxEnt = new MaxEnt();
        maxEnt.loadData(path);
        maxEnt.train(200);
        List<String> fieldList = new ArrayList<String>();
        fieldList.add("Sunny"); // 假如天晴
        fieldList.add("Humid"); // 并且湿润
        Pair<String, Double>[] result = maxEnt.predict(fieldList);  // 预测出门和自宅的概率各是多少
        System.out.println(Arrays.toString(result));

producción

[Outdoor=0.9747657631914007, Indoor=0.025234236808599233]

Parece que la probabilidad de salir llega al 97%.

Bueno, se me olvidó decírtelo. También debes multiplicarlo por la probabilidad de que ella acepte hacer algo por ti. Esta probabilidad probablemente sea cercana a 0. ¿Por qué? ¡Porque eres un codificador jajajajajajajajajajajajajajajajajajajaja!

"Los perros solteros también son perros, y mostrar afecto también es una forma de maltrato canino. No tienes que amarlos, pero por favor no los lastimes".


Dirección de descarga de recursos : https://download.csdn.net/download/sheziqiong/88284338
Dirección de descarga de recursos : https://download.csdn.net/download/sheziqiong/88284338

Supongo que te gusta

Origin blog.csdn.net/newlw/article/details/132625342
Recomendado
Clasificación