---
title: SimRank
description: "| 模型接口类别 | 函数接口 |"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/bds/kunpengbdssparkml_16_0031.html
sourcePath: /source/zh/kunpengboostkithistory/2200/bds/kunpengbdssparkml_16_0031.html
indexId: 6d2a53142c0a32f8ca14cfb861e456043b46ece817015a6ffd98cfd70a7abffa73
---
# SimRank

| 模型接口类别 | 函数接口 |
| --- | --- |
| computeSimilarity API | def computeSimilarity(dataset: Dataset[\_]): SimRankSimilarity |


#### computeSimilarity API

- 功能描述
  计算用户与用户、商品和商品之间的相似度。


- 输入输出

  1. 包名：package org.apache.spark.ml.recommendation
  2. 类名：SimRank
  3. 方法名：computeSimilarity
  4. 输入：dataset: Dataset[_]，存储用户对商品的使用或查询等信息，至少包含用户和商品两列字段，参数描述如下表| 参数名 | 取值类型 | 描述 |
| --- | --- | --- |
| dataset | Dataset[\_] | 存储用户对商品的使用或查询等信息 |


  5. 基于原生算法优化的参数| 参数名 | 取值类型 | 描述 |
| --- | --- | --- |
| damp | Double | 衰减因子 |
| numIter | Int | 迭代次数 |
| userCol | String | 用户列列名 |
| itemCol | String | 商品列列名 |


    建议选取迭代因子damp为0.6，迭代次数numIter为5。衰减因子选择太小可能导致精度不高，太大可能导致收敛较慢；迭代次数太小可能导致精度下降，太大可能导致计算时间较长。 代码接口示例： val simrank = new SimRank().setDamp(0.6).setNumIter(5).setUserCol(“user”).setItemCol(“item”) val simrankSimilarity = simrank.computeSimilarity(df) val userSim = simrankSimilarity.userSimilarity val itemSim = simrankSimilarity.itemSimilarity

  6. 输出：simrankSimilarity: SimRankSimilarity，包含用户与用户、商品和商品之间的相似度，是一个case class，包含两个变量| 参数名 | 取值类型 | 描述 |
| --- | --- | --- |
| userSimilarity | DataFrame | 用户与用户之间相似度 |
| itemSimilarity | DataFrame | 商品和商品之间相似度 |


- 使用样例

```
val simrank = new SimRank().setDamp(0.6).setNumIter(5).setUserCol(“user”).setItemCol(“item”)
val simrankSimilarity = simrank.computeSimilarity(df)
val userSim = simrankSimilarity.userSimilarity
val itemSim = simrankSimilarity.itemSimilarity
```
