## org.apache.mahout.cf.taste.impl.similarity
Class EuclideanDistanceSimilarity

    java.lang.Object
      org.apache.mahout.cf.taste.impl.similarity.EuclideanDistanceSimilarity

All Implemented Interfaces:
  Refreshable, ItemSimilarity, UserSimilarity

    public final class EuclideanDistanceSimilarity

extends java.lang.Object

An implementation of a "similarity" based on the Euclidean "distance" between two users X and Y. Thinking of items as dimensions and preferences as points along those dimensions, a distance is computed using all items (dimensions) where both users have expressed a preference for that item. This is simply the square root of the sum of the squares of differences in position (preference) along each dimension. The similarity is then computed as 1 / (1 + distance), so the resulting values are in the range (0,1].

Constructor Summary
`EuclideanDistanceSimilarity(DataModel dataModel)`
`EuclideanDistanceSimilarity(DataModel dataModel, Weighting weighting)`

Method Summary
`PreferenceTransform` `getPrefTransform()`
`SimilarityTransform` `getSimilarityTransform()`
`double[]` `itemSimilarities(long itemID1, long[] itemID2s)` A bulk-get version of `ItemSimilarity.itemSimilarity(long, long)`.
`double` `itemSimilarity(long itemID1, long itemID2)` Returns the degree of similarity, of two items, based on the preferences that users have expressed for the items.
`void` `refresh(java.util.Collection<Refreshable> alreadyRefreshed)` Triggers "refresh" -- whatever that means -- of the implementation.
`void` `setPreferenceInferrer(PreferenceInferrer inferrer)` Attaches a `PreferenceInferrer` to the implementation.
`void` `setPrefTransform(PreferenceTransform prefTransform)`
`void` `setSimilarityTransform(SimilarityTransform similarityTransform)`
`java.lang.String` `toString()`
`double` `userSimilarity(long userID1, long userID2)` Returns the degree of similarity, of two users, based on the their preferences.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### EuclideanDistanceSimilarity

    public EuclideanDistanceSimilarity(DataModel dataModel)
                                throws TasteException

Throws:
  `java.lang.IllegalArgumentException` - if `DataModel` does not have preference values
  `TasteException`

### EuclideanDistanceSimilarity

    public EuclideanDistanceSimilarity(DataModel dataModel,
                                       Weighting weighting)
                                throws TasteException

Throws:
  `java.lang.IllegalArgumentException` - if `DataModel` does not have preference values
  `TasteException`

Method Detail

### setPreferenceInferrer

    public final void setPreferenceInferrer(PreferenceInferrer inferrer)

  Description copied from interface: `UserSimilarity`

  Attaches a `PreferenceInferrer` to the implementation.

  Specified by:
    `setPreferenceInferrer` in interface `UserSimilarity`
  Parameters:
    `inferrer` - `PreferenceInferrer`

### getPrefTransform

    public final PreferenceTransform getPrefTransform()

### setPrefTransform

    public final void setPrefTransform(PreferenceTransform prefTransform)

### getSimilarityTransform

    public final SimilarityTransform getSimilarityTransform()

### setSimilarityTransform

    public final void setSimilarityTransform(SimilarityTransform similarityTransform)

### userSimilarity

    public double userSimilarity(long userID1,
                                 long userID2)
                          throws TasteException

  Description copied from interface: `UserSimilarity`

  Returns the degree of similarity, of two users, based on the their preferences.

  Specified by:
    `userSimilarity` in interface `UserSimilarity`
  Parameters:
    `userID1` - first user ID
    `userID2` - second user ID
  Returns:
    similarity between the users, in [-1,1] or `Double.NaN` similarity is unknown
  Throws:
    `NoSuchUserException` - if either user is known to be non-existent in the data
    `TasteException` - if an error occurs while accessing the data

### itemSimilarity

    public final double itemSimilarity(long itemID1,
                                       long itemID2)
                                throws TasteException

  Description copied from interface: `ItemSimilarity`

  Returns the degree of similarity, of two items, based on the preferences that users have expressed for the items.

  Specified by:
    `itemSimilarity` in interface `ItemSimilarity`
  Parameters:
    `itemID1` - first item ID
    `itemID2` - second item ID
  Returns:
    similarity between the items, in [-1,1] or `Double.NaN` similarity is unknown
  Throws:
    `NoSuchItemException` - if either item is known to be non-existent in the data
    `TasteException` - if an error occurs while accessing the data

### itemSimilarities

    public double[] itemSimilarities(long itemID1,
                                     long[] itemID2s)
                              throws TasteException

  Description copied from interface: `ItemSimilarity`

  A bulk-get version of `ItemSimilarity.itemSimilarity(long, long)`.

  Specified by:
    `itemSimilarities` in interface `ItemSimilarity`
  Parameters:
    `itemID1` - first item ID
    `itemID2s` - second item IDs to compute similarity with
  Returns:
    similarity between itemID1 and other items
  Throws:
    `NoSuchItemException` - if any item is known to be non-existent in the data
    `TasteException` - if an error occurs while accessing the data

### refresh

    public final void refresh(java.util.Collection<Refreshable> alreadyRefreshed)

  Description copied from interface: `Refreshable`

  Triggers "refresh" -- whatever that means -- of the implementation. The general contract is that any should always leave itself in a consistent, operational state, and that the refresh atomically updates internal state from old to new.

  Specified by:
    `refresh` in interface `Refreshable`
  Parameters:
    `alreadyRefreshed` - s that are known to have already been refreshed as a result of an initial call to a method on some object. This ensure that objects in a refresh dependency graph aren't refreshed twice needlessly.

### toString

    public final java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

Copyright © 2008-2010 The Apache Software Foundation. All Rights Reserved.