C# Class Kooboo.Commerce.Recommendations.Engine.Collaborative.ItemSimilarityCalculator

用于计算两物品相似度。
原始公式为: similarity(i, j) = N(i) ∩ N(j) / SQRT(N(i) * N(j)) 其中 N(i) 为对 i 产生过行为的用户数,N(j) 为对 j 产生过行为的用户数。 改进方案为: (1) 引入时间衰减因子。原先分子为共同对i, j产生行为的用户数,即对两物品每产生一次共同物品则加固定数值1,将其改为每次加上 1 * 时间衰减因子。 时间衰减因子的计算方法为: time attenuation factor = 1 / (1 + alpha * Abs(timestamp1 - timestamp2)), 其中 alpha 由 TimeAttenuationAlpha 指定,值越大衰减越快。 (2) 对流行物品进行处罚。原先分母为 SQRT(N(i) * N(j)),即 N(i) ^ 0.5 * N(j) ^ 0.5,若 j 为流行物品,则公式分母改为 N(i) ^ (1 - alpha) * N(j) ^ alpha, 其中 alpha 由 PopularItemPunishAlpha 指定,值越大处罚的越多,当为 0.5 时和原公式等价。 (3) 对活跃用户进行处罚 (ItemCF-IUF)。在计算分子时,改为当用户对两物品有共同行为时,乘上 1 / Log(1 + 用户活跃度)。这条改进和 (1) 相乘共同构成分子的值。
Mostrar archivo Open project: Kooboo/Ecommerce Class Usage Examples

Public Methods

Method Description
CalculateSimilarity ( string item1, string item2 ) : double
ItemSimilarityCalculator ( IBehaviorStore behaviorStore, IItemPopularityProvider popularityProvider ) : System

Private Methods

Method Description
ComputeDenominator ( string item1, string item2 ) : double
ComputeNumerator ( string item1, string item2, IEnumerable usersBehavedOnBothItems ) : double

Method Details

CalculateSimilarity() public method

public CalculateSimilarity ( string item1, string item2 ) : double
item1 string
item2 string
return double

ItemSimilarityCalculator() public method

public ItemSimilarityCalculator ( IBehaviorStore behaviorStore, IItemPopularityProvider popularityProvider ) : System
behaviorStore IBehaviorStore
popularityProvider IItemPopularityProvider
return System