电子商务推荐系统中 knn 算法的最佳 k 是多少

what is the optimal k for knn algorithm in ecommerce recommendation system

我正在尝试使用 k 最近邻算法在我的毕业项目应用程序中制作推荐系统。

我做了一个项目推荐系统,根据产品评分向活跃用户推荐产品。
我的数据集是一个从数据库中填充的矩阵,列代表系统的用户,行代表系统中的产品,矩阵填充每个用户对每个产品的评分值。如下例dataset example ,但就我而言,有产品而不是电影。

现在有 17 个产品(行)和 12 个用户(列)。但我想要一个准确的通用方法来找到 k 。

我写了下面的代码来求k,我用k=sqrt(n)/2作为一个方程来求一个好的k值(n代表申请中产品的数量)。但我想要更准确的方法来找到 k 值。所以请帮助我。

k 值:

 private int determineK (int n) {
        String sizeString = Integer.toString( n ) ;
        double sizeDouble = Double.parseDouble( sizeString );
       double root = Math.sqrt( sizeDouble );
        double rawK = root / 2 ;
        int num = Math.round( ( float )rawK ) ;
        if ( num%2 != 0 ) {
            return num ;
        }
        else {
            return num + 1 ;  //odd
        }
    }

您总是可以根据经验使用 cross validation 并迭代多个值来找到好的 k 值。

通过交叉验证(比如 10%),对于 k 的每个候选者,您在 90% 的样本上训练数据,并在剩余的 10% 上测试它(重复 10 次,对于每个不同的“测试”集以获得更具统计意义的结果)。 从每个候选人中,您会得到 precision/recall 曲线,并可以根据它确定您的最佳 k