का उपयोग करके समानता की गणना करने के बाद मैं आइटम-जोड़ी को पुनर्प्राप्त कैसे कर सकता हूं मुझे अपनी सिफारिश प्रणाली में "सभी जोड़ों की समानता" समस्या का सामना करना पड़ा है। this databricks blog के लिए धन्यवाद, ऐसा लगता है कि RowMatrix मदद करने के लिए आ सकता है।स्पार्क- RowMatrix
हालांकि, RowMatrix सार्थक पंक्ति सूचियों के बिना एक मैट्रिक्स प्रकार है, जिससे मैं नहीं जानता कि कैसे विशिष्ट आइटम मैं और जे
नीचे के लिए columnSimilarities(threshold)
लागू करने के बाद समानता परिणाम पुनः प्राप्त करने के लिए क्या बारे में कुछ जानकारी है मैं कर रहा हूँ:
user::item::rating
2) मैं एक RowMatrix जिसमें प्रत्येक का निर्माण:
1) मेरे डेटा फ़ाइल इस तरह प्रारूप के साथ Movielens से आता है विरल वेक्टर मैं इस आइटम मैं
val dataPath = ...
val ratings: RDD[Rating] = sc.textFile(dataPath).map(_.split("::") match {
case Array(user, item, rate) => Rating(user.toInt, item.toInt, rate.toDouble)
})
val rows = ratings.map(rating=>(rating.product, (rating.user, rating.rating)))
.groupByKey()
.map(p => Vectors.sparse(userAmount, p._2.map(r=>(r._1-1, r._2)).toSeq))
val mat = new RowMatrix(rows)
val similarities = mat.columnSimilarities(0.5)
अब मैं एक CoordinateMatrix similarities
प्राप्त करने के लिए सभी उपयोगकर्ताओं की रेटिंग प्रतिनिधित्व करता है। मैं विशिष्ट आइटम i और j की समानता कैसे प्राप्त कर सकता हूं? हालांकि इसका उपयोग RDD[MatrixEntry]
को पुनर्प्राप्त करने के लिए किया जा सकता है, मुझे यकीन नहीं है कि पंक्ति I और कॉलम jआइटम i और j से मेल खाता है या नहीं।
एक चेतावनी यह है कि स्तंभ समानताएं() ऊपरी त्रिभुज कोऑर्डिनेट मैट्रिक्स देता है, इसलिए प्रविष्टियों में से केवल एक (i, j) या (j, i) मौजूद है। कौन सा मौजूद है इस पर निर्भर करता है कि मैं
harthur