免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

美食推薦系統(tǒng)畢業(yè)設(shè)計(jì):協(xié)同過濾原理與Python實(shí)戰(zhàn)

美食推薦系統(tǒng)畢業(yè)設(shè)計(jì):協(xié)同過濾原理與Python實(shí)戰(zhàn) 簡介互聯(lián)網(wǎng)時(shí)代的信息過載讓推薦系統(tǒng)成為電商、外賣、內(nèi)容平臺(tái)的關(guān)鍵技術(shù)而協(xié)同過濾則是其中應(yīng)用最廣、最容易落地的經(jīng)典算法。它不需要昂貴的GPU和海量數(shù)據(jù)集僅依靠用戶行為數(shù)據(jù)通過余弦相似度、皮爾遜相關(guān)系數(shù)等方法計(jì)算用戶或物品之間的相似關(guān)系就能生成個(gè)性化的Top-N推薦列表。這一技術(shù)價(jià)值在于兼顧效果與可解釋性尤其適合美食、電影、圖書等興趣相對(duì)穩(wěn)定的垂直場(chǎng)景。以美食推薦系統(tǒng)畢業(yè)設(shè)計(jì)為例可將協(xié)同過濾算法與Python、Flask、MySQL結(jié)合完成從評(píng)分?jǐn)?shù)據(jù)清洗、相似度矩陣構(gòu)建、UserCF/ItemCF算法實(shí)現(xiàn)到推薦接口開發(fā)的全流程并針對(duì)冷啟動(dòng)和數(shù)據(jù)稀疏問題給出工程化解決方案。這套設(shè)計(jì)思路同樣可遷移到其他物品推薦項(xiàng)目是理解推薦系統(tǒng)原理與工程實(shí)踐的理想切入點(diǎn)。1. 項(xiàng)目整體設(shè)計(jì)與核心思路1.1 為什么選“美食推薦系統(tǒng)”作為課題如果你是計(jì)算機(jī)、軟件工程或者大數(shù)據(jù)相關(guān)專業(yè)的學(xué)生應(yīng)該能感覺到畢業(yè)設(shè)計(jì)選題這件事有多關(guān)鍵。題目太簡單答辯的時(shí)候?qū)煄讉€(gè)問題就把你問住了題目太難開發(fā)周期拖到天荒地老論文還憋不出字。美食推薦系統(tǒng)這個(gè)題我覺得是性價(jià)比非常高的一類選擇。先說行業(yè)背景。推薦系統(tǒng)在電商、短視頻、外賣平臺(tái)里已經(jīng)是標(biāo)配技術(shù)了比如你打開外賣軟件會(huì)看到“猜你喜歡”打開菜譜App會(huì)看到“今日推薦”這些都是推薦算法在背后工作。把協(xié)同過濾算法落到美食場(chǎng)景既有真實(shí)的應(yīng)用價(jià)值又有清晰可拆解的技術(shù)點(diǎn)用來做畢業(yè)設(shè)計(jì)或課程項(xiàng)目素材非常充足。再說技術(shù)層面。協(xié)同過濾Collaborative Filtering是推薦系統(tǒng)里最經(jīng)典的算法家族它不像深度學(xué)習(xí)方法那樣需要昂貴的GPU和超大數(shù)據(jù)集只要有一臺(tái)普通筆記本、一份像樣的用戶評(píng)分?jǐn)?shù)據(jù)就能跑出效果明顯的推薦結(jié)果。這對(duì)本科生或剛?cè)腴T的研究生來說非常友好。1.2 一個(gè)系統(tǒng)拆開看推薦引擎只是核心不是全部我見過很多同學(xué)做這類系統(tǒng)上來就悶頭寫算法結(jié)果算法寫完發(fā)現(xiàn)系統(tǒng)交互、數(shù)據(jù)庫、可視化、論文圖表全都沒有著落。真正完整的“美食推薦系統(tǒng)”應(yīng)該包含三層。第一層是數(shù)據(jù)層。用戶信息、菜品信息、用戶對(duì)菜品的評(píng)分行為這些數(shù)據(jù)要能存下來、查得快、方便做分析。第二層是算法層也就是協(xié)同過濾推薦引擎接收用戶的評(píng)分歷史輸出Top-N推薦列表。第三層是應(yīng)用層用戶通過網(wǎng)頁或桌面端的界面注冊(cè)登錄、瀏覽菜品、給菜品打分然后看到一個(gè)“為你推薦”的列表。三層都打通這個(gè)系統(tǒng)的完整度才算合格。而且這三層恰好對(duì)應(yīng)畢業(yè)論文里的幾個(gè)核心章節(jié)需求分析、系統(tǒng)設(shè)計(jì)、核心算法實(shí)現(xiàn)、系統(tǒng)測(cè)試。也就是說你每做完一層論文就多出一章素材不會(huì)出現(xiàn)“算法做得挺好但論文湊不夠字?jǐn)?shù)”的尷尬。還有一點(diǎn)值得注意這套系統(tǒng)的設(shè)計(jì)思路可以通用。今天做美食明天把數(shù)據(jù)換成電影、圖書、音樂算法邏輯不需要大改。這也是我在答辯時(shí)比較喜歡強(qiáng)調(diào)的點(diǎn)——項(xiàng)目的擴(kuò)展性和方法論價(jià)值這比單純說“我實(shí)現(xiàn)了一個(gè)算法”要有說服力得多。1.3 技術(shù)棧選型別為了炫技選不熟悉的東西我整理過一份做這類系統(tǒng)的主流技術(shù)方案你可以根據(jù)自己的熟悉程度來選。層次推薦方案A主流推薦方案B輕量說明語言Python 3.8Python 3.8算法生態(tài)最成熟pandas/numpy/scikit-learn齊全Web框架FlaskDjangoFlask輕量好上手適合單體小系統(tǒng)Django自帶Admin后臺(tái)管理方便數(shù)據(jù)庫MySQLSQLite開發(fā)調(diào)試用SQLite省事寫論文建議用MySQL體現(xiàn)“企業(yè)級(jí)”前端Bootstrap jQuery原生HTML CSS不追求復(fù)雜交互的話Bootstrap最快出效果算法實(shí)現(xiàn)手動(dòng)實(shí)現(xiàn) scikit-learn驗(yàn)證僅手動(dòng)實(shí)現(xiàn)手動(dòng)實(shí)現(xiàn)能寫在論文里sklearn用于交叉驗(yàn)證結(jié)果個(gè)人建議如果時(shí)間緊Flask SQLite Bootstrap 手寫協(xié)同過濾這個(gè)組合最穩(wěn)。Python的安裝和環(huán)境配置是個(gè)老話題常見坑包括環(huán)境變量沒配好、pip下載慢、numpy版本沖突等直接用Anaconda或者Python官方安裝包裝好再用pip install -i https://pypi.tuna.tsinghua.edu.cn/simple flask pandas numpy這類國內(nèi)鏡像源裝依賴能把時(shí)間省下一大截。提示盡量別選你不熟悉的框架。畢業(yè)設(shè)計(jì)的核心是把推薦原理講清楚、系統(tǒng)能跑起來不是展示你會(huì)多少冷門技術(shù)。2. 協(xié)同過濾算法核心原理解析2.1 兩種路線UserCF與ItemCF協(xié)同過濾的核心思想一句話就能說透跟你相似的人喜歡吃的東西你大概率也喜歡你以前喜歡的東西的相似品你大概率也會(huì)喜歡。前一句話對(duì)應(yīng)基于用戶的協(xié)同過濾UserCF后一句話對(duì)應(yīng)基于物品的協(xié)同過濾ItemCF。UserCF的步驟是第一步計(jì)算用戶之間的相似度找到當(dāng)前用戶的“鄰居”第二步把鄰居們?cè)u(píng)分高但當(dāng)前用戶沒吃過的菜品聚合起來按預(yù)測(cè)評(píng)分排序輸出推薦列表。ItemCF的步驟是第一步計(jì)算菜品之間的相似度注意這個(gè)相似度是基于用戶行為算的不是基于菜品的原料、口味等屬性第二步根據(jù)用戶歷史評(píng)分過的菜品找出相似的菜品按預(yù)測(cè)評(píng)分排序輸出推薦。兩個(gè)路線各有適合的場(chǎng)景。UserCF更偏“社交化”適合新聞、社區(qū)這類用戶興趣變化快的場(chǎng)景ItemCF更偏“個(gè)性化”適合圖書、電影、美食這類興趣相對(duì)穩(wěn)定的場(chǎng)景。做美食推薦系統(tǒng)我在實(shí)際開發(fā)中其實(shí)更推薦ItemCF作為主力算法原因后面細(xì)說。2.2 相似度計(jì)算的三種常用方法無論UserCF還是ItemCF都繞不開“相似度計(jì)算”這個(gè)核心步驟。常用的有三種方法。余弦相似度是最容易理解的把用戶A的評(píng)分向量和用戶B的評(píng)分向量看作高維空間里的兩個(gè)向量計(jì)算它們夾角的余弦值。夾角越小余弦值越接近1說明兩個(gè)人越相似。計(jì)算公式是cos(θ) (A·B) / (|A| × |B|)在Python里用numpy實(shí)現(xiàn)只需要幾行代碼import numpy as np def cosine_similarity(vec_a, vec_b): # 兩個(gè)向量必須長度一致對(duì)應(yīng)位置是同一個(gè)菜品 dot np.dot(vec_a, vec_b) norm_a np.linalg.norm(vec_a) norm_b np.linalg.norm(vec_b) if norm_a 0 or norm_b 0: return 0 return dot / (norm_a * norm_b)皮爾遜相關(guān)系數(shù)是余弦相似度的升級(jí)版它對(duì)評(píng)分做了“中心化”處理也就是減去每個(gè)用戶的平均打分。這樣做的好處是如果一個(gè)用戶普遍打分偏高給什么都給4分另一個(gè)用戶打分偏低喜歡才給3分直接用余弦相似度會(huì)誤判他們口味不同而皮爾遜相關(guān)系數(shù)能消除這種評(píng)分尺度差異。公式是r Σ(A_i - avgA)(B_i - avgB) / sqrt(Σ(A_i - avgA)^2 × Σ(B_i - avgB)^2)修正余弦相似度是ItemCF里常用的變體用來消除不同用戶打分習(xí)慣對(duì)物品相似度的影響。它的做法是計(jì)算物品相似度時(shí)先把每個(gè)用戶的評(píng)分減去該用戶的平均分再套用余弦相似度公式。這三種方法的選擇邏輯我建議這么定數(shù)據(jù)稀疏、評(píng)分尺度差異大優(yōu)先皮爾遜評(píng)分?jǐn)?shù)據(jù)相對(duì)稠密、想快速看到效果用余弦ItemCF場(chǎng)景直接上修正余弦。2.3 評(píng)分預(yù)測(cè)最常用的加權(quán)求和公式算完相似度之后下一步是預(yù)測(cè)用戶對(duì)未吃過菜品的評(píng)分。這里最常用的方法是“加權(quán)求和”公式長這樣pred(u, i) Σ(sim(u, v) × r(v, i)) / Σ(sim(u, v))意思是用戶u對(duì)菜品i的預(yù)測(cè)評(píng)分等于“與u最相似的K個(gè)用戶v對(duì)菜品i的評(píng)分”的加權(quán)平均權(quán)重就是u和v的相似度。分母做歸一化防止不同K取值導(dǎo)致分?jǐn)?shù)范圍不穩(wěn)定。ItemCF的預(yù)測(cè)公式稍微有點(diǎn)不同它的加權(quán)對(duì)象是“用戶u評(píng)過分的物品與目標(biāo)物品i的相似度”pred(u, i) Σ(sim(i, j) × r(u, j)) / Σ(sim(i, j))在實(shí)際寫代碼的時(shí)候這個(gè)公式更適合用一個(gè)預(yù)計(jì)算好的“物品相似度矩陣”來查表而不是每次請(qǐng)求都現(xiàn)場(chǎng)算一遍。把相似度矩陣提前算好存下來推薦接口的響應(yīng)速度能從秒級(jí)降到毫秒級(jí)這個(gè)優(yōu)化在論文的“系統(tǒng)性能優(yōu)化”章節(jié)里是很好的加分項(xiàng)。3. 數(shù)據(jù)方案與預(yù)處理實(shí)戰(zhàn)3.1 評(píng)分?jǐn)?shù)據(jù)從哪來別在爬蟲上栽跟頭開發(fā)推薦系統(tǒng)最理想的數(shù)據(jù)集是像MovieLens那樣公開的評(píng)分?jǐn)?shù)據(jù)但美食領(lǐng)域公開數(shù)據(jù)集相對(duì)少。常見的解決方案有兩條路。第一條路是自己造數(shù)據(jù)。讓宿舍同學(xué)、網(wǎng)友幫忙填一批評(píng)分比如20個(gè)用戶對(duì)50道菜品的打分評(píng)分范圍1到5。數(shù)據(jù)量雖小但能跑通全鏈路而且你可以清楚知道每一行數(shù)據(jù)的來龍去脈。對(duì)畢業(yè)設(shè)計(jì)來說數(shù)據(jù)量不是問題算法的完整性和推理過程才是重點(diǎn)。第二條路是用爬蟲抓公開數(shù)據(jù)。這個(gè)方向要特別謹(jǐn)慎抓取網(wǎng)站數(shù)據(jù)要遵守目標(biāo)網(wǎng)站的robots協(xié)議和用戶條款只抓合法允許的公開信息做個(gè)人學(xué)習(xí)研究不得用于任何商業(yè)用途。我個(gè)人的建議是優(yōu)先找公開的菜譜數(shù)據(jù)集比如一些開源社區(qū)整理的帶評(píng)分字段的菜品數(shù)據(jù)或者自己構(gòu)造別把精力耗在爬蟲和反爬對(duì)抗上那對(duì)本課題的核心目標(biāo)幫助不大。注意論文里寫數(shù)據(jù)處理流程時(shí)一定要說明數(shù)據(jù)來源和預(yù)處理規(guī)則。答辯老師很可能會(huì)問“你的數(shù)據(jù)量這么小推薦結(jié)果有說服力嗎”這時(shí)候你要回答的是算法流程的合理性和評(píng)估指標(biāo)的設(shè)計(jì)而不是夸大數(shù)據(jù)的規(guī)模。3.2 核心數(shù)據(jù)表設(shè)計(jì)用戶、菜品、評(píng)分設(shè)計(jì)數(shù)據(jù)庫表的時(shí)候我習(xí)慣遵循“常規(guī)字段 推薦專用字段”的思維。用戶表user的常規(guī)字段包括user_id、username、password、register_time。如果想給系統(tǒng)加一點(diǎn)個(gè)性化可以加food_preference字段存用戶偏好的口味比如“辣、清淡、甜”之類的標(biāo)簽。但要注意協(xié)同過濾本身不需要這些屬性字段加上它只是為了在冷啟動(dòng)場(chǎng)景用戶還沒有評(píng)分歷史時(shí)有東西可用。菜品表dish的常規(guī)字段包括dish_id、dish_name、category分類如川菜、粵菜、甜品、price、description、image_url。你可以額外加一個(gè)avg_rating字段用來存菜品平均分。這個(gè)字段有兩個(gè)用處一是新用戶冷啟動(dòng)時(shí)可以按平均分推薦二是做排行榜功能時(shí)直接用SQL排序不用現(xiàn)場(chǎng)算。評(píng)分表rating是最核心的一張表字段包括rating_id、user_id、dish_id、score、rating_time。這張表一定要給(user_id, dish_id)建聯(lián)合唯一索引防止同一個(gè)用戶對(duì)同一道菜重復(fù)評(píng)分。每次寫入評(píng)分時(shí)順便同步更新dish表的avg_rating字段這樣排行榜和推薦候選池的數(shù)據(jù)始終是最新的。3.3 數(shù)據(jù)清洗稀疏矩陣的坑與應(yīng)對(duì)協(xié)同過濾的數(shù)據(jù)清洗和普通Web項(xiàng)目不太一樣關(guān)鍵在“評(píng)分矩陣”的構(gòu)建。假設(shè)有20個(gè)用戶、50道菜全量評(píng)分是20×501000個(gè)評(píng)分。但現(xiàn)實(shí)里每個(gè)用戶可能只評(píng)了10道菜那矩陣?yán)锞陀?00個(gè)空位稀疏度達(dá)到了80%。直接用這個(gè)矩陣算相似度結(jié)果會(huì)非常不穩(wěn)定。我的處理順序是第一步過濾掉評(píng)分?jǐn)?shù)量少于5條的用戶這些人提供的信息太少算出的相似度沒有統(tǒng)計(jì)意義第二步過濾掉被評(píng)分次數(shù)少于3次的菜品這些菜屬于長尾中的長尾推薦出來用戶也沒聽說過第三步補(bǔ)全空缺值常用兩種策略填0適合余弦相似度或填用戶平均分適合皮爾遜系數(shù)。在Python里構(gòu)建評(píng)分矩陣用pandas的pivot_table可以一行搞定import pandas as pd # 假設(shè)rating_df是原始評(píng)分表字段為user_id, dish_id, score rating_matrix rating_df.pivot_table( indexuser_id, columnsdish_id, valuesscore ).fillna(0) # 打印矩陣形狀確認(rèn)行列對(duì)不對(duì) print(rating_matrix.shape)這個(gè)矩陣的行是用戶列是菜品值就是評(píng)分。后面計(jì)算相似度的時(shí)候每次取一行就是一個(gè)用戶的評(píng)分向量非常方便。我在實(shí)際項(xiàng)目里習(xí)慣把這步處理封裝成build_rating_matrix(user_rating_df)這樣的函數(shù)輸入原始評(píng)分表輸出可直接用于相似度計(jì)算的矩陣保持代碼結(jié)構(gòu)清晰。4. 推薦引擎完整實(shí)現(xiàn)從算法到接口4.1 工具函數(shù)先算好相似度矩陣在寫推薦函數(shù)之前先把相似度矩陣準(zhǔn)備好。我習(xí)慣用一個(gè)單獨(dú)的函數(shù)來算UserCF的用戶相似度矩陣再用另一個(gè)函數(shù)算ItemCF的物品相似度矩陣。用戶相似度矩陣的實(shí)現(xiàn)思路對(duì)每一個(gè)用戶i遍歷所有用戶j計(jì)算i和j的皮爾遜相關(guān)系數(shù)。數(shù)據(jù)規(guī)模不大時(shí)雙重循環(huán)是沒問題的。20個(gè)用戶算下來最多400次相似度計(jì)算毫秒級(jí)完成。import pandas as pd import numpy as np def calculate_user_similarity(rating_matrix): 計(jì)算用戶之間的皮爾遜相似度矩陣 rating_matrix: DataFrame行是用戶列是菜品 返回: 相似度DataFrame行和列都是用戶id users rating_matrix.index.tolist() sim_matrix pd.DataFrame(0, indexusers, columnsusers) for u in users: for v in users: if u v: sim_matrix.loc[u, v] 1.0 continue # 找出兩個(gè)用戶都評(píng)過分的菜品 u_ratings rating_matrix.loc[u] v_ratings rating_matrix.loc[v] # 只取雙方評(píng)分都 0 的項(xiàng) common_mask (u_ratings 0) (v_ratings 0) common_items u_ratings[common_mask] if len(common_items) 2: sim_matrix.loc[u, v] 0 continue # 皮爾遜相關(guān)系數(shù) corr np.corrcoef( u_ratings[common_mask].values, v_ratings[common_mask].values )[0, 1] if np.isnan(corr): corr 0 sim_matrix.loc[u, v] round(corr, 4) return sim_matrix這段代碼里有兩個(gè)細(xì)節(jié)值得注意一是common_items 2時(shí)直接置0這是為了避免“兩個(gè)用戶只共同評(píng)過一道菜系數(shù)恰好算出來是1”這種偶然情況二是np.corrcoef可能返回NaN原因是共同評(píng)分項(xiàng)的方差為0比如兩個(gè)用戶共同評(píng)分都是5分要把它處理成0否則會(huì)影響后續(xù)計(jì)算。4.2 基于用戶的協(xié)同過濾推薦有了相似度矩陣UserCF的推薦函數(shù)就順理成章了。核心邏輯是找到和目標(biāo)用戶最相似的K個(gè)用戶K通常取5到10把這K個(gè)用戶評(píng)分高且目標(biāo)用戶沒吃過的菜品找出來按相似度加權(quán)算預(yù)測(cè)分返回Top-N。def recommend_by_user_cf(user_id, rating_matrix, sim_matrix, top_n10, k5): 基于用戶的協(xié)同過濾推薦 user_id: 目標(biāo)用戶 rating_matrix: 用戶-菜品評(píng)分矩陣 sim_matrix: 用戶相似度矩陣 top_n: 返回推薦菜品數(shù)量 k: 鄰居數(shù)量 if user_id not in rating_matrix.index: return [] # 目標(biāo)用戶已評(píng)分的菜品 rated set(rating_matrix.loc[user_id][rating_matrix.loc[user_id] 0].index) # 獲取相似用戶列表排除自己 sim_scores sim_matrix.loc[user_id].sort_values(ascendingFalse) # 只看相似度大于0的鄰居 neighbors [(uid, score) for uid, score in sim_scores.items() if uid ! user_id and score 0] neighbors neighbors[:k] if not neighbors: return [] # 候選菜品集合 candidate_scores {} candidate_weight {} for neighbor_id, sim_score in neighbors: neighbor_ratings rating_matrix.loc[neighbor_id] # 鄰居評(píng)分過的菜品 neighbor_rated_items neighbor_ratings[neighbor_ratings 0] for dish_id, score in neighbor_rated_items.items(): if dish_id in rated: continue # 用戶已經(jīng)吃過了不推薦 candidate_scores[dish_id] candidate_scores.get(dish_id, 0) sim_score * score candidate_weight[dish_id] candidate_weight.get(dish_id, 0) sim_score # 歸一化計(jì)算最終預(yù)測(cè)分 predictions {} for dish_id, total_score in candidate_scores.items(): if candidate_weight[dish_id] 0: predictions[dish_id] total_score / candidate_weight[dish_id] # 按預(yù)測(cè)分從高到低排序 sorted_predictions sorted(predictions.items(), keylambda x: x[1], reverseTrue) return sorted_predictions[:top_n]這里的加權(quán)公式用了“歸一化”核心原因是避免相似度值大的鄰居帶偏結(jié)果。你設(shè)想一下如果用戶A只和一個(gè)人特別像這個(gè)人給某道菜打了5分A對(duì)這道菜的預(yù)測(cè)分就是5分但如果有三個(gè)不那么像的人也打了4分平均下來才是更穩(wěn)的結(jié)果。歸一化恰好能平衡這個(gè)偏差。4.3 基于物品的協(xié)同過濾推薦ItemCF的推薦邏輯有點(diǎn)不同。它的核心不是“看鄰居吃了什么”而是“看你吃過的菜與什么菜相似”。def calculate_item_similarity(rating_matrix): 計(jì)算物品之間的修正余弦相似度矩陣 items rating_matrix.columns.tolist() sim_matrix pd.DataFrame(0, indexitems, columnsitems) # 物品的評(píng)分向量 item_vectors {} # 對(duì)每個(gè)菜品計(jì)算被用戶評(píng)分的平均分修正 for item in items: item_rating rating_matrix[item] # 對(duì)每個(gè)用戶做中心化處理 centered [] user_ids [] for uid in rating_matrix.index: score item_rating[uid] if score 0: # 該用戶所有評(píng)分的平均值 user_avg rating_matrix.loc[uid][rating_matrix.loc[uid] 0].mean() if user_avg user_avg: # 檢查非NaN centered.append(score - user_avg) user_ids.append(uid) item_vectors[item] (np.array(centered), user_ids) for i, item_i in enumerate(items): for j, item_j in enumerate(items): if i j: sim_matrix.loc[item_i, item_j] 1.0 continue # 找出同時(shí)評(píng)分過物品i和物品j的用戶 vec_i, users_i item_vectors[item_i] # 構(gòu)建用戶到評(píng)分的映射 map_i dict(zip(users_i, vec_i)) common [map_i[u] for u in users_i if u in dict(zip(*item_vectors[item_j][::-1]))] # 實(shí)際項(xiàng)目中更簡潔的寫法 set_i set(users_i) set_j set(item_vectors[item_j][1]) common_users set_i set_j common_i [] common_j [] for uid in common_users: common_i.append(map_i[uid]) common_j.append(item_vectors[item_j][0][item_vectors[item_j][1].index(uid)]) if len(common_users) 2: sim_matrix.loc[item_i, item_j] 0 continue common_i np.array(common_i) common_j np.array(common_j) # 修正余弦相似度 denom np.sqrt(np.sum(common_i**2)) * np.sqrt(np.sum(common_j**2)) if denom 0: sim_matrix.loc[item_i, item_j] 0 continue sim np.sum(common_i * common_j) / denom sim_matrix.loc[item_i, item_j] round(sim, 4) return sim_matrix這段代碼在實(shí)現(xiàn)時(shí)比較考驗(yàn)對(duì)“修正余弦”的理解。修正的核心在于先對(duì)每個(gè)用戶評(píng)分做中心化減去該用戶平均分再計(jì)算余弦。不這么做的話一個(gè)總是打5分的用戶和一個(gè)總是打3分的用戶即使口味高度一致算出來的相似度也會(huì)失真。實(shí)際開發(fā)里我通常把ItemCF的物品相似度矩陣存成Spark DataFrame或直接在MySQL里建一張表item_id_a, item_id_b, similarity因?yàn)橛?jì)算一次之后就不需要頻繁重算。只有新菜品加入或者用戶評(píng)分發(fā)生明顯變化時(shí)才做增量更新。4.4 雙算法融合與冷啟動(dòng)策略單獨(dú)用UserCF或ItemCF都可能遇到效果不穩(wěn)定的情況。我最后實(shí)現(xiàn)的是混合推薦策略當(dāng)用戶的評(píng)分?jǐn)?shù)量少于一定閾值時(shí)走冷啟動(dòng)邏輯評(píng)分?jǐn)?shù)量足夠時(shí)用UserCF和ItemCF各出一份推薦列表加權(quán)融合后再輸出。冷啟動(dòng)邏輯又分三種場(chǎng)景。第一種是系統(tǒng)里完全沒有評(píng)分這時(shí)候只能按菜品平均分推薦做得更好一點(diǎn)是按照分類做多樣性推薦。第二種是用戶沒有任何評(píng)分但注冊(cè)時(shí)填了口味偏好可以按偏好分類推薦。第三種是用戶只有1到3條評(píng)分這時(shí)我傾向于直接用內(nèi)容匹配比如用戶評(píng)分過的菜品的同分類菜品來補(bǔ)充算法推薦放到評(píng)分?jǐn)?shù)據(jù)積累到5條以上再介入。加權(quán)融合的公式也不復(fù)雜final_score(d) α × score_userCF(d) (1 - α) × score_itemCF(d)α的取值可以在實(shí)驗(yàn)里調(diào)。我在自己的數(shù)據(jù)集上測(cè)下來α取0.4左右效果最好也就是稍微偏向ItemCF。原因也簡單美食推薦場(chǎng)景里“你以前喜歡的菜的相似菜”比“和你相似的人喜歡的菜”更穩(wěn)妥因?yàn)榍罢叩耐扑]理由用戶更容易接受。5. 系統(tǒng)功能設(shè)計(jì)與論文PPT素材搭建5.1 功能模塊拆解照著做不會(huì)漏功能一個(gè)完整的Web版美食推薦系統(tǒng)功能模塊可以這樣拆。用戶模塊負(fù)責(zé)注冊(cè)、登錄、個(gè)人信息管理注冊(cè)時(shí)盡可能讓用戶選擇口味偏好這是冷啟動(dòng)的重要數(shù)據(jù)。菜品模塊負(fù)責(zé)菜品信息展示、分類瀏覽、關(guān)鍵詞搜索。評(píng)分模塊是核心交互用戶給吃過的菜打分這個(gè)動(dòng)作決定了推薦質(zhì)量。推薦模塊負(fù)責(zé)生成“為你推薦”列表要同時(shí)給“推薦理由”。榜單模塊負(fù)責(zé)展示熱門菜品、高分菜品本質(zhì)上是推薦系統(tǒng)的兜底。這套功能拆解對(duì)應(yīng)到代碼結(jié)構(gòu)上用Flask藍(lán)圖來組織非常合適比如一個(gè)auth_bp負(fù)責(zé)登錄注冊(cè)一個(gè)dish_bp負(fù)責(zé)菜品瀏覽一個(gè)recommend_bp負(fù)責(zé)推薦接口。每個(gè)藍(lán)圖獨(dú)立成文件代碼不會(huì)亂。5.2 Flask后端接口設(shè)計(jì)我整理了一份最小的接口清單照著寫就能支撐整個(gè)系統(tǒng)前后端聯(lián)動(dòng)。接口路徑方法功能關(guān)鍵參數(shù)/api/registerPOST用戶注冊(cè)u(píng)sername, password, taste/api/loginPOST用戶登錄username, password/api/dishesGET菜品列表分頁page, category/api/dishes/idGET菜品詳情無/api/ratePOST提交評(píng)分user_id, dish_id, score/api/recommend/user_idGET獲取推薦列表top_n/api/hotGET熱門榜單limit在實(shí)現(xiàn)時(shí)/api/rate這個(gè)接口稍微特殊一點(diǎn)它不只是往數(shù)據(jù)庫里插入一條評(píng)分記錄還應(yīng)該同步更新菜品表的avg_rating。這個(gè)操作可以用數(shù)據(jù)庫事務(wù)來保證一致性防止評(píng)分插入成功但平均分更新失敗的情況。5.3 畢業(yè)論文章節(jié)怎么搭、PPT怎么提煉論文這塊我建議章節(jié)結(jié)構(gòu)直接按系統(tǒng)構(gòu)建的自然順序來寫。第一章緒論寫研究背景、意義、國內(nèi)外研究現(xiàn)狀、論文結(jié)構(gòu)。第二章相關(guān)技術(shù)介紹寫Python、Flask、協(xié)同過濾算法概述、MySQL。第三章需求分析與概要設(shè)計(jì)寫功能性需求、非功能性需求、系統(tǒng)架構(gòu)圖、功能模塊圖。第四章詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)這部分是重點(diǎn)寫數(shù)據(jù)庫設(shè)計(jì)、每個(gè)功能模塊的時(shí)序圖、推薦算法的實(shí)現(xiàn)細(xì)節(jié)、核心代碼分析。第五章系統(tǒng)測(cè)試寫測(cè)試環(huán)境、功能測(cè)試用例表、推薦效果評(píng)估準(zhǔn)確率、召回率、Top-N命中率、測(cè)試結(jié)果分析。第六章總結(jié)與展望。PPT的提煉邏輯和論文不同核心是“講故事”。我的經(jīng)驗(yàn)是首頁用系統(tǒng)截圖吸引眼球然后一頁講痛點(diǎn)信息過載、選擇困難一頁講解決方案的宏觀流程圖再花三四頁講算法原理與效果對(duì)比最后用一張架構(gòu)圖收尾。PPT上盡量少放代碼多放流程圖和效果對(duì)比圖那才是答辯老師會(huì)關(guān)注的。這里有個(gè)很實(shí)用的技巧答辯PPT里的算法講解頁別只放公式放一張“用戶A和用戶B的評(píng)分矩陣以及相似度計(jì)算過程”的手工演算小表直觀到答辯老師一眼就懂。表里兩行用戶數(shù)據(jù)、簡單的加減乘除、最終相似度0.87這段講解會(huì)讓你在答辯時(shí)的表達(dá)順暢很多。6. 推薦效果評(píng)估與常見問題排查6.1 離線評(píng)估指標(biāo)別只盯著準(zhǔn)確率很多同學(xué)做推薦系統(tǒng)評(píng)估就是“看起來推薦得還挺準(zhǔn)”這在論文里是不太夠的。我建議至少做三個(gè)維度。準(zhǔn)確率Precision的含義是推薦列表里用戶實(shí)際喜歡評(píng)分≥4的比例。比如推薦了10道菜用戶點(diǎn)了其中4道準(zhǔn)確率就是40%。計(jì)算方法是在測(cè)試集里把用戶評(píng)分行為隨機(jī)劃分成80%訓(xùn)練集和20%測(cè)試集用訓(xùn)練集學(xué)到的模型預(yù)測(cè)測(cè)試集里的評(píng)分行為。召回率Recall的含義是用戶喜歡的菜有多少被推薦出來了。如果用戶一共喜歡10道菜推薦列表覆蓋了其中4道召回率就是40%。覆蓋率Coverage的含義是推薦系統(tǒng)能推薦出的菜品占全部菜品的比例。覆蓋率太低說明系統(tǒng)總在推薦熱門菜長尾菜品永遠(yuǎn)沒曝光機(jī)會(huì)這在真實(shí)場(chǎng)景里是個(gè)問題。覆蓋率計(jì)算公式是推薦出去的不同菜品數(shù) / 菜品總數(shù)。三個(gè)指標(biāo)不能只看單一值。我在實(shí)驗(yàn)中發(fā)現(xiàn)UserCF在小數(shù)據(jù)集上準(zhǔn)確率往往比ItemCF高一點(diǎn)點(diǎn)但覆蓋率明顯偏低因?yàn)樗偘延脩粢颉按蠹叶紣鄢缘臒衢T菜”。ItemCF在覆蓋率上表現(xiàn)好得多這也是我最終系統(tǒng)把ItemCF作為主力、UserCF做補(bǔ)充的另一個(gè)原因。6.2 冷啟動(dòng)與稀疏性處理方案冷啟動(dòng)是推薦系統(tǒng)里繞不開的經(jīng)典問題也是答辯老師最喜歡追問的點(diǎn)。我的系統(tǒng)里用了一套分場(chǎng)景策略。新用戶冷啟動(dòng)分三步走注冊(cè)時(shí)收集口味偏好標(biāo)簽沒有評(píng)分時(shí)按口味標(biāo)簽推薦對(duì)應(yīng)分類的熱門菜品有少量評(píng)分后進(jìn)入混合推薦模式。新菜品冷啟動(dòng)的處理方式不同菜品剛上線沒有評(píng)分無法參與協(xié)同過濾計(jì)算所以需要在展示上給個(gè)“新品嘗鮮”入口讓新菜先獲得曝光和被評(píng)分的機(jī)會(huì)等積累到一定評(píng)分量再進(jìn)入推薦候選池。用戶冷啟動(dòng)的側(cè)重點(diǎn)不同如果只有個(gè)別用戶評(píng)分稀疏用“全局熱門榜”兜底推薦如果整體數(shù)據(jù)稀疏就增加評(píng)分引導(dǎo)交互比如推薦列表下方提示“點(diǎn)個(gè)評(píng)分推薦更懂你”。這些策略在實(shí)現(xiàn)上并不復(fù)雜但寫進(jìn)論文里很有價(jià)值體現(xiàn)的是你對(duì)推薦系統(tǒng)工程問題的理解深度而不僅僅是“我調(diào)了一個(gè)庫”。6.3 常見錯(cuò)誤和坑花式Debug實(shí)錄這個(gè)部分我整理了幾條我實(shí)際踩過的坑每一個(gè)都能節(jié)省你半天以上的調(diào)試時(shí)間。第一個(gè)坑是np.corrcoef返回全NaN。引起這個(gè)問題的原因是共同評(píng)分項(xiàng)方差為0比如兩個(gè)用戶對(duì)同一批菜全部打了5分。解決辦法是在用之前做NaN檢查或者手動(dòng)實(shí)現(xiàn)皮爾遜公式推薦后者自己寫公式還能加深理解。第二個(gè)坑是pandas的pivot_table用了fillna(0)之后評(píng)分矩陣變得極度稀疏。0在數(shù)學(xué)上等于“沒有評(píng)分”但在余弦相似度的計(jì)算里0直接參與運(yùn)算兩個(gè)“沒評(píng)過分”的菜品可能因此被判定為“不相似”。這個(gè)問題沒那么容易察覺因?yàn)槌绦虿粓?bào)錯(cuò)只是結(jié)果詭異。解決辦法是計(jì)算相似度的時(shí)候只取共同評(píng)分的維度也就是我前面代碼里common_mask的處理方式。第三個(gè)坑是評(píng)分表沒有唯一索引導(dǎo)致同一個(gè)用戶對(duì)同一道菜重復(fù)評(píng)分。從用戶體驗(yàn)上看用戶可能不小心點(diǎn)了兩次提交系統(tǒng)就記錄了兩次評(píng)分推薦結(jié)果會(huì)出現(xiàn)一種不合理波動(dòng)。解決辦法是建表時(shí)給(user_id, dish_id)加聯(lián)合唯一索引再用INSERT ... ON DUPLICATE KEY UPDATE做覆蓋式更新。第四個(gè)坑是推薦接口返回太慢。如果你每次請(qǐng)求都現(xiàn)場(chǎng)算相似度矩陣20個(gè)用戶、50道菜的數(shù)據(jù)規(guī)??赡芨杏X不出來但數(shù)據(jù)量上千后就會(huì)明顯卡頓。我建議把相似度矩陣的構(gòu)建放在一個(gè)獨(dú)立模塊里程序啟動(dòng)時(shí)預(yù)計(jì)算并緩存到內(nèi)存或數(shù)據(jù)庫推薦接口只做查表和Top-N排序?qū)崪y(cè)響應(yīng)時(shí)間能從1秒多降到50毫秒以內(nèi)。6.4 實(shí)操總結(jié)一步一步跑通全項(xiàng)目的順序我最后整理一個(gè)實(shí)操順序清單適合完全沒思路的同學(xué)按步驟執(zhí)行。第一步安裝Python環(huán)境并配置好pycharm或vscode裝好pandas、numpy、flask、pymysql等庫。第二步準(zhǔn)備數(shù)據(jù)優(yōu)先用公開數(shù)據(jù)集或自定義數(shù)據(jù)構(gòu)建rating.csv、dish.csv、user.csv三個(gè)文件。第三步單獨(dú)寫一個(gè)算法測(cè)試腳本用pandas讀數(shù)據(jù)、構(gòu)建評(píng)分矩陣、實(shí)現(xiàn)UserCF和ItemCF、輸出推薦結(jié)果并打印評(píng)估指標(biāo)這一步的重點(diǎn)是確認(rèn)算法邏輯正確。第四步搭建Flask項(xiàng)目結(jié)構(gòu)創(chuàng)建藍(lán)圖、模板目錄、靜態(tài)資源目錄。第五步設(shè)計(jì)數(shù)據(jù)庫表結(jié)構(gòu)并建表寫數(shù)據(jù)庫連接模塊。第六步實(shí)現(xiàn)注冊(cè)登錄、菜品瀏覽、評(píng)分提交等基礎(chǔ)功能。第七步把推薦引擎嵌入到推薦接口中做冷啟動(dòng)和混合推薦邏輯。第八步寫測(cè)試用例準(zhǔn)備論文里的截圖和測(cè)試數(shù)據(jù)。第九步按照論文章節(jié)結(jié)構(gòu)填充內(nèi)容PPT提煉核心邏輯。在做完這九步之后你會(huì)發(fā)現(xiàn)自己對(duì)推薦系統(tǒng)的理解已經(jīng)不是停留在“調(diào)了一個(gè)庫”的水平而是真正能講清楚“推薦結(jié)果為什么是這樣”的人。這種從原理到實(shí)現(xiàn)的閉環(huán)才是這門課真正帶給你的東西。最后分享一個(gè)我在實(shí)際測(cè)試中發(fā)現(xiàn)的規(guī)律協(xié)同過濾最怕的不是數(shù)據(jù)量少而是行為數(shù)據(jù)不真實(shí)。如果造數(shù)據(jù)時(shí)所有人都只打高分、不打低分推薦結(jié)果幾乎沒有區(qū)分度。所以不管是自己造數(shù)據(jù)還是找公開數(shù)據(jù)一定確保評(píng)分有高有低、用戶口味有差異這樣算法效果才能真實(shí)反映出來。數(shù)據(jù)質(zhì)量決定了推薦質(zhì)量這個(gè)道理在真實(shí)業(yè)務(wù)里一樣成立。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
精品色色| 日韩在线观看亚洲| 狠狠穞A片一區二區三區| 色综合久久中文| 色色婷婷五月| 夜夜干夜夜操| 久久五月天合网| 91re色综合视频| 人妻啪啪啪| 婷婷精品在线| 性爱激情久久| 中文激情网| 久久这里只有国产视频| 亚洲天堂99| 亚洲V国产V欧美V久久久久久| 久热A| 久久免费丁香| 成人免费超碰| 农村熟妇高潮精品A片| 日本人人xxx| 午夜色婷婷| 乱乱av| 5五月综合网亚洲| 欧美va精品va老师va| 国产真实乱对白精彩| 这里只有精品视频免费在线观看| 激情五月丁香色婷婷| 九九九九九九九九九九九九九国产精品 | 丰满少妇猛烈A片免费看观看| 噜噜五月天综合| 99激情网| 97色片| 久久激丁香| 中文字幕AV在线播放| 97深爱伊人综合| 9视频1在线| 日本人妻伦在线中文字幕| 婷婷午夜天| 视色网在线播放| 婷婷五月中文字幕| 色原狠狠综合| 婷婷丁香五月天色色| 九九99久久| 色激情五月| 天天日,天天射,天天插| 婷婷色综合| 丁香五月天影院| 欧美99| 激情五月婷婷丁香综合网| 五月婷婷熟女| 色色色999| 怡红院91a√| 99热精品在线观看| 五月天激情视频| 丁香狠狠色婷婷| 五月婷婷综合潮喷| 日日夜夜狠狠干| 五五月丁香花激情综合网| 丁香婷婷五月综合影院| 欧美日韩成人免费在线| 秋霞A V毛片| 亚洲 成人 电影av在线观看| 综合久久六月| 射琪琪| www超碰com| 免费看欧美成人A片无码 | 亚洲综合五月天婷婷| 色婷婷丁香五月色综合网| 色黑鬼导航| 丁香丁婷五月激情| 激情五月综亚网| 丁香五月激情宗合网| 在线观看免费视频| 六月丁香五月婷婷| 久草性爱| 丁香婷婷五月| 婷婷啪啪| 色婷婷很很丝袜| 欧类av怡春院| 成人免费超碰| a色婷婷| 九九Y精品热播| 丁香五月激情久久麻豆| 日韩 mm 不卡| 婷婷趴趴| 丁香六月色香蕉视频| www.婷婷五月天,com| 99色中文| 色无码| 六月丁香五月婷婷| 91色色五月天| 97人人操com| 丁香婷婷婷婷十二月在线观看视频| 五月婷婷久久大片| 五月婷婷七月丁香| 亚洲人妻AV| 婷婷六月激情小说网| 五月婷婷六月丁香| anquye五月| 亚洲经典小视频| 日婷婷久久开心| 婷婷五月天狠狠色| 婷婷五月天堂| 九九视频在线观看| 久9精品视频在线| 91seAV| 日韩无码性爱| 日韩成人免费电影| 婷婷五月丁香色情| 99亚洲精品| 91viP在线看| 99热这里只有精品1| 大香蕉手机视频| 日韩丁香涩| 777久久久| 99福利导航| 国产色色在线| 色婷婷成人五月| 色天五月天在线观看视频| 97AV在线视频| 久久婷婷五月综合色播| www,超碰| 爱99干99| 午夜免费试看| 丁香五月欧美激情| 亚洲最大视频| 超碰激情五月| 天天爱天天日| 婷婷 伊人 久久| 丁香六月婷婷色XXXXX| 色婷婷丁香五月| 色综合久久无码| 大香蕉久久久久| 激情婷婷内射| 人妻激情综合| 无码字幕中文| 丁香婷婷综合精品六月初| 五月天激情综合10p| www夜夜操| 思思热在线播放| 无码91中文字幕| 热久69| 欧美噜噜免费观看| 婷久久| 日韩av变天就操逼不卡区| 黄色91在线观看| 丁香五月激情宗合网| 五月丁香色婷婷综合| 香蕉综合网| 五月激情综合深爱| 免费观看的av| 婷婷性爱网| 99色看| 人妻AV在线观看| 亚洲妇女熟BBW| 99热99极品观看| 二人电影免费版在线观看| 五月色天情| 99色在线| 五月丁香婷婷综合久久| 99精在线| 九月激情婷婷丁香| 草草视频91| 色色色综合视频| 婷婷五月丁香五月综合网| 天天爽天天爽| 大香蕉五月天婷婷丁香91| 2w在线视频| 久久婷婷精品| 丁香五月激情啪| 国产色五月| 欧美人妻一区二区| 岛国资源站| 国产激情视频在线观看| 日本婷久久| 丁香五月婷婷激情蜜桃| 香蕉久操| 色青青视频| 亚洲综合激情五月久久| 五月丁香狠狠爱| 日本女人久久| 六月丁香天堂| 婷婷五月天视频亚洲| 任你躁XXXXX麻豆精品| 99ri精品| 99熟女| WWW·色色色·COM| 天天噜| 91美女啪啪| 99热热九九| h亚洲| 国产婷婷婷| 五月婷婷新网站| 成人在线不卡| 91精品婷婷国产综合久久| 狠狠干五月天| 日本一级一片免费视频| 欧美综合五月丁香六月婷| 色五月激情综合网站| 国产精品噜噜在线视频| 亚洲V国产V欧美V久久久久久| 久热大香蕉| 久久婷婷网| 婷婷中文字幕网| 99视频精品全部观看10| 97人人搞| 六月婷婷激情| 五月婷婷激情综合| 丁香色情五月天| 99热精品在线观看| 天天做天天双| 婷婷丁香无码专区| 久久这里只精品| 9 大屁股在线视频精品| www.五月婷婷.com| 久热久色| 色涩视频久久| 十一月婷婷激情四射| 六月婷婷操逼| 久久婷婷网站| 婷婷欧美色| 五月婷在线| 亚洲五月六丁香激情| www.五月天| 九九婷婷五月天影视| 久久婷婷五月天激情新地址| 五月婷婷69| 激情五月天第四色| 色五月激情婷婷| AV中文在线| 97精品综合久久| 婷婷五月天少妇| 五月婷婷啪啪啪啪| 久久九精品| 综合色情网| 六月激情网| 婷婷操逼网| 亚洲综合视频八| 99精品大片| 99操不停| 九九色影视| 国产乱子轮XXX农村| 夜夜操夜夜姧| Caop在线| 99噜噜噜在线播放| 五月丁香六月激情欧美综合| 色~性~乱~伦~噜| 99精品在线观看| 日韩色情亚洲五月天婷婷| 亚州激情九月| 狠狠干综合| 天天五月情| 五月婷婷婷| 日本综合色图| 精品成人a v无码内射| 欧美日比视频| 色色999三级片| 9有码中文| 99成人精品六| 操逼视频一区| 操一区| 亚洲天天综合| 99热这里只有精品10| 99视频日韩| 亚州操操| 99久久久国产精品免费蜜乳tv| www.99热这里精品| 午夜不卡久久精品无码免费| 久久婷婷丁香| 大陆肏屄视频| 五月丁香怕怕综合| 亚洲色图五月丁香| 九色视频九色九色91jiuseshipin| 欧美狠狠色| 激情色色| 99色婷婷| 日本一级特黄大片AAAAA级| 米奇激情婷婷| 亭亭五月丁香综合欧美| 91超级碰在线| 丁香99| 97色干| 五月丁香基地| 夜夜做天天爽| 狠狠爱综合| 五月刺激丁香月综合| 99热天堂| 五月婷婷在线视频观看| 综合xx网| 国产VA播放| 熟美女麻豆| 无码AV久久久久久久久| 五月激情啪啪| 激情图片五月天| 色播五月| 五月婷婷丁香网| 五月丁香六月婷婷不卡免费无码 | 2025最新亚洲激情在线| 99热色无码| 激情五月婷婷视频一区二区三区| 国产jd1024基地手机看国产| 色噜噜狠狠色综无码久久合欧美| 九九精品免费| 久久99网站| 天天插综合| 以及AA大片看看| www.激情五月| 久久精彩免费视频| 99操视频| 五月天色色网站| 综合久久99| 狠狠干五码| 另类图片五月天婷婷| 精品久久婷婷| 久碰久| 99人妻碰碰久久久禁片| 丁香久久| 操操人人| 99re这里只有| http://www.sd-xiangsu.com/| 五月激情综合网| 98永久精品| 狠狠综合色网| 激情五月综合久久| 亚洲五月激情| 97资源欧美日韩大香蕉超碰一区| 91丨九色丨熟女|老版| 天天透天天干| 亚洲爱婷婷| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 东京热人妻一区二区三区在线| 亚洲国产精品二二三三区| 色婷婷在线视频| 伊人婷婷五月天| 五月婷婷在线免费观看| 久99在线视频| www.99视频| 色综合色| 色色欧美色色色| 夜夜嗨一区二区三区直播内容| 777精品久无码人妻蜜桃| 成人av免费观看| 婷婷五月天成人网| 超碰国产一区| 日日噜噜夜夜狠狠久久丁香六月| 欧美色五月| 丁香五月天资源网| 婷婷五月电影院| 久久免片| 丁香五月天AV在线 | 五月天婷婷色播综合在线| 国产乱子轮XXX农村| 国产XXXX搡XXXXX搡麻豆| 成人AV在线电影| 五月丁香啪啪| 五月婷婷激情在线| 亚洲人妻Av| 狠狠色色综合| 小视频aaa久久久| 丁香六月激情综合网| 天插天啪天啪天啪| 97色色网| 少妇性BBB搡BBB爽爽爽视頻| 激情五月天婷婷丁香| 秋霞AV美国| 99精品热| 五月丁香六月欧美| 久久人操| 国产午夜伦鲁鲁| 9999热免费视频视频| 综合色影| www。五月天。com| 99无码视频| 丁香五月播播| 一片AV片免费播放| 色婷婷五月天亚洲| 成人丁香五月| 9999久久久久| 狠狠色婷| 思恩热国产视频右线观看| 激情5月婷婷狠狠干| 婷婷五月天成人动漫| 丁香婷婷十月| 激情五月天色播| 色亭亭九月| 色色色婷婷五月| 青青草日本亚洲| 五月丁香啪| 国产真实乱对白精彩| 26uuu偷拍亚洲欧洲综合| 欧美五月婷婷| 五月天激情亚洲| 深爱开心激情| 小色小蛇伊人婷婷色香五月| 六月丁香五月激情婷婷| 天天插综合| 激情五月婷婷丁香综合网| 亚洲色色色色色色色色色| 操操国产| 色婷婷先锋| 日韩人妻在线观看| 久久XX| 激情五月图| 99只有精品| 婷婷五日b| 99精品国产在热久久| 激情黄色五月天| 婷婷丁香五月社区亚洲| 婷婷成人视频| 毛片网站谁有| 天天色综网| 亚洲欧美另类在线23p| 久久亭亭电影| 色欲婷婷五月天| 亚洲婷婷五月天在线激情综合网| 欧美经典片免费观看大全| 五月婷婷熟女| 亚洲AV无码一区二| 激情六月婷婷| 五月婷婷啪| 婷婷五月色色| 成人国产欧美大片一区| 婷婷五月天小说| 涩五月婷婷| 九九色逼| 成人丁香五月天Av| 五月婷婷六月丁香激情综合网| 国产偷人爽久久久久久老妇APP | 五月婷婷免费在线| www婷婷色| 狠狠人人婷婷| 日日鲁鲁夜夜爽爽| 日韩高清成人| 久久久全国免费视频| 狠狠高潮精品亚洲1| 超碰av在线| 九九色网专区| 亚洲操操操| 婷婷香五月| 性爱网五月天| 狠狠爱婷婷五月天| 五月婷婷无码| 久久久久亚洲AV无码网影音先锋| 五月婷婷激情色情网| 久久99日本精品视频免费观看| 91丨九色丨高潮丰满日本| 月婷婷亚洲| 91丨九色熟女丨首页| 五月婷婷色| 激情五月五月婷婷| 亚洲综合婷婷五月天| 99超级碰碰| 五月婷视频| 亚洲另类在线观看| 玖玖五月丁香| 丁香六月婷婷激情| 开心五月婷婷激情网| 97久人人| 97久久久免费福利网址| 亚洲无码影音| 风流少妇A片一区二区蜜桃| 五月丁香婷婷综合视频| 丁香五月天天高清在线| 《战争与艾拉》完整版| 91久久1118| 日本成人内射| 色九四色| 九九色网专区| 国产在线网| 五月丁香五月综合欧美| 超碰在线免费| 色域五月婷婷丁香| 亚洲人妻电影| 五月天亚洲色| 久久婷婷综合五月趴| 丁香婷婷偷拍| 婷婷五月天色综合翘| www.婷婷五月天,com| 97se视频在线| 97亚洲婷婷| 欧美日本99| 91九九热| 亚洲中文AV网站| 九九婷婷激情综合网| 激情婷婷五月天| 久99热| 亚洲精品国产成人AV在线| 五月婷婷激情日本| 婷婷五月天av| 五月天激情亚洲| 亚洲av网站| 被强行糟蹋的女人A片| 久久婷婷五月综合伊人| 五月天天堂久久| 嫩BBB搡BBBB榛BBBB| 色色色色色色色色综合网| 99热在线中文字幕| 久久五月热| 婷婷五月色| 少妇人妻综合色6699| 九月丁香婷婷综合| 欧美性生交XXXXX无码小说| 五月综合婷婷开心网| 激情又色又爽又黄的A片| 五月丁香龟婷婷| 99热老网站| 97综合视频在线| 四色永久成人网站| 五月天婷婷在线AN| 另类国产综合| 五月色在线| 色婷大香蕉| 97综合在线| 日韩三级高清无码| www·五月天| 激情丁香六月| 丁香五月婷婷高清| 久久se 综合网| 超碰人人干| 丁香六月无码播放| 狠狠狠人妻| 超碰二区| 亚洲操B视频| 国产毛片精品一区二区色欲黄A片| 色域五月婷婷丁香| 开心婷婷丁香五月| 99日韩网站| 热热久久精品视频| 97福利视频| 人人搡人人| 国产精品电| 99超级碰免费视频| 激情五月婷婷| 久久东京热婷婷五月| 五月婷婷六月丁香在线视频| 另类小说婷婷色| 五月激情丁香六月狠狠干| 日本久久人| 亚洲激情Av| 婷婷五月丁香青青草在线| 五月大香蕉| 丁香五月播播| 99综合网| 人人爱天天摸摸天天爱| 五月激情丁香| 亚洲激情在线| 情色五月天网站| 伊人五月久久| 日本综合久久| 91av视频在线观看最新网址| 色综合性视频| 五月婷婷影院| 色综合九九| 香蕉AV777XXX色综合一区| 操碰97| 日韩成人影片在线观看| 一个色的综合| 国产成人+综合亚洲+天堂| 五月天色综合服务平台| 九月丁香| 五月天婷综合| 99青青草| 大伊香蕉精品视频在线| 色色是色N一| 美国十月色婷婷在线观看| 欧美精品中文字幕亚洲专区| AV伊人青草丁香六月| 五月婷婷激情综合| 国产偷人爽久久久久久老妇APP| 欧美精品久| 无码人妻一区二区三区免费九色| 亚洲亚洲人成综合网络| 五月天婷亚洲天综合网综合| 亚洲啪啪啪啪| 久久精品91视频| 天天爽综合网| 超碰2021| 婷婷五月天欧美图片在线播放电驴| 九九热最新视频| 国产激情av| 99re8这里只有精品99re8热视频| 亚洲AV成人无码精品| 久久丁香五月婷婷激情综合网| 91激情五月开心| 免费看片操逼| 久久丁香五月天| 啪啪视频99| 五月婷婷免费在线观看| 伊人丁香五月天丁香在线婷| 99亚洲大片精品永久在线观看| 狠狠干,狠狠操| 婷婷她六月天| 五月丁香激情综合| 婷婷中文字幕版| 日本精品人妻无码77777| 婷婷五月蜜桃成人桃色丁香| www久久久| mmm1717.6dbm人人爱人人操| 成人美女网| 开心五月婷婷在线视频免费观看| 97干干干丁香| 婷婷色五月色| 99在线视频免费| 欧美熟女99| 婷婷啪啪| 熟女人妻一区二区三区免费看| 五月综合激情图片 | site:minyis.com| 精品一二三区久久AAA片| 婷婷五月开心中文字幕色| 2018国产大陆天天弄| 操日本人妻视频| 久色网五月| 亚洲第一第二网站| 99热这是里只有精品| 久久99热这里只有精品| 丁香六月婷婷综情欧美| 五月开心播播网| 日日狠狠久久偷偷四色综合免费| 青青草大香| 丰满熟女人妻一区二区三| 99久久久精品| 亚洲操b| 99ri久久| 国产精产国品一二三在观看| 丁香婷婷噜噜| 噜噜狠狠| 99视频日韩| 色综合综合色| 亚洲一区二区无码蜜乳av| 超碰97色| 超碰免费人妻| 丁香婷婷啪啪啪| 亚洲熟女乱色综合亚洲网站| 人人草人人舔| 天天日,天天干,天天操| 丁香五月婷婷激情小说| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 韩国真做片在线观看| AV色婷婷| 五月丁激情| 99热精品在线播放| 久久99久久久| 婷婷五月天成人网站| 99热精品在线播放| 综合一区二区三区| 拳交大逼| 丁香五月花影院| wuyuedingxiang99| 日本久久精品| 日韩欧美成人片| 99热无码| 欧美性爱丁香五月| 五月丁香成人版| 欧美日韩91| 午夜一区| 91/九色黑人| 色五月综合网| 五月婷婷激情中文字幕| 天天射综合网夜夜操| 婷婷爱在线观看| 婷婷丁香五月天影院| 五月天婷婷狂暴白浆| 91色婷婷综合久久中文字幕二区| 国产精品色婷婷久久久精品| 99r这里| 人人色人人摸人人看| 九九精品免费视频99| 99综合| 玖玖爱综合网| 人人操av| 强伦轩人妻一区二区电影| 激情图片婷婷| 亚洲丁香婷婷五月天综合色| 99热这里只有免费精品| 五月婷中文娱乐综合| 无码 色| 婷婷五月天性爱视频| 色日本网| 涩 五月 婷婷 狠狠| 综合激情视频| 熟女网站久久| 日本五月婷| 亭亭五月丁香综合欧美| 五月婷婷av| AV大香蕉| 国产精产国品一二三在观看 | 婷婷色色欧美| 91丨九色丨老农村| 亚洲不卡| 久久五月天激情美女| 色婷婷小说网| 另类图片 五月激情| 狠狠五月婷婷| 久久久噜噜噜久久人妻| 97极品在线| 欧美色色色色色色色| 九九RE视频在线精品| 热久精品| 色五月婷激情| 4399在线观看免费高清黄色视频| 色综合九九| 丁香五月婷婷性爱| 久久受www免费人成| 狠狠狠色激情综合适合| 天天搡日日搡aaaaⅩ| 人人摸人人干| 色婷婷六月天在线| 久9热视频| 狠狠操狠狠操AV| 啪啪干伊人婷婷| 久草视频大香蕉99| 狠狠操天天干| 色婷婷五月六月丁香综合视频| 中文字幕网伦射乱中文| 91热久| 日本色色影院| 乱码操操| 九九草热在线观看| 夜夜谢天天干| 五月天色区| 91妻人人爽人人看片| 先锋男人91资源| 大香蕉婷婷色| 五月天堂婷婷| 九九热精品| www,天天干| 九九综合九| 在线99色| 亚洲中文无码成人| 天天爽天天摸人妻综合网| 色婷婷中文在线| 96精品成人无码A片观看金桔| 天天综合天天玩夜夜玩天天玩夜夜玩| 99热只有精品在线观看| 激情六月婷婷| 欧美内射AAAAAAXXXXX| 国内在线99视频| 、激情六月天| 日韩五月丁香| 天天插天天射| 激情五月综合第一页| 六月五月丁香五月欧美| 天天插,天天射| 中文AV网站| 欧美日韩国产成人在线| 亚洲区,视频区,视频区免费| 五月丁香六月婷婷的女人| www.久久久.com| 另类丁香五月天区图| 青青草原亚洲天堂| 天天搞天天色综合| 五月婷丁香| 久久色五月| 开心五月深爱五月丁香五月激情五月 | 思思精品热在线| 久久色五月天| 五月婷婷亚洲| 色97啪啪| 五月天激情美女久久| www.操.com| 噜噜噜久久| 日日日天天干| 婷婷五月天伊人网在线观看视频| 亚洲思思热久| 丁香五月婷婷久久久| 日日.c| 五月天色视频| 日本婷婷丁香五月| 丁香综合婷婷开心激情网| 另类视屏| 精品视频网| 成人五月丁香花| www.五月天| 久久免片| 日本色天堂| 66成人网| 99热这里只有精品66| 嫩BBB槡BBBB搡BBBB视频| 激情综合自拍五月婷婷色五月| 久久天堂网| 五月婷婷九九热| 超碰在线个人观看| 婷婷丁香综合网| 亚洲精品久久久无码| 人人干av| 九九99精品视频在线观看| 日韩综合久| 狠狠草在线观看| 丁香五月六月婷婷殴美综合| 婷婷五月AV| hd五月婷婷在线| 五月天婷婷自拍图片在线观看| 人人爱操| 99热在线观看免费中文| 综合五月婷婷| 婷婷五月色| 五月婷婷色| 久久九九综合| 日韩色色小视频| 精品九九在线观看视频| 婷婷五月激情四月综合| 另类色视频| 99热久久这里只有精品| 操碰97| 久热99| 九九AV在线| 成人在线精品| 色五月婷婷久久| 97人操人免费视频| 日本啪啪网| 99日本精品视频热| 亚洲九区| 婷丁香久综合| 久久精品爱爱| 九九sese| 第六色在线| 大学生高潮无套内谢视频| 99日本精品视频热| 色久影院| 色99网站| 欧美内射AAAAAAXXXXX| 欧美顶级少妇做爰HD | 日韩AAAAA| 婷婷开心五月| 婷婷六月情| 直接看的AV| 丁香五月天在线观看| 亚洲激情97五月天| 亚洲精品五月| XX色综合| 91精品丝袜久久久久久| 六月色婷婷| 色99久草在线| 26.uuu丁香五月婷婷| 激情五月天色色| 无码G高清天| 99精品福利视频| 男人的天堂五月丁香| 色9999日韩国产| 国产av天天插天天操天天爽| 精品亚洲日韩99欧美片| 91偷拍视频| 色99视| 五月婷婷综合在线视频小说| 中文字幕综合网| 色情综合网| 99精品丰满| 狠爱婷色| 大香蕉久久久久| 桃色激情婷婷伊人网| 九九精品网| 爱射综合| 国精产品一区一区三区免费视频 | 亚洲激情无码久久| 99精品免费欧美小视频| 99热最新| 伊人婷婷99热精品| 91人人操人人| 五月天婷婷导航| 亚洲啪啪视频| a性生活久久无| 综合AV在线| www国产亚洲色婷婷com| 9久国产精品| 琪琪色五月婷婷老师| 久久久久8888| 婷婷六月中文字幕| 欧美日韩123| 综合狠久久| 日本欧美在线| 五月丁香六月婷婷亚洲综合| 超碰九色| wWW九九在线播放| 九九久久精品| 五月丁香婷婷激情久久| 国产婷婷五月天| 五月天社区婷婷| 久热九九| 激情综合五月丁香六月婷婷| 久久99精品久久久久久噜噜| 激情五月色综合| 色婷婷在线综合色播网| 久99久在线| 蜜乳人妻一区二区三区| 人操综合| 国产精产国品一二三在观看 | VA日本视频| 香蕉久久六月| 九九精品re免费视频| 精品亚洲国产成AV人片传媒| 99啪99| 色99网站| 日日天天操| 五月婷婷在线短视频| 九九自拍网| 麻豆AV一区二区三区| 婷婷色在线观看| WWW.久久99| 日本三级日本黄色| 五月日韩中文字幕| 午夜少妇在线观看视频| 六月色色| 91精品综合久久久久久五月丁香| 婷婷五月天堂| 99精品视频网| www,天天干| 99精品在线观看| 五月婷中文字幕| yellow视频在线观看91| 第四色五月婷婷| 色婷婷综合影院| www.五月天婷婷| 婷婷激情图片| 日韩精品一区二区亚洲AV观看| 99热8| 久婷久婷| 亚洲精品国产成人AV在线| 99久.| 天天狠狠夜夜狠狠2023| 天天干天天插| 日本啪啪网| 97九色视频| 色综合久久天天综合网| 综合色五月| 婷婷综合| 五月亭亭直播| 五月天社区| 五月天激情国产综合婷婷| 伊人色综合网| 九九AV在线| 色五月播五月| 免费看欧美成人A片无码| 色和综合网| 久久五月情| 日韩人妻无码精品| 激情5月舔| 久久九九99字幕| 蜜乳中文字| 五月婷婷深深爱| 五月花激情| JAPANRCEP老熟妇乱子伦视频| 丁香五月大香蕉在线99| 亚洲成人无码免费| 91无码视频| 亚洲 精品 综合 精品| 丁香五月综合在线播放 | 96精品国产综合久久久久久| 色综合中文色综合网| 欧美色图天堂网| 啪啪五月天啪啪| 99热6精品| 五月婷色色| 色伊人91在线视频| 婷婷中文字幕网| 亚洲综合字幕色色| 久久精彩视频99| 五月天激情婷婷| 五月天色色网站| www.九九婷婷| 异能之下短剧免费观看全集| 一二三区视频韩国| 干一干xxxx| JAPANRCEP老熟妇乱子伦视频 | 久久伊人大香蕉| 这里只有精品96| 先锋资源91| 乱女乱妇熟女熟妇综合网站| 亚洲亚洲永久无码777777| 99在线播放视频| 国产精品男人AV不卡| 性色综合网| 综合色影院| 狠狠人人| yellow视频在线观看91| 91妻人人爽人人看片| 日韩人妻无码精品| 色综合日日| 9色在线| 日本97在线看片| 99热这里在线精品| 婷婷五月天开心网| 被男人添B超爽视频| 99玖玖在线视频| 99在线国| 97久久视频| 久久婷婷的综合色丁香五月| 人妻内射麻豆视频| 狠狠色丁香婷婷久久综合| 99热福利| 开心五月激情五月丁香五月婷婷| 91在线日| 91久久免费| sewuyuejiqingwang| 丁香五月先锋| 色吊丝中文字幕| 天天撸夜夜爽| 五月开心网| AV大香蕉| 影院久久久| 国内外色色色色色成人视频| 国产精品五月天婷婷| 久久久久久久久久8888| 亚洲九九99精品视频在线播放| 99色网站| 丁香综合网| 操碰91| 久久五月天激情| 99色色网| 婷婷丁香五月久久| 色综合视频| 2025神马午夜福利| 天天色综网| 婷婷五月花丁香| wwW天天干| 婷婷五月天亚洲综合| 日韩成人不卡| 婷婷金品综合视频| 日韩色五月| 天堂婷婷五月色| 99在线视频播放| 国产特黄色精品一区二区三区精品无广告| 日本九九九九| 五月丁香六月婷| 婷婷五月天免费| 激情综合五月激情17| 热99玖玖99玖玖99九九| 九九热re99re6在线精品| 第一区久久网站| 亚洲婷婷五月天在线激情综合网| 美国不卡视频| 色吧婷婷五月亚洲| 九九热视频在线观看| 狠狠99| 精品A√| 99久久精品网| 99热这只有| 丝袜大香蕉| 亚洲久久日| 9一精品视频观看| 爱iii做iiii日| 中国丰满熟女A片免费观| 丁香五月人妻| 色婷婷久久综合久色综| 狠色狠色综合久久| 人妻五月天激情开心网| AV堂狠狠干| 久久婷婷综合基地| 99超碰在线观看| www.爱婷婷.com| www,setingting| 香蕉97碰碰碰欧美| 日日夜夜干| 黄网在线播放| 亚洲精品婷婷| 国产激情久久久| 超碰在线视屏| 久热黄色| 丁香成人视频| 五月婷婷激情四月| 99爱免费在线观看| 色婷婷丁香网| 亚洲日韩国产黑丝黑丝AVAV一区二区三区 | 深爱激情网五月天| 热99热9| 麻豆123区| 五月亭亭激情综合| 五月婷丁香花| 婷婷综合在线| 2015WWW永久免费观看播放| av一区免费看| 中文字幕av网站| 99人人干人人操| Y11111111111少妇电影院| 99ri6在线视频| 丁香五月伊人| av在线不卡播放| 国产色99| 99久久玖玖| 九九热视频99| 五月婷婷日| 任你擦免费视频| 中美月韩免费A片| 先锋五月婷婷丁香草草| 超碰免费在线| 婷婷五月色花丁香社区| 久久色情| 亚洲综合网 665566| 久久婷色| 性爱网久久| 国产六月婷婷| 丁香五月天激情AV| 在线可以看的av网址| 激情欧美五月丁香| 丁香五月婷婷五月天| 婷婷五月综激情| 99国产在线| 国产精品久久久久久久久久免费| 亚洲无码99| 亚洲字幕AV一区二区三区四区| av婷婷六月丁香社区在线观看| 五月婷婷香| 色五月AV| 丁香五月综合婷婷| 久久草大香蕉| 婷婷狠狠综合网入口| 久久午夜丁香| 大香蕉婷婷丁香天堂AV| www.97碰碰com| 26uuu欧美日韩| 新五月天婷婷激情电影| 吉澤明步Av一區二區| 日韩在线视频网站| 99热在线观看| 日本色啪| 性天堂久久| 人人干天天舔| 婷婷五月天男人影院色色网| 欧美成人va| 99久久网站| 亚洲日本激情| 91狠狠综合久久| 2015WWW永久免费观看播放| 成人做爰黄A片免费看直播室男男| 九久9精品| 欧美色五月| 日本颜色视频人人爱| 久热人妻| 婷婷碰碰| 欧美性生交A片免费看| 天天骑天天操| 九九色影院| 婷婷六月亚洲综合| 久久色这里只有精品| 91啪级电影| 五月天婷婷色五月天| 超碰人人操在线| 无码髙清| 久热伊人9| 日本9区视频| 国产九月婷婷| 久久人人添人人爽添人人片αV | 激情涩涩网| 亚洲网站在线鸭子av| 色欲av伊人久久大香线蕉影院| 婷婷久久内射| 五月激情婷婷偷拍| 五月丁香综合色婷婷| 午夜天堂一区人妻| 丰满少妇猛烈A片免费看观看 | 天天色天天色天天色天天色天天色天天色| 99自拍网| 五月婷婷导航| 激情 婷婷| 婷婷终合色图| 五月天婷婷综合色| 丁香婷婷五月色综合| 人五月天婷婷喷水| 色天使色综合| 99热日本精品| 五月天激情图| 亚洲色域网| 日本在线免费中文com.| 91碰碰碰| 99这里有精品| 色婷婷在线视频观看| 南京搡BBBB搡BBBB| 激情五月天 婷婷| 国产操B视频| 丁香六月婷婷综合缴| 男女啪啪视频久 9| 久久五月网| 欧美精品99久久久| 色婷婷丁香五月天| 亚洲精品电影| 99久久婷婷五月综合| 爱草人视频| 精品操逼一区二区| 五月网网站| 七月婷婷色香综合网| 狠色狠色狠色狠色狠色网| 高清无码入口| 欧美久热| 丁香五月六月综合激情| 日韩av免费版| 蜜乳A√| 啪啪一区| 久久曰曰| 五月丁香六月激情综合| 欧美啪啪网| 日本va欧美va欧美va| 黄色视频网站在线播放| 伊人丁香在线| 丁香五月天激情视频| 婷五月天丁香婷五月| 色性日本| 久久A极片| 日本人妻丁香婷婷久久寝取熟女五月| www.婷婷五月天.com| 97色操| 色狠狠综合网| 亚洲成人高清在线| 婷婷五月天黄色网址| 五月天网站免费欧美| 婷婷综合在线网| 午夜电影网VA内射| 丁香六月天婷婷色| 久久久精久人妻| 任你躁XXXXX麻豆精品| 一本久久亚洲五月婷婷| 97日韩无套内| 超碰在线个人观看| 熟女色专区| 看国产探花操逼三级片| 久久久久久久久久8888| 狠狠爱成人综合网| 激情黄色小说色五月| 三十路磁力链接| 国产精品视频免费看| 久久99综合| 密黄站| 五月婷婷在线播放| 久久97| 99色五月| 亚洲婷婷五月天激情综合| 色五月色五天色情网| 丁香五月 性爱| 天天综合色丁香| 99爱视频| 99视频| 色色色色色五月| 亚洲看av的网站| 伊人五月成人| 成年人夜夜喷水| 中文字幕日韩无码制服诱或| 色久丁香五| 国产在线激情视频| 99色在线观看免费| 天天肏视频| 日韩色久| 五月综合久久| 久久 中文 日本| 久久人妻视步| 伊人大综合| 欧美韩日AAA网站| 99色在线| 久久丁香五月婷婷激情综合网| 狼人狠狠操| 国产精品视频| 亚洲人成色A777777在线观看| 国内久久婷婷| 99精品22| 婷婷丁香六月天激情四射网| 五月婷在线视频免费播放| 少妇水多A片太爽了| yazhou seshipin| 国产99久久久国产精品免费看| 99热这里在线精品| 五月天成人综合| 天天色情站| 精品一区二区三区免费毛片爱| 激情com| 亚洲热视频| 狠狠88综合久久久久噜噜噜| 九九在线视频| 精品99爱免费视频在线观看|