2017-04-23 70 views
14

我想在Android手機應用程序的工作,我有一個功能根據興趣和位置找到匹配。許多約會應用程序已經在做一些有點功能,例如Tinder根據位置,性別和年齡等進行匹配。基於興趣和位置的算法爲Android手機應用程序

如果已經完成,我不想重新發明輪子。我已搜查谷歌和一些建議使用聚類算法此Algorithm for clustering people with similar interestsUser similarities algorithm

讓我們我有用戶

User1: {location: "Delhi, India", interests: ["Jogging", "Travelling", "Praying"] } 
User2: {location: "Noida, India", interests: ["Running", "Eating", "Praying"] } 
User3: {location: "Bangalore, India", interests: ["Exercise", "Visiting new places", "Chanting"] } 

我寫匹配少數低於標準匹配算法在這個JSON格式的數據 -

  1. 如果用戶1對「慢跑」感興趣並且另一個用戶2對「跑步」感興趣,以便慢跑和跑步或者是一種練習,所以他們應該匹配該個人資料以及它應該位置明智也最接近應該在上面。

  2. 該算法,當按比例運行時,應該相當高效。這意味着我想避免將每個用戶分別與每個其他用戶進行比較。對於N個用戶,這是一個O(N^2)操作。理想情況下,我想開發某種「分數」,我可以爲每個用戶單獨生成一個「分數」,因爲這隻涉及循環所有用戶一次。然後,我可以找到具有類似分數的其他用戶,並根據該分數確定最佳匹配。

任何人都可以建議我用的我怎麼能與firebase-cloud-functionfirebase-database幫助實現這一目標的一些實施。

回答

3

我認爲硬編碼相似性是一種錯誤的方法。僅供參考,沒有主要的搜索引擎依賴這種映射。

更好的方法是更多的數據驅動。創建一個特別的方法開始,一旦你有足夠的數據建立機器學習模型來排名匹配。這樣你就不必假設任何東西。

對於位置,有某種半徑(最好可以由用戶設置)並匹配半徑內的人。

+0

你的意思是,首先我需要一個配置文件的一些數據庫,隨機和明智的位置開始,一旦我擁有的用戶數據,然後開始關注基礎配套? –

+0

不要開始完全隨機的。但有一些廣泛的啓發式。例如,給予完全匹配輕微的優先權。一旦你有足夠的數據放棄啓發式,並採用基於機器學習的模型。 – ElKamina

+0

我陷入了困境。我是新爲這些基於還挺機器學習模型,你有一個想法,我應該怎麼跟我的情況下開始的?我應該在我的服務器上運行腳本還挺cron作業,其分析其分佈匹配與否數據庫中的所有配置文件數據,然後映射配置文件?像數據庫中的每個配置文件的匹配屬性具有那些匹配的配置文件ID? –

3

所有我要說擺脫數據集中的冗餘功能首先,慢跑和跑步可能是1層的功能,而不是2,之後還可以使用K-means算法對數據進行分組在無人監督的方式 到了解更多關於K-意味着你可以去這個鏈接: https://www.coursera.org/learn/machine-learning/lecture/93VPG/k-means-algorithm

也爲您建立一個在線系統,它具有提高自身日常 你可以看這個學習更多的關於在線學習 https://www.coursera.org/learn/machine-learning/lecture/ABO2q/online-learning

另外https://www.coursera.org/learn/machine-learning/lecture/DoRHJ/stochastic-gradient-descent這個sto chastic梯度將有助於瞭解。

這些都是概念上的視頻不會自己實現什麼,你可以隨時使用圖書館像tensorflow https://www.tensorflow.org/

我知道這看起來有點難以理解,但你會爲了構建自己的定製需要這方面的知識推薦系統。

+0

通過減少我的意思的特徵說的,而不是設置慢跑和跑步爲2層的功能,你可以將它們設置爲1,只有當你分析數據,但我不是說你應該刪除這些用戶 –

+0

「你可以使用K-means算法對數據進行分組」 - 你有這表明分組功能的代碼示例或片段? –

+0

我沒有什麼用場,現在由我寫了,只在這裏你可以看到在SciPy的 http://glowingpython.blogspot.in/2012/04/k-means-clustering-with-scipy實施。 HTML –

相關問題