Flink 推荐算法ALS

2017/12/16 Flink

推荐算法 ALS

ALS (Alternating Least Squares)

ALS 算法会将给定的矩阵分解成为两个因子,如下: 为了更好的理解这个算法的应用,下面给出一个算法示例: 假如我们有如下数据(user_id,book_id,rating):


1 10 1
1 11 2
1 12 5
1 13 5
1 14 5
1 15 5
1 16 5
1 17 1
1 18 5
2 10 1
2 11 2
2 15 5
2 16 4.5
2 17 1
2 18 5
3 11 2.5
3 12 4.5
3 13 4
3 14 3
3 15 3.5
3 16 4.5
3 17 4
3 18 5
4 10 5
4 11 5
4 12 5
4 13 0
4 13 2
4 14 2
4 15 3
4 16 1
4 17 4
4 18 1

如下是ALS算法的使用示例:

object MyALSApp{
    def main(args:Array[String]):Unit = {

        val env = ExecutionEnvironment.getExecutionEnvironment
        val inputDS:DateSet[(Int,Int,Double)] = env.readCsvFile[(Int,Int,Double)]("input.csv")

        val als=ALS().setIterations(10).setNumFactors(10).setBlocks(100).setTemporaryPath("tmp")

        val parameters=ParameterMap().add(ALS.Lambda,0.9).add(ALS.Seed,42L)

        als.fit(inputDS,parameters)

        val testingDS:DataSet[(Int,Int)] = env.readCsvFile[(Int,Int)]("test-data.csv")

        val predictedRatings.writeAsCsv("output")

        env.execute("Flink Recommendation App")

    }

}
Show Disqus Comments

Search

    Table of Contents