1.表示使用者行為矩陣,即統計使用者購買某種商品型別的數量
public
double getnumbycustomer(customer customer)
}return vectore;
}
2.用余弦距離計算每個使用者與其它使用者的行為相似度
下面**是兩個使用者之間的相似度,進行遍歷就可以獲取全部相似度
public
double
countsimilarity(double a,double b)
return result;
}
3.取相似度最高的前n個使用者,組成相似使用者集合
對map按值進行排序
public list> getmaxsimilarity(customer customer)
}list> list = new linkedlist>( result.entryset() );
collections.sort( list, new comparator>()
} );
return list;
}
4.獲得相似使用者集合購買的商品,並統計相似使用者購買的商品的數量,進行排序
public mapgetproducts(list.entry
> list)
mapmap =new hashmap();
for(customer customer:simcustomers)else
map.put(entry.getkey(),model);}}
return map;
}
總的呼叫函式,將前面函式連線,並把結果存到檔案中。如果檔案不存在,則用演算法計算,如果檔案內容存在,則直接讀取檔案的內容。開定時任務,每天或者一周將商品推薦檔案刪除,則會自動更新商品推薦內容
public mapgetallsimilarity(customer customer) throws ioexception
inputstream inputstream = this.getclass().getclassloader().getresourceasstream("cxtx.properties");
properties p = new properties();
try catch (ioexception e1)
string folderpath = p.getproperty("recommendfile");
file file=new file(folderpath);
if(!file.exists())
fileinputstream fileinputstream=new fileinputstream(file);
mapmap =new hashmap();
com.alibaba.fastjson.jsonobject jsonobject = null;
try
} catch (ioexception e)
object content=null;
if(jsonobject==null)
jsonobject object=new jsonobject(temp);
bufferedwriter.write(object.tostring());
bufferedwriter.flush();
if(object!=null)
}else
}map.put("msg","獲取成功");
map.put("content",content);
return map;
}
1.使用者相似度計算時,要考慮分母為0的情況;同時要防止數值太大,超過了double能表示的範圍,可以做一些處理,例如除以最大的某個商品銷售量,來表示某個維度的向量值,或者減去某個值等等
2.余弦值越接近1,表明兩個向量越相似,即計算出來的值越大,使用者行為越相似
3.最後獲得推薦的商品數量可以較多或較少,要根據一定策略進行排序,例如相似使用者的購買數量,而不是商品總的銷售量,因為不相似使用者的資料,容易產生干擾。
協同過濾演算法
3種形式的協同過濾 collaborative filtering 演算法 1 user based 相同 相似 使用者的喜好相同 2 item based 能夠引起使用者興趣的專案,必定與其之前評分高的專案相似 3 model based 先用歷史資料得到乙個模型,再用此模型進行 參考 這個位址是...
協同過濾演算法
乙個人想看電影的時候常常會思考要看什麼電影呢。這個時候他可能會問周圍愛好的人求推薦。現在社會每天都會產生海量的資訊。面對這麼多資訊好多人都不知道什麼資訊是自己需要的。推薦系統正是起了這麼乙個作用。推薦系統的應用隨處可見。網路購物是乙個典型的例子,電子商務的運營商往往會根據使用者在 的行為推薦使用者可...
協同過濾演算法
演算法思想 尋找與目標使用者相似使用者,然後將相似使用者買過但目標使用者沒有買過的商品推薦給目標使用者 舉個栗子 由於目標使用者與其相似使用者非常相似 比如大部分的考研學生都購買 肖秀榮八套卷 現在我們的目標使用者購買了大量的考研資料但還沒有買 八套卷 除了 八套卷 目標使用者與考研學生相似度十分高...