The results of knn model
some results:
问一下,为什么movielens_kmax跑出来所有数据都是0? 设k=100,300都是。 导致RMSE都是0.985617
我把knnBase.cpp和getkmaxth.cpp里的分割符改成"\t"好像就可以了。 100K u1 K=300 RMSE=1.02165 K=100 RMSE=1.01153
movielens 10K u1的K=300,RMSE:1.06713; movielens 10K u1的K=100,RMSE:1.07137;LZ好像把数据标错了。。
为什么RMSE=1.05584,无论k=100 or 300??
以前确实有bug,原因是我将缩进格式中的tab换成空格的过程中,将分割符的tab也替换了,非常抱歉,已经改正,请大家更新代码 movielens 100K dataset(ua),K=10, RMSE=1.08201 movielens 100K dataset(ua),K=300,RMSE=1.0796 movielens 100K dataset(ua),K=1000,RMSE=1.03437
调节KNN中的K的大小在getkmax.cpp中的"#define KNN_K 1000"这么一句!
K的大小可以直接调整getkmax.cpp的main函数中的knn::getKMaxSim(K)~原来如此~
在做KDD cup,里面item-item算getsim太慢。item cf算法主要慢应该就是慢在找交集上了。。 两个item各有10w user取交集用map的find功能太慢了。而且lz应该在getsim的find里从itemUserListitem1?.size()小的找size()大的。 另外,我把item-user做成文件存起来,把user排序后,用链表的找法(把小的一边序号+1)比map find要快。。 不知道LZ有没有能比较快的找出70%交集的方法?
你这程序好像有bug , getkmaxth.cpp 生成的最大相似度值都是0 , line 74: 对于第一个id的 simArray 此时还是空。 line 94,95 : 在程序的逻辑中不可能执行,pch = strtok (NULL,separator);这个函数导致while 只执行一次。 不知道我下的是不是最新版本。
问一下,为什么movielens_kmax跑出来所有数据都是0? 设k=100,300都是。 导致RMSE都是0.985617
我把knnBase.cpp和getkmaxth.cpp里的分割符改成"\t"好像就可以了。 100K u1 K=300 RMSE=1.02165 K=100 RMSE=1.01153
movielens 10K u1的K=300,RMSE:1.06713; movielens 10K u1的K=100,RMSE:1.07137;LZ好像把数据标错了。。
为什么RMSE=1.05584,无论k=100 or 300??
以前确实有bug,原因是我将缩进格式中的tab换成空格的过程中,将分割符的tab也替换了,非常抱歉,已经改正,请大家更新代码 movielens 100K dataset(ua),K=10, RMSE=1.08201 movielens 100K dataset(ua),K=300,RMSE=1.0796 movielens 100K dataset(ua),K=1000,RMSE=1.03437
调节KNN中的K的大小在getkmax.cpp中的"#define KNN_K 1000"这么一句!
K的大小可以直接调整getkmax.cpp的main函数中的knn::getKMaxSim(K)~原来如此~
在做KDD cup,里面item-item算getsim太慢。item cf算法主要慢应该就是慢在找交集上了。。 两个item各有10w user取交集用map的find功能太慢了。而且lz应该在getsim的find里从itemUserListitem1?.size()小的找size()大的。 另外,我把item-user做成文件存起来,把user排序后,用链表的找法(把小的一边序号+1)比map find要快。。 不知道LZ有没有能比较快的找出70%交集的方法?
你这程序好像有bug , getkmaxth.cpp 生成的最大相似度值都是0 , line 74: 对于第一个id的 simArray 此时还是空。 line 94,95 : 在程序的逻辑中不可能执行,pch = strtok (NULL,separator);这个函数导致while 只执行一次。 不知道我下的是不是最新版本。