2009-03-29 22 views
7

Soy nuevo en Inteligencia Artificial. Entiendo el algoritmo K más cercano y cómo implementarlo. Sin embargo, ¿cómo se calcula la distancia o el peso de las cosas que no están en una escala?K Algoritmo del vecino más cercano duda

Por ejemplo, la distancia de edad se puede calcular fácilmente, pero ¿cómo se calcula qué tan cerca está de rojo a azul? Tal vez los colores son un mal ejemplo porque aún puedes decir usar la frecuencia. ¿Qué tal una hamburguesa con pizza o papas fritas, por ejemplo?

Tengo la sensación de que hay una forma inteligente de hacerlo.

Gracias de antemano por su amable atención.

EDIT: Gracias a todos por sus excelentes respuestas. Realmente ayudó y lo aprecio. Pero estoy pensando que debe haber una salida.

¿Puedo hacerlo de esta manera? Digamos que estoy usando mi algoritmo KNN para hacer una predicción para una persona si va a comer en mi restaurante que sirve los tres alimentos anteriores. Por supuesto, hay otros factores más que simples, para el campo de la comida favorita, de 300 personas, 150 ama la hamburguesa, 100 ama la pizza y 50 ama las papas fritas. El sentido común me dice que la comida favorita afecta la decisión de las personas de comer o no.

Así que ahora una persona entra a su comida favorita como hamburguesa y voy a predecir si va a comer en mi restaurante. Ignorando otros factores, y basado en mi (previa) base de conocimiento, el sentido común me dice que hay una mayor probabilidad de que la distancia de los k vecinos más cercanos para este alimento favorito en particular esté más cerca en comparación con si entró pizza o papas fritas.

El único problema con eso es que utilicé la probabilidad, y podría estar equivocado porque no sé y probablemente no pueda calcular la distancia real. También me preocupa este campo porque pongo demasiado/muy poco peso en mi predicción porque la distancia probablemente no sea escalable con otros factores (precio, hora del día, si el restaurante está lleno, etc. que puedo cuantificar fácilmente) pero Supongo que podría ser capaz de evitarlo con algunos ajustes de parámetros.

Oh, todos dieron una buena respuesta, pero solo puedo aceptar una. En ese caso, solo aceptaré el que obtenga la mayor cantidad de votos mañana. Gracias a todos de nuevo.

Respuesta

11

Representa todos los alimentos para los que se recopilan datos como una "dimensión" (o una columna en una tabla).

Record "le gusta" por cada persona a la que puede recopilar datos, y colocar los resultados en una tabla:

 
      Burger | Pizza | Fries | Burritos | Likes my food 
person1  1  |  0 |  1 |  1 |  1 
person2  0  |  0 |  1 |  0 |  0 
person3  1  |  1 |  0 |  1 |  1 
person4  0  |  1 |  1 |  1 |  0 

Ahora, dada una nueva persona, con información sobre algunos de los alimentos que le gustan, se puede medir la similitud con otras personas usando una simple medida como el Pearson Correlation Coefficient, o la Cosine Similarity, etc.

Ahora usted tiene una manera de encontrar K vecinos más cercanos y tomar alguna decisión ..

para más inf avanzada ormación sobre esto, busque "filtrado colaborativo" (pero le advierto, se vuelve matemático).

+0

¡Eso era lo que estaba buscando! Muchas gracias. =) – wai

5

Este es uno de los problemas de la representación del conocimiento en AI. Subjetivamente juega un papel importante. ¿Aceptaríamos tú y yo, por ejemplo, la "cercanía" de una hamburguesa, pizza y papas fritas?

Probablemente necesites una matriz de búsqueda que contenga los elementos que se van a comparar. Es posible que pueda reducir esta matriz si puede asumir la transitividad, pero creo que incluso eso sería incierto en su ejemplo.

La clave puede ser intentar y determinar la función con la que intenta comparar. Por ejemplo, si estaba comparando sus alimentos en la salud, es posible que pueda llegar a algo más objetivo.

2

Si mira "Collective Intelligence", verá que asignan una escala y un valor. Así es como Netflix compara las clasificaciones de películas y cosas así.

Tendrá que definir "cercanía" subiendo esa escala y asignando valores para cada una.

0

No hay una "mejor" forma de hacerlo. En última instancia, debe llegar a una escala arbitraria.

7

Bueno, 'más cercano' implica que tienes alguna métrica en la que las cosas pueden estar más o menos 'distantes'. La cuantificación de "hamburguesa", "pizza" y "papas fritas" no es tanto un problema KNN como se trata de un modelo de sistema fundamental. Si tiene un sistema en el que está haciendo análisis donde "hamburguesa", "pizza" y "papas fritas" son términos, la razón por la que el sistema existe va a determinar cómo se cuantifican, como si estuviera tratando de descubrir cómo obtener el mejor sabor y la menor cantidad de calorías para una determinada cantidad de dinero, entonces ta-da, ya sabes cuáles son tus métricas. (Por supuesto, 'mejor sabor' es subjetivo, pero ese es otro conjunto de problemas.)

No corresponde a estos términos tener cuantificabilidad inherente y por lo tanto decirle cómo diseñar su sistema de análisis; Depende de usted decidir qué está tratando de lograr y diseñar métricas desde allí.

1

De hecho, presentaría pares de estos atributos a los usuarios y les pediría que definan su proximidad. Usted los presentará con una escala que va desde [sinónimo ... muy extraño] o similar. Habiendo muchas personas haciendo esto, terminarán con una función de proximidad ampliamente aceptada para los valores de los atributos no lineales.

0

Buenas respuestas. Podrías inventar una métrica o, como sugiere malach, preguntar a algunas personas. Para hacerlo bien, parece que necesita bayesian analysis.

Cuestiones relacionadas