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

ARTICLE DETAIL

資訊詳情

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

KNN算法從原理到實(shí)戰(zhàn):鳶尾花數(shù)據(jù)集全流程調(diào)參與優(yōu)化

KNN算法從原理到實(shí)戰(zhàn):鳶尾花數(shù)據(jù)集全流程調(diào)參與優(yōu)化 1. 先把KNN這件事想明白一個(gè)不訓(xùn)練的算法憑什么上臺(tái)面K近鄰算法K-Nearest Neighbors簡(jiǎn)稱(chēng)KNN在機(jī)器學(xué)習(xí)里是個(gè)特別有意思的存在。你把訓(xùn)練集喂給它它幾乎什么都不干——不擬合參數(shù)、不更新權(quán)重、不建梯度、不迭代。fit()一調(diào)用時(shí)間基本花在把數(shù)據(jù)存進(jìn)內(nèi)存上。真正干活是在predict()那一刻來(lái)一個(gè)新樣本它把訓(xùn)練集里所有點(diǎn)和這個(gè)新樣本逐個(gè)算一遍距離找出最近的K個(gè)鄰居看這些鄰居大多屬于哪一類(lèi)就把新樣本判成哪一類(lèi)。這套邏輯樸素得像小區(qū)里問(wèn)路——你不知道某個(gè)地方在哪就問(wèn)身邊最近的幾個(gè)人多數(shù)人說(shuō)往東你大概就往東走。我在帶新人的時(shí)候常講一句話(huà)KNN的全部智能都藏在距離和K這兩個(gè)詞里。它沒(méi)有學(xué)到特征和標(biāo)簽之間的映射函數(shù)它學(xué)到的其實(shí)是整個(gè)訓(xùn)練集本身就是模型。這個(gè)特性決定了它的優(yōu)缺點(diǎn)都極其鮮明——實(shí)現(xiàn)簡(jiǎn)單、無(wú)需訓(xùn)練、天然支持多分類(lèi)、對(duì)非線(xiàn)性邊界有一定適應(yīng)力但同時(shí)內(nèi)存占用隨數(shù)據(jù)線(xiàn)性增長(zhǎng)、預(yù)測(cè)慢、對(duì)特征尺度極其敏感、在高維空間里幾乎失效。這篇文章講的是鳶尾花Iris數(shù)據(jù)集上的KNN完整實(shí)現(xiàn)。這個(gè)數(shù)據(jù)集小得可愛(ài)150條樣本4個(gè)特征花萼長(zhǎng)度、花萼寬度、花瓣長(zhǎng)度、花瓣寬度3個(gè)類(lèi)別三個(gè)不同品種每類(lèi)50條。很多人嫌它太簡(jiǎn)單一行代碼準(zhǔn)確率就96%但我偏偏喜歡拿它做教學(xué)載體因?yàn)樗蓛舻娇梢园衙恳粋€(gè)環(huán)節(jié)單獨(dú)拎出來(lái)反復(fù)折騰——你怎么選K、怎么縮放、怎么切分、怎么驗(yàn)證、怎么解釋結(jié)果全都看得清清楚楚不會(huì)有一堆臟數(shù)據(jù)干擾你的判斷。適合誰(shuí)看寫(xiě)過(guò)一點(diǎn)Python、聽(tīng)過(guò)KNN但沒(méi)真正跑通過(guò)全流程的人調(diào)包能出結(jié)果但說(shuō)不清為什么準(zhǔn)確率是96%而不是99%的人想手寫(xiě)一遍KNN理解底層的人。如果你已經(jīng)能熟練做網(wǎng)格搜索和特征工程這篇可能偏基礎(chǔ)但里面關(guān)于標(biāo)準(zhǔn)化順序、維度災(zāi)難、距離度量選擇的那些坑大概率還是能幫你省點(diǎn)時(shí)間。1.1 距離即投票KNN的核心假設(shè)到底是什么任何算法背后都有一套對(duì)世界的假設(shè)KNN的假設(shè)直白得不像話(huà)特征空間里挨得近的樣本標(biāo)簽大概率相同。這句話(huà)聽(tīng)起來(lái)像廢話(huà)但它成立是需要條件的。第一個(gè)條件特征必須能構(gòu)成一個(gè)有意義的度量空間。也就是說(shuō)兩個(gè)樣本之間的距離要真的能反映它們的相似程度。如果你的特征里混了用戶(hù)ID這種純編號(hào)ID1001和ID1002看起來(lái)距離是1但它們之間沒(méi)有任何語(yǔ)義關(guān)聯(lián)這種距離就是假的會(huì)把整個(gè)模型帶偏。第二個(gè)條件各特征的量綱要可比?;ㄝ嚅L(zhǎng)度單位是厘米取值范圍4.3到7.9如果我還加入一個(gè)花瓣面積單位是平方厘米取值可能到20以上。那么在歐氏距離的平方和里面積這個(gè)維度會(huì)完全壓制長(zhǎng)度維度長(zhǎng)度特征等于白給。這就是為什么KNN幾乎必須配標(biāo)準(zhǔn)化不是建議是必須。第三個(gè)條件樣本密度要足夠。KNN是純局部方法它只看鄰居。如果某個(gè)區(qū)域訓(xùn)練樣本極其稀疏那最近的K個(gè)鄰居可能其實(shí)離得很遠(yuǎn)投票結(jié)果的可靠性就大打折扣。所以KNN在樣本分布均勻、類(lèi)別邊界清晰的問(wèn)題上表現(xiàn)好在長(zhǎng)尾、稀疏、類(lèi)別極不平衡的問(wèn)題上容易翻車(chē)。想清楚這三點(diǎn)你就明白為什么很多人拿KNN跑出來(lái)的結(jié)果忽高忽低——不是算法玄學(xué)是這三個(gè)前提被破壞了。我見(jiàn)過(guò)有人把KNN直接用在幾千維的文本TF-IDF向量上然后抱怨KNN效果太差其實(shí)問(wèn)題不在KNN在于高維空間里最近這個(gè)概念已經(jīng)失真了這個(gè)后面會(huì)專(zhuān)門(mén)講。1.2 它和線(xiàn)性模型、樹(shù)模型的根本差別在哪拿KNN和邏輯回歸對(duì)比差別不只在效果更在模型的形態(tài)。邏輯回歸訓(xùn)練完得到的是一組權(quán)重模型被壓縮成幾個(gè)數(shù)字你甚至可以把它寫(xiě)在紙上KNN訓(xùn)練完得到的是一整個(gè)訓(xùn)練集模型體積等于數(shù)據(jù)體積。這是參數(shù)化模型和非參數(shù)化模型的分水嶺。和決策樹(shù)對(duì)比更有意思。決策樹(shù)是在特征空間上切格子切完之后每個(gè)格子給一個(gè)標(biāo)簽切法由訓(xùn)練數(shù)據(jù)決定但一旦確定就固定了KNN不切格子它的決策邊界是隨著查詢(xún)點(diǎn)移動(dòng)的每個(gè)新樣本都會(huì)臨時(shí)劃出一片鄰域。所以KNN的決策邊界可以非常曲折、非常非線(xiàn)性代價(jià)是它沒(méi)法給你一個(gè)可解釋的規(guī)則表。這個(gè)差別帶來(lái)的直接影響是預(yù)測(cè)成本。邏輯回歸預(yù)測(cè)是幾次乘加微秒級(jí)決策樹(shù)預(yù)測(cè)是幾次比較也是微秒級(jí)KNN預(yù)測(cè)要遍歷訓(xùn)練集算距離10萬(wàn)條樣本就是10萬(wàn)次距離計(jì)算。線(xiàn)上服務(wù)里如果QPS高、延遲敏感KNN基本不適合直接懟在請(qǐng)求鏈路上得配近似最近鄰索引或者做預(yù)計(jì)算。1.3 哪些場(chǎng)景該用它哪些場(chǎng)景趁早換我自己的判斷標(biāo)準(zhǔn)很簡(jiǎn)單看三條數(shù)據(jù)量中等偏小萬(wàn)級(jí)到十萬(wàn)級(jí)特征維度不高幾十維以?xún)?nèi)且特征都是數(shù)值型、量綱可以統(tǒng)一——用KNN很合適甚至經(jīng)常能打贏一些復(fù)雜模型。樣本量極大或者維度極高幾百上千維——先別急著上KNN除非你愿意上近似檢索。需要給出為什么這么判的業(yè)務(wù)解釋——KNN能給出因?yàn)楹瓦@5個(gè)歷史樣本最像這種解釋在某些風(fēng)控、推薦場(chǎng)景反而比權(quán)重系數(shù)更好用。實(shí)際落地里KNN出現(xiàn)頻率最高的地方往往不是主模型而是推薦系統(tǒng)的召回層找相似物品/相似用戶(hù)、圖像檢索的相似度匹配、異常檢測(cè)離所有鄰居都遠(yuǎn)的點(diǎn)判為異常、缺失值填補(bǔ)用鄰居的均值填、以及小樣本冷啟動(dòng)場(chǎng)景。這些場(chǎng)景有一個(gè)共同點(diǎn)——相似本身就是業(yè)務(wù)語(yǔ)義不需要額外解釋。2. 核心參數(shù)與原理細(xì)節(jié)K值、距離度量、決策規(guī)則2.1 K值怎么選偏差和方差的那桿秤K是KNN里唯一一個(gè)真正意義上的超參數(shù)它的作用是把局部的尺度調(diào)大調(diào)小。K1的時(shí)候模型完全信任最近的那一個(gè)點(diǎn)。訓(xùn)練集里只要有一個(gè)噪聲點(diǎn)或者標(biāo)錯(cuò)的樣本它周?chē)蜁?huì)被劃出一小塊錯(cuò)誤的領(lǐng)地。這叫過(guò)擬合方差極大換一批訓(xùn)練數(shù)據(jù)決策邊界抖得厲害。準(zhǔn)確率在訓(xùn)練集上永遠(yuǎn)是100%因?yàn)樽罱泥従泳褪撬约簻y(cè)試集上往往明顯掉一檔。K取很大比如K100那就等于每次預(yù)測(cè)都看一大片區(qū)域。極端情況KN所有樣本都參與投票預(yù)測(cè)結(jié)果對(duì)所有輸入都一樣永遠(yuǎn)是多數(shù)類(lèi)。這叫欠擬合偏差極大。所以K的選擇本質(zhì)就是在偏差和方差之間找平衡點(diǎn)。經(jīng)驗(yàn)做法有這么幾條從K sqrt(N)開(kāi)始試N是訓(xùn)練樣本數(shù)。150條樣本開(kāi)方約12所以鳶尾花上可以先試K11或13這類(lèi)奇數(shù)。二分類(lèi)問(wèn)題盡量取奇數(shù)避免平票。多分類(lèi)問(wèn)題平票的可能性低但sklearn內(nèi)部會(huì)按距離加權(quán)或取索引小的類(lèi)行為不一定符合你的預(yù)期能避開(kāi)就避開(kāi)。不要用訓(xùn)練集選K。必須用驗(yàn)證集或者交叉驗(yàn)證否則你會(huì)選出一個(gè)過(guò)擬合的極小K。K通常不會(huì)取到樣本量的很大比例一般不超過(guò)樣本數(shù)的十分之一到五分之一。在鳶尾花上做5折交叉驗(yàn)證掃一遍K你會(huì)看到一個(gè)很典型的U形曲線(xiàn)K從1漲到5左右準(zhǔn)確率快速上升5到15之間平臺(tái)區(qū)很平超過(guò)25之后開(kāi)始緩慢下滑。平臺(tái)的平坦程度說(shuō)明這個(gè)數(shù)據(jù)集類(lèi)別邊界很干凈實(shí)際上K取3到15結(jié)果都差不多在0.95以上。這時(shí)候真正的決策依據(jù)不是哪個(gè)準(zhǔn)確率高0.01而是哪個(gè)更穩(wěn)——我一般會(huì)選平臺(tái)區(qū)中間偏小的值兼顧穩(wěn)定性和局部性。2.2 距離度量不是只有歐氏距離默認(rèn)的歐氏距離是L2范數(shù)公式是各維度差值的平方和再開(kāi)根號(hào)。它在特征維度獨(dú)立、量綱統(tǒng)一、分布比較團(tuán)狀的時(shí)候最合適。曼哈頓距離是L1范數(shù)各維度差值絕對(duì)值求和。它對(duì)異常值更不敏感因?yàn)檎`差不被平方放大。如果某一維偶爾出現(xiàn)離譜的值L1會(huì)比L2穩(wěn)。余弦相似度衡量的是方向而不是長(zhǎng)度。文本向量、embedding向量這種長(zhǎng)度不重要、方向才重要的場(chǎng)景必須用余弦。你在高維稀疏向量上算歐氏距離結(jié)果基本被向量模長(zhǎng)主導(dǎo)完全沒(méi)有意義。閔可夫斯基距離是把上面這些統(tǒng)一起來(lái)的通式參數(shù)p決定具體形態(tài)p1是曼哈頓p2是歐氏p→∞是切比雪夫距離取各維度差值的最大值。sklearn里metricminkowski, p2就是歐氏距離。還有幾個(gè)值得知道但少用的馬氏距離考慮了特征之間的協(xié)方差能消除特征相關(guān)性影響但對(duì)小樣本估計(jì)協(xié)方差矩陣不穩(wěn)漢明距離專(zhuān)門(mén)給離散/二值特征用Jaccard用于集合相似度。選距離度量的判斷順序我一般是這樣的特征有明確物理量綱且相互獨(dú)立→歐氏存在離群點(diǎn)或分布偏斜→曼哈頓向量方向比大小重要→余弦特征間強(qiáng)相關(guān)→考慮馬氏或先做PCA去相關(guān)。2.3 投票規(guī)則與距離加權(quán)標(biāo)準(zhǔn)做法是等權(quán)投票K個(gè)鄰居一人一票。但這里有個(gè)隱含問(wèn)題——K5的時(shí)候最近的鄰居距離可能是1.0最遠(yuǎn)的那個(gè)可能是3.0它們的話(huà)語(yǔ)權(quán)完全一樣這顯然不太合理。weightsdistance就是來(lái)解決這個(gè)的每個(gè)鄰居的票權(quán)按距離的倒數(shù)分配。距離越近權(quán)重越大距離趨近于0時(shí)權(quán)重趨于無(wú)窮大。實(shí)現(xiàn)上sklearn用的是1/d而不是嚴(yán)格的1/d2避免數(shù)值爆炸。效果上距離加權(quán)在小K時(shí)通常能提升一點(diǎn)準(zhǔn)確率尤其在類(lèi)別邊界附近但在噪聲多的數(shù)據(jù)上反而可能放大單個(gè)異常點(diǎn)的影響。我的實(shí)測(cè)經(jīng)驗(yàn)是數(shù)據(jù)干凈、邊界清晰比如鳶尾花等權(quán)和距離加權(quán)差別在1個(gè)百分點(diǎn)以?xún)?nèi)數(shù)據(jù)噪聲大、密度不均等權(quán)反而更穩(wěn)?;貧w任務(wù)里KNN就是取鄰居標(biāo)簽的均值或加權(quán)均值邏輯完全對(duì)應(yīng)。分類(lèi)投票、回歸平均這是同一套思想的兩種輸出形式。2.4 維度災(zāi)難KNN在高維空間為什么會(huì)失靈這一條很關(guān)鍵但很多教程一筆帶過(guò)。高維空間里距離這個(gè)概念會(huì)鈍化。設(shè)想在一維區(qū)間[0,1]里隨機(jī)撒點(diǎn)最近鄰的距離大概在1/N量級(jí)在100維的單位超立方體里撒點(diǎn)任意兩點(diǎn)之間的距離會(huì)高度集中在一個(gè)很窄的范圍內(nèi)最近鄰和最遠(yuǎn)鄰的距離比值趨近于1。這意味著什么意味著最近的那個(gè)鄰居并不比隨便挑一個(gè)點(diǎn)近多少KNN的局部性假設(shè)直接崩塌。有個(gè)粗略的經(jīng)驗(yàn)說(shuō)法KNN在維度超過(guò)20左右就要小心了超過(guò)50基本只能靠降維或者換算法。這不是硬閾值跟樣本量有關(guān)——樣本量隨維度指數(shù)增長(zhǎng)才夠用所以維度和樣本量的關(guān)系比單純的維度數(shù)字更重要。對(duì)策很實(shí)在先做特征選擇把明顯無(wú)關(guān)的維度砍掉。用PCA或者別的降維手段壓到低維再跑KNN很多時(shí)候比直接堆全特征效果還好。如果維度確實(shí)高比如embedding檢索不要用暴力搜索改用近似最近鄰HNSW、IVF之類(lèi)的索引結(jié)構(gòu)現(xiàn)代向量檢索基本都是把這個(gè)思路工程化。2.5 特征縮放不做這一步后面全是白干標(biāo)準(zhǔn)化公式很基礎(chǔ)但值得寫(xiě)清楚因?yàn)楹芏嗉?xì)節(jié)在為什么這么算上$$z \frac{x - \mu}{\sigma}$$其中 μ 是訓(xùn)練集上該特征的均值σ 是訓(xùn)練集上該特征的標(biāo)準(zhǔn)差。變換之后每個(gè)特征的均值是0標(biāo)準(zhǔn)差是1。標(biāo)準(zhǔn)化不改變分布形狀只改尺度和位置。這里有兩個(gè)必須記住的操作禁忌計(jì)算 μ 和 σ 只能用訓(xùn)練集然后把這個(gè) μ、σ 應(yīng)用到驗(yàn)證集和測(cè)試集上。如果用全體數(shù)據(jù)算均值和方差再切分測(cè)試集的信息就泄漏進(jìn)訓(xùn)練過(guò)程了評(píng)估結(jié)果會(huì)虛高。正確做法是scaler.fit(X_train)后scaler.transform(X_test)或者用Pipeline把縮放和模型綁在一起。StandardScaler 對(duì)常數(shù)列標(biāo)準(zhǔn)差為0處理時(shí)會(huì)把該列置0不會(huì)報(bào)錯(cuò)但那一維就廢了。如果某個(gè)特征在訓(xùn)練集里只有一個(gè)值請(qǐng)?zhí)崆白R(shí)別出來(lái)刪掉。除了StandardScaler還有幾種常見(jiàn)選擇MinMaxScaler把值壓到[0,1]適合需要固定范圍或者稀疏數(shù)據(jù)RobustScaler用中位數(shù)和四分位距對(duì)離群點(diǎn)更穩(wěn)Normalizer是行歸一化改的是樣本向量的模長(zhǎng)而不是列的分布別和標(biāo)準(zhǔn)化搞混。在鳶尾花上標(biāo)準(zhǔn)化的影響其實(shí)不大因?yàn)樗膫€(gè)特征本來(lái)就在同一量級(jí)厘米歐氏距離不會(huì)嚴(yán)重失衡。但為了養(yǎng)成習(xí)慣也因?yàn)檫@是通用流程的一部分正式代碼里我還是會(huì)加上。這個(gè)習(xí)慣在你自己接手的真實(shí)數(shù)據(jù)上價(jià)值巨大——我踩過(guò)的最隱蔽的一次坑就是一個(gè)以元為單位的價(jià)格特征和一個(gè)以百分比為單位的比率特征混在一起KNN的準(zhǔn)確率一直在60%左右徘徊標(biāo)準(zhǔn)化之后直接跳到88%。3. 鳶尾花數(shù)據(jù)集實(shí)操?gòu)募虞d到評(píng)估的完整流程3.1 加載數(shù)據(jù)與第一輪觀察先用sklearn自帶的版本省去下載和清洗的功夫。import numpy as np import pandas as pd from sklearn.datasets import load_iris iris load_iris() X pd.DataFrame(iris.data, columnsiris.feature_names) y pd.Series(iris.target, nametarget) print(X.shape) # (150, 4) print(y.value_counts()) # 每類(lèi)各50 print(X.describe().round(2))跑出來(lái)你會(huì)看到各特征的范圍花萼長(zhǎng)度4.3到7.9花萼寬度2.0到4.4花瓣長(zhǎng)度1.0到6.9花瓣寬度0.1到2.5。四個(gè)特征量綱一致但分布寬度差了一倍多花瓣寬度的標(biāo)準(zhǔn)差比花萼寬度小不少說(shuō)明花瓣相關(guān)的特征區(qū)分度可能更高。再看一下類(lèi)別分布三個(gè)類(lèi)各50條完全均衡。這一點(diǎn)很重要——均衡數(shù)據(jù)上準(zhǔn)確率這個(gè)指標(biāo)才可信如果是9:1的不均衡數(shù)據(jù)全猜多數(shù)類(lèi)也有90%準(zhǔn)確率那時(shí)候必須看混淆矩陣、看每類(lèi)的precision和recall。還有一個(gè)必做的動(dòng)作看特征之間的相關(guān)性。print(X.corr().round(2))在鳶尾花上花瓣長(zhǎng)度和花瓣寬度的相關(guān)系數(shù)大約0.96花萼長(zhǎng)度和花瓣長(zhǎng)度大約0.87。高度相關(guān)意味著信息冗余對(duì)KNN來(lái)說(shuō)不致命它不像線(xiàn)性回歸那樣有共線(xiàn)性問(wèn)題但確實(shí)意味著你在重復(fù)計(jì)權(quán)同一個(gè)維度。這也是后面能不能做PCA降維的依據(jù)之一。我一般還會(huì)畫(huà)一下散點(diǎn)圖用花瓣長(zhǎng)度和花瓣寬度做二維投影肉眼就能看出三類(lèi)基本是分開(kāi)的其中一類(lèi)setosa和另外兩類(lèi)完全線(xiàn)性可分另外兩類(lèi)之間只有少量交疊。這解釋了為什么這個(gè)數(shù)據(jù)集的準(zhǔn)確率天花板在96%到98%之間——那2%到4%的錯(cuò)誤幾乎全部來(lái)自后兩類(lèi)的邊界樣本無(wú)論你怎么調(diào)K都是這個(gè)數(shù)。3.2 數(shù)據(jù)劃分與標(biāo)準(zhǔn)化的正確姿勢(shì)劃分訓(xùn)練測(cè)試集固定隨機(jī)種子保證可復(fù)現(xiàn)from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.2, random_state42, stratifyy )stratifyy這個(gè)參數(shù)一定要加。它保證訓(xùn)練集和測(cè)試集里的類(lèi)別比例與原數(shù)據(jù)一致。150條數(shù)據(jù)、3個(gè)類(lèi)如果不分層隨機(jī)切出30條測(cè)試集有概率某一類(lèi)只分到6條甚至更少評(píng)估結(jié)果波動(dòng)會(huì)很大。分層之后每類(lèi)在測(cè)試集里穩(wěn)定出現(xiàn)10條。然后是標(biāo)準(zhǔn)化注意順序from sklearn.preprocessing import StandardScaler scaler StandardScaler() X_train_scaled scaler.fit_transform(X_train) # fit和transform都在訓(xùn)練集 X_test_scaled scaler.transform(X_test) # 只用transform這里有個(gè)細(xì)節(jié)fit_transform(X_train)之后scaler.mean_和scaler.scale_就固定了transform(X_test)用的是訓(xùn)練集的統(tǒng)計(jì)量。如果你寫(xiě)成scaler.fit_transform(X_test)那就是徹頭徹尾的數(shù)據(jù)泄漏測(cè)試集的均值方差參與了變換評(píng)估結(jié)果會(huì)偏樂(lè)觀。這個(gè)坑極其常見(jiàn)我在代碼review里見(jiàn)過(guò)不止一次。更穩(wěn)妥的寫(xiě)法是直接用Pipeline把縮放和模型串成一體交叉驗(yàn)證的時(shí)候sklearn會(huì)自動(dòng)保證每一折的縮放只在該折的訓(xùn)練部分?jǐn)M合from sklearn.pipeline import Pipeline from sklearn.neighbors import KNeighborsClassifier pipe Pipeline([ (scaler, StandardScaler()), (knn, KNeighborsClassifier(n_neighbors5)) ])用Pipeline最大的好處不是代碼短是從結(jié)構(gòu)上消滅了忘記順序的可能性。我現(xiàn)在的習(xí)慣是只要涉及任何需要fit的預(yù)處理一律走Pipeline不給自己犯錯(cuò)的機(jī)會(huì)。3.3 建模、預(yù)測(cè)與評(píng)估from sklearn.metrics import accuracy_score, classification_report, confusion_matrix pipe.fit(X_train, y_train) y_pred pipe.predict(X_test) print(f準(zhǔn)確率: {accuracy_score(y_test, y_pred):.4f}) print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred, target_namesiris.target_names))默認(rèn)K5跑出來(lái)測(cè)試集準(zhǔn)確率通常在0.93到0.97之間浮動(dòng)取決于random_state。混淆矩陣會(huì)顯示錯(cuò)誤集中在那兩個(gè)容易混的類(lèi)之間。光看一個(gè)測(cè)試集的結(jié)果不夠30條樣本錯(cuò)一條就是3.3個(gè)百分點(diǎn)波動(dòng)太大。養(yǎng)成習(xí)慣用交叉驗(yàn)證from sklearn.model_selection import cross_val_score scores cross_val_score(pipe, X, y, cv5, scoringaccuracy) print(f5折CV: {scores.mean():.4f} ± {scores.std():.4f})5折交叉驗(yàn)證用的是全部150條數(shù)據(jù)每一折都有120條訓(xùn)練、30條驗(yàn)證最后取5次平均。這個(gè)數(shù)字比單次train_test_split穩(wěn)定得多也是我用來(lái)判斷模型好壞的主要依據(jù)。注意這里的cross_val_score傳入的是完整的X和y內(nèi)部會(huì)自己切分——Pipeline保證了每一折的縮放只在訓(xùn)練折上擬合所以沒(méi)有泄漏。還有一個(gè)指標(biāo)值得看一眼predict_proba。proba pipe.predict_proba(X_test[:5]) print(proba.round(3))KNN輸出的概率就是K個(gè)鄰居里各類(lèi)的占比。K5的話(huà)概率只可能是0、0.2、0.4、0.6、0.8、1.0這幾檔粒度非常粗。如果你需要比較細(xì)的概率估計(jì)比如做排序或者閾值調(diào)整KNN不是好選擇它的概率沒(méi)經(jīng)過(guò)校準(zhǔn)??梢杂肅alibratedClassifierCV包一層或者干脆換邏輯回歸。3.4 手寫(xiě)一遍KNN把黑箱拆開(kāi)調(diào)包調(diào)通了不代表懂了。我強(qiáng)烈建議每個(gè)人手寫(xiě)一遍代碼不超過(guò)40行import numpy as np from collections import Counter class SimpleKNN: def __init__(self, k3, p2): self.k k self.p p def fit(self, X, y): self.X_train np.asarray(X, dtypefloat) self.y_train np.asarray(y) return self def _dist(self, a, b): if self.p 1: return np.abs(a - b).sum(axis1) if self.p 2: return np.sqrt(((a - b) ** 2).sum(axis1)) return np.max(np.abs(a - b), axis1) def predict(self, X): X np.asarray(X, dtypefloat) preds [] for x in X: d self._dist(x, self.X_train) idx np.argsort(d)[:self.k] votes Counter(self.y_train[idx]) preds.append(votes.most_common(1)[0][0]) return np.array(preds)寫(xiě)完自己手動(dòng)標(biāo)準(zhǔn)化一下再跑mu, sigma X_train.mean(0), X_train.std(0) Xtr (X_train - mu) / sigma Xte (X_test - mu) / sigma knn SimpleKNN(k5).fit(Xtr.values, y_train.values) pred knn.predict(Xte.values) print((pred y_test.values).mean())結(jié)果應(yīng)該和sklearn基本一致。手寫(xiě)的價(jià)值在于你會(huì)親眼看到預(yù)測(cè)這一步是O(N×D)的計(jì)算N是訓(xùn)練樣本數(shù)D是維度。這解釋了為什么KNN預(yù)測(cè)慢、為什么大數(shù)據(jù)量下必須上索引結(jié)構(gòu)。你也會(huì)看到argsort是整個(gè)流程的瓶頸——實(shí)際上只需要前K個(gè)用argpartition會(huì)快很多工業(yè)實(shí)現(xiàn)里還會(huì)用堆或者樹(shù)結(jié)構(gòu)。順便說(shuō)一個(gè)優(yōu)化點(diǎn)很多人不知道sklearn的KNN可以預(yù)計(jì)算距離矩陣在特征不變、只反復(fù)調(diào)K的場(chǎng)景下能省一半時(shí)間還有一個(gè)更實(shí)用的技巧是設(shè)置algorithmauto之外顯式指定kd_tree或ball_tree在低維中等數(shù)據(jù)量下比暴力搜索快一個(gè)數(shù)量級(jí)。4. 調(diào)參與性能優(yōu)化把準(zhǔn)確率從96%推到98%4.1 用網(wǎng)格搜索找K和權(quán)重手工試K效率太低直接上GridSearchCV。注意要搜的參數(shù)在Pipeline里帶前綴from sklearn.model_selection import GridSearchCV param_grid { knn__n_neighbors: list(range(1, 31, 2)), knn__weights: [uniform, distance], knn__p: [1, 2] } grid GridSearchCV(pipe, param_grid, cv5, scoringaccuracy, n_jobs-1) grid.fit(X, y) print(grid.best_params_) print(f{grid.best_score_:.4f})參數(shù)空間是15×2×260組每組5折一共300次訓(xùn)練加預(yù)測(cè)在鳶尾花這種規(guī)模上幾秒鐘就跑完了。一個(gè)觀察跑完之后你大概率會(huì)發(fā)現(xiàn)最優(yōu)的K落在3到11之間weights是uniform還是distance差距很小p是1還是2差距也很小。這說(shuō)明在這個(gè)數(shù)據(jù)集上這些超參并不敏感。這時(shí)候別再糾結(jié)了挑一個(gè)泛化誤差曲線(xiàn)平臺(tái)區(qū)靠中間的值定下來(lái)把精力放到別的地方去。但有一種情況需要注意GridSearchCV用的是同一份數(shù)據(jù)做交叉驗(yàn)證選參數(shù)然后再用同一個(gè)best_score_報(bào)告結(jié)果這個(gè)數(shù)字會(huì)略微偏樂(lè)觀因?yàn)閰?shù)是在這同一批數(shù)據(jù)上挑出來(lái)的最優(yōu)值。嚴(yán)格的評(píng)估應(yīng)該留一個(gè)從不參與調(diào)參的測(cè)試集最后單獨(dú)跑一次。我一般這么切先分出20%測(cè)試集鎖起來(lái)剩下80%做交叉驗(yàn)證調(diào)參最后用那20%報(bào)最終結(jié)果且只報(bào)一次。4.2 縮放方式對(duì)結(jié)果的對(duì)比實(shí)驗(yàn)這個(gè)實(shí)驗(yàn)值得親手做一遍體會(huì)一下預(yù)處理選擇會(huì)直接影響指標(biāo)。from sklearn.preprocessing import MinMaxScaler, RobustScaler from sklearn.model_selection import cross_val_score for name, sc in [(none, None), (standard, StandardScaler()), (minmax, MinMaxScaler()), (robust, RobustScaler())]: steps [(knn, KNeighborsClassifier(n_neighbors5))] if sc: steps.insert(0, (scaler, sc)) p Pipeline(steps) s cross_val_score(p, X, y, cv5) print(f{name:9s} {s.mean():.4f} ± {s.std():.4f})在鳶尾花上你會(huì)看到不縮放的結(jié)果其實(shí)只差一點(diǎn)點(diǎn)因?yàn)樗膫€(gè)特征量綱本來(lái)就接近。但如果我把花萼寬度乘以100模擬量綱差異不縮放的準(zhǔn)確率會(huì)立刻掉到0.6以下而標(biāo)準(zhǔn)化版本紋絲不動(dòng)。這個(gè)對(duì)比實(shí)驗(yàn)我每次帶人做都會(huì)做沖擊感比講十遍原理都強(qiáng)。順便提一個(gè)邊界情況如果數(shù)據(jù)里有明顯的極端離群點(diǎn)StandardScaler會(huì)被拉偏因?yàn)榫岛蜆?biāo)準(zhǔn)差都受離群值影響這時(shí)候RobustScaler通常更穩(wěn)。判斷方法很簡(jiǎn)單畫(huà)個(gè)箱線(xiàn)圖看看就清楚了。4.3 大數(shù)據(jù)量下的加速思路鳶尾花只有150條談性能優(yōu)化有點(diǎn)奢侈。但既然講到這把思路說(shuō)清楚對(duì)將來(lái)有用。暴力搜索的復(fù)雜度預(yù)測(cè)單個(gè)樣本是O(N×D)N條查詢(xún)就是O(N×M×D)。N到十萬(wàn)級(jí)、D到百級(jí)單次預(yù)測(cè)就要上千萬(wàn)次運(yùn)算這是不可接受的。第一條路是空間索引。KD樹(shù)在低維經(jīng)驗(yàn)上D20能顯著加速本質(zhì)是把空間遞歸二分查詢(xún)時(shí)剪枝掉不可能包含近鄰的分支。Ball Tree對(duì)高維稍好一些用超球體代替超矩形切分。sklearn里algorithm參數(shù)支持這兩種設(shè)置auto會(huì)讓它自動(dòng)選。但注意維度一高這些樹(shù)的剪枝效率急劇下降最后退化成接近暴力搜索。第二條路是近似最近鄰ANN。放棄精確找到最近的K個(gè)轉(zhuǎn)而以很高概率找到足夠近的K個(gè)換來(lái)數(shù)量級(jí)的速度提升。常見(jiàn)思路有基于圖的把樣本連成近鄰圖查詢(xún)時(shí)在圖上貪心游走、基于量化的把向量空間分桶只在附近桶里找、基于哈希的。這些在檢索場(chǎng)景已經(jīng)成為標(biāo)配文本、圖像、向量數(shù)據(jù)庫(kù)底層基本都是這套東西。第三條路是降維。PCA降到幾十維再跑既緩解維度災(zāi)難又直接降低每次距離計(jì)算的成本雙贏。前提是降維后保留的方差足夠一般看累計(jì)解釋方差到95%以上。第四條路是工程手段預(yù)計(jì)算距離矩陣、批量向量化用矩陣運(yùn)算代替循環(huán)、把訓(xùn)練集常駐內(nèi)存避免重復(fù)加載、用更緊湊的數(shù)據(jù)類(lèi)型float32代替float64內(nèi)存減半、速度提升。這些都是實(shí)現(xiàn)層面的小優(yōu)化累加起來(lái)也很可觀。5. 常見(jiàn)問(wèn)題與排查實(shí)錄5.1 準(zhǔn)確率異常低按這個(gè)順序排查我整理了一個(gè)排查順序從最常見(jiàn)的開(kāi)始第一檢查是否做了縮放。這是頭號(hào)原因占比超過(guò)一半。特征量綱差異大而沒(méi)縮放KNN基本等于只在一個(gè)特征上做判斷。第二檢查縮放是不是做在了劃分之前。如果先對(duì)全量數(shù)據(jù)fit_transform再切分雖然準(zhǔn)確率會(huì)虛高而不是變低但另一個(gè)常見(jiàn)錯(cuò)誤是把fit_transform用在了測(cè)試集上這會(huì)導(dǎo)致訓(xùn)練和測(cè)試的變換標(biāo)準(zhǔn)不一致結(jié)果可能變得很奇怪。第三檢查有沒(méi)有把ID、時(shí)間戳之類(lèi)的列喂進(jìn)去。這類(lèi)特征的距離沒(méi)有語(yǔ)義會(huì)嚴(yán)重稀釋真實(shí)特征的作用。特征列一定要手動(dòng)點(diǎn)一遍名。第四檢查類(lèi)別是否極度不平衡。不平衡時(shí)KNN會(huì)傾向于預(yù)測(cè)多數(shù)類(lèi)整體準(zhǔn)確率看起來(lái)還行但少數(shù)類(lèi)的召回率慘不忍睹。這時(shí)候要看每類(lèi)的指標(biāo)并考慮用weightsdistance或者對(duì)多數(shù)類(lèi)下采樣。第五檢查K值是不是太大。K接近樣本數(shù)時(shí)模型退化所有預(yù)測(cè)趨同。第六檢查是否存在重復(fù)樣本或近重復(fù)樣本導(dǎo)致的泄漏。如果同一條數(shù)據(jù)或幾乎相同的樣本同時(shí)出現(xiàn)在訓(xùn)練集和測(cè)試集KNN會(huì)直接背答案準(zhǔn)確率高得離譜。這在做過(guò)數(shù)據(jù)增強(qiáng)或者按時(shí)間切分不當(dāng)?shù)膱?chǎng)景里很常見(jiàn)。5.2 問(wèn)題速查表現(xiàn)象最可能的原因處理方式準(zhǔn)確率明顯低于預(yù)期未做特征縮放加StandardScaler走Pipeline準(zhǔn)確率虛高接近100%數(shù)據(jù)泄漏或重復(fù)樣本檢查切分邏輯去重縮放只在訓(xùn)練集fit訓(xùn)練集100%、測(cè)試集很差K過(guò)小過(guò)擬合增大K用交叉驗(yàn)證選值所有樣本預(yù)測(cè)成同一類(lèi)K過(guò)大或類(lèi)別極不平衡減小K處理不平衡調(diào)參后提升很小超參不敏感或特征信息不足轉(zhuǎn)去做特征工程別死磕超參維度很高時(shí)效果崩塌維度災(zāi)難特征選擇或降維換ANN索引預(yù)測(cè)速度很慢暴力搜索大樣本KD樹(shù)/Ball樹(shù)或近似檢索概率輸出只有幾檔KNN概率粒度等于1/K增大K或用概率校準(zhǔn)5.3 幾個(gè)我踩過(guò)的坑寫(xiě)下來(lái)省你時(shí)間坑一把predict和predict_proba的結(jié)果混用。前者返回類(lèi)別標(biāo)簽后者返回各類(lèi)占比。有次我在做閾值篩選直接把predict的結(jié)果當(dāng)概率去比較大小邏輯全錯(cuò)排查了半天才發(fā)現(xiàn)類(lèi)型不對(duì)??佣雎蕴卣鞯南嚓P(guān)性做特征越多越好的判斷。加了一堆高度相關(guān)的特征KNN的距離計(jì)算里同一個(gè)信息被反復(fù)計(jì)權(quán)效果反而下降。加特征之前先看相關(guān)性矩陣。坑三在時(shí)間序列數(shù)據(jù)上隨機(jī)切分。KNN天然會(huì)把未來(lái)的信息帶到過(guò)去因?yàn)橄嗨频臉颖驹跁r(shí)間上往往相鄰。時(shí)間序列必須按時(shí)間切分否則評(píng)估結(jié)果毫無(wú)意義??铀囊詾閚_neighbors是唯一要調(diào)的。實(shí)際上metric的選擇在文本、embedding類(lèi)任務(wù)上比K的影響大得多很多人壓根沒(méi)試過(guò)換度量??游逶谛颖旧线^(guò)度相信單次評(píng)估結(jié)果。150條數(shù)據(jù)測(cè)試集30條多對(duì)一個(gè)少對(duì)一個(gè)就是3.3個(gè)百分點(diǎn)。一定要用交叉驗(yàn)證并且報(bào)出均值±標(biāo)準(zhǔn)差而不是報(bào)一個(gè)孤零零的數(shù)字。坑六忘記固定隨機(jī)種子。每次跑結(jié)果都不一樣調(diào)試的時(shí)候根本不知道變化是來(lái)自你的改動(dòng)還是來(lái)自切分。random_state是必備參數(shù)不是可選項(xiàng)。我在實(shí)際使用中的一個(gè)體會(huì)是KNN看起來(lái)是最簡(jiǎn)單的算法之一但它對(duì)數(shù)據(jù)質(zhì)量的敏感度在所有常見(jiàn)模型里排前列。線(xiàn)性模型還能靠權(quán)重把噪聲特征壓下去樹(shù)模型還能靠分裂點(diǎn)忽略無(wú)用維度KNN不行——你給它什么特征它就老老實(shí)實(shí)按這些特征算距離一維都不能糊弄。所以用好KNN的關(guān)鍵從來(lái)不在算法本身而在數(shù)據(jù)準(zhǔn)備那幾步特征選得準(zhǔn)不準(zhǔn)、量綱統(tǒng)一了沒(méi)有、有沒(méi)有混進(jìn)偽特征。把這幾步做扎實(shí)KNN在很多中小規(guī)模問(wèn)題上依然是個(gè)又便宜又穩(wěn)的基線(xiàn)值得在項(xiàng)目早期就先跑一遍看看天花板在哪。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色婷婷六月性| 国产操逼网站| 久久色五月天| 日本五月丁香| 大香蕉啪啪网| 人人爽欧美婷婷久久久五月丁香| 中文字幕网伦射乱中文| 色婷婷9| sS丁香五月婷婷| 91碰免费视频| 777精品久无码人妻蜜桃| 日本操逼九九九九58日本操逼| 久艹大香蕉| 色久女| 色国产五月| 激情丁香五月天图片| 色色色色热热| 欧美久久网| 99久久视频| 五月婷婷久久大香蕉| 久久久国产精品黄毛片| 99riAv1国产在线观看| 99色1| 色色丁香五月天| 影音先锋男人女人| 99视频在线精品免费观看2| 日韩色色视频www| 久/久精品99看9| 亚洲av电影网站| www.yw尤物| 欧美丁香婷婷五月天| 色黑鬼导航| 丁香六月啪啪啪| 天堂婷婷五月在线| 天天玩夜夜操天天爽| 最近中文字幕大全免费版在线| 精品热九九| 色99视频| 这里只有精品视频99| 99九九精品| 亚洲在线激情婷婷五月| 久久国产精品乱子伦_靑青草…| 丁香密臀AV激情网| 中文字幕五月久久婷| 亚洲色无码A片一区二区麻豆| 色日本五月天| 狠狠色综合网站久久久久| 婷婷成年人免费视频| 丁香五月婷婷丫| 婷婷大香蕉| 色噜噜狠狠一区二区三区| 日日操人人操| 怡红院精品视频久久久久久久久| 六月丁香激情综合网| 五月四色激情| 丁香五月欧美婷婷| 99热在线网站| 人人操女人| 久草婷婷视频| 国产激情在线| 狠狠综合网| 婷婷久久精品| 无码se| a九九热www| 野外99热| 丁香五月综合激情性爱 | 99热18| 婷婷五月天AV| 97综合在线| 琪琪色五月婷婷老师| 极品少妇XXXX精品少妇偷拍| 久久综合激情| 天天日天天色| 在线中文字幕免费视频| 超碰99热在线观看| 9久9久| 狠狠色九月| 婷婷之玖玖| 久久久精品99| 97人人射| 狠狠色综合网站| 五月丁香激情六月| 大香蕉久久婷婷精品综合| 99热这里只有精品5| 久操97| 九九99九九99九九99视频网| 91蜜桃婷婷狠狠久久综合9色| 国产综合视频婷婷| 国产成人网站在线观看| 五月婷婷开心色伊人| 大香蕉久热| 99碰碰中文| 激情五月天综合网| 五月激情开心婷婷| 婷婷五月天社区| 婷婷99热| 欧美三9久九观看| 九九热123| 97碰91| 五月婷婷日本| 九九免费视频在线| 79精品视频在线观看,| 久久综合影院 | 天天婷婷综合| 综合激情视频| 成人精品视频99在线观看免费| 最近中文字幕大全免费版在线 | 亚洲无码AV片| 日韩狠狠色婷婷| 99在线视频观看| 欧美日本免费一道免费视频| 五月综合激情| 第四色婷婷色五月| 97在线视频观看| 国产人妻人伦精品一区二区| 久久aaaaa| 一区二区成人电影| 成人综合伍月天| 涩五月婷婷| 五月天天天色| 婷婷丁香色情| 久久激情五月婷婷| 色婷婷8| www.9797国产| 99热这里只有精品3| 狠狠做深爱婷婷久久综合一区| 国产精品国产成人国产三级| 日韩综合天堂| 99这里| 天天爱天天做天天操| 99草在线免费观看视频| 婷婷综合网伊人| 变态另类9| 五月久久丁香| 欧美性爱特黄一级aaaassss| 综合网亚洲| Y11111111111少妇电影院| 婷婷精品在线| 成人电影AV在线观看| 97操在线| 天天夜天天色天天| 97色射| 秋霞黄色一级久久| 99久久久久| 97ai婷婷| 丁香婷婷基地| 激情碰碰碰| 激情综合网,五月| 亚洲色啪| www久久99| 欧美性色视频| 久久电影4399| 六月激情婷婷| 久久网站免费亚洲| 欧美大肥婆大肥BBBBB| 91精品综合久久婷婷九色| 亚洲VA在线| 丁香婷婷社区| 99热这里只有99| 欧洲亚洲免费视频9 | 开心婷婷五月天综合| 六月色婷婷| 99热99| 亚洲夜夜操| 久久久国产精品黄毛片| 精品九九视频| 97涩婷婷婷婷基地| 五月丁香六月在线| 人人操人人干AV| 婷婷五月草| 任你干嘛免费视频播放| 色欲天天综合| 激情五月激情综合俺也去婷婷小说| 午夜爱爱网站| 欧美日韩一a.无| 91色在线/日韩| 99爱99操| 成人做爰A片免费看视频| www超碰| 一级精品999WWW| 色高清无码视频| www.久久综合| 婷丁香五月天| 99re这里只有| 91九色精品女同系列| 香焦网五月天| 天天干天天日日| 狠狠精品干练久久久无码中文字幕| 婷色成人| 丁香五月婷婷99| 9九色首页| 久99热| 色综合天天综合成人网| 狠狠色狠狠色综合日日91| 五月美女婷婷风骚| 91综合国免费久入| 九九操综合网| 亚洲婷婷五月| 99re热视频这里只精品| ji'qi'luan'ren'lun| CAOBIBI| 色色色婷婷五月| 久久99精品视频| 丁香五月综合| 女人被男人吃奶到高潮| 伊人久久婷婷五月天激情四射| 国产亚洲精品久久久久久久久动漫| 狠狠干思思热| 人人爽在线视频综合网| 久久天堂色| 色五月综合激情| 性色播| 婷婷丁香九色| 亚洲激情五月| 精品爆操| 深爱激情六月| 五月天快乐开心激情网| aaa9区免费在线观看| 五月丁香激情综合网| 五月婷婷六月丁香激情综合网| 五月天婷婷激情六月久久| 天天插天天插| 亚州AV超碰人人操| 精品一区二区三区四区五区六区介绍| 人妻视频在线| 一区二区传媒视频| 婷婷99综合| 婷婷成人五月天成人文学| 开心婷婷五月天综合| 99在线看视频| 狠狠爱深色婷婷综合| 99热这里| 九九这里有精品| 婷婷色色狠狠| 婷婷六月色开| 大香蕉伊人爱在线| 色色五月天com| 图片区 小说区 区 亚洲五月 | 久99热在线观看| 99原创自拍视频在线观看| 久久久精品AV| 操日视频| 丁香花操逼| 国产精产国品一二三在观看| 五月丁香六月婷| 另类激情首页| 五月天婷婷激情小说电影| 天天日天天插天天操| 日韩精品一区二区亚洲AV观看| 91久久日日| 色情五月综合婷婷| 色婷婷小说| 欧美五月婷婷| 日本色视| 五月丁香六月激情综合| 天天做天天爱天天做| 99热免费| 丁香五月婷婷五月| 99热这里只是精品| 丁香六月婷婷缴情欧美| 超碰在线99| 停停五月天激情网| 99小精品| 婷婷激情五月综合| 日本一毛片| 九九婷婷激情综合网| 超碰成人在线观看| 日本色五月| 开心五月婷婷六月丁香| 人人色人人摸人人看| 香蕉五月婷婷| 色逼综合网| 开心激情五月天网| 中文激情网| 五月丁香亚洲婷婷| 九九婷婷五月天影视| 另类专区在线观看| 丁香五月激情啪| 性爱网五月天| 日韩综合天堂| 婷婷五月激情综合| av高清无码| 99热这里只有精| 亚洲一区国产传媒| 99久久五月丁香野外| 日本少妇裸体做爰高潮片| 久久综合婷婷五月| 欧美性爱中文字幕| 精品五月丁香| 爱婷婷五月| 亚洲另类AV| 欧美激情综合色丁香婷婷五月天| 色色网站在线| 亚洲熟女色| 天天日,天天插| 99热这里只是精品| 五月丁香六月婷婷久久久综合| 777久久精品| 久久久久9| 99综合自拍| 欧美WW在线网| 国产黄色一级片| 欧美日韩一区二区三区四区| 99ri网站在线观看| 美女被肏网站在线看| 欧美婷婷色| 国产一区二区三区影院| 亚洲欧美日韩VIP| www,天天干| 99热这里是精品| 免费无码毛片一区二区A片| 碰人人97| 五月激情婷婷图片基地| 天天日日夜夜爽。| 九九热最新视频| 色一色综合| 亚洲成人另类| 丁香六月婷婷色XXXX| 五月婷婷影| 狠狠香蕉| 伊人成综合五月婷婷| 婷婷四色五月| 夜夜操夜夜操| 日韩一本操| 色婷婷啪啪啪啪啪啪| A√天堂网在线| 天天干夜夜谢| 疯狂做受XXXX高潮A片| 97操资源婷婷| 天天弄天天爽| www.五月婷婷.com| 婷婷综合天堂| 五月深爱婷婷| 五月丁香啪啪| 婷婷五月丁香欧洲| 五月激情六月宗合| 欧美特大片黄| 婷婷色女| 夜夜资源站| www,99热在线观看| 5月丁香婷婷| 99热在线看片| 激情五月天福利| 九九热10| 激情久久久| 九九无毛| 婷婷五月天激情综合深爱| 91操网| 五月天小说激情| 思思视频久久| 五月色丁香| 啪啪黄页网| 青青福利网| 中文av网站| 国产一区18| 常久最新免费的色吊丝| 婷婷五月丁香亚洲| 六月丁香婷婷开心综合基地| 俺去也五月| www久| 亚洲激情综合| 任你日热视频| 色五月成人| 丁香六月婷婷激情| 99热6这里只有精品| 风流少妇A片一区二区蜜桃| 91在线日| 玖玖资源在线视频| 色婷婷丁香六月| 超碰人人色| 婷婷五月丁香欧洲| 人人爱国产| 91干网站| 亚洲激情综合免费| 婷婷丁香五月天大香蕉| 国产婷婷综合| 精品久久99码| 色噜噜狠狠色综合日日| 天天操天天爽天天爱| BBWCUCKOLD精品熟妇| 婷婷丁香成人| 9久热| 五月花婷婷在线精品视频| 婷婷天堂综合| 深爱激情网五月| 狠狠狠狠狠| 99热这里只有精品9| 9999久久久久| AAA久久久AAA久久久AAA| 69五月天视频| 俺去也综合| 无码A片一区二区免费| 婷婷六月天精品| 9l视频自拍九色9l视频在线观看| 超碰2021| 婷婷丁香五月欧美人| 久九色| 久久久日韩特色特黄AAAA| 五月丁香六月色婷| 五月婷婷久久综合| 九九色播五月丁香| 久久婷婷成人综合色怡春院| 人人操9| 五月丁香啪啪啪免费看| 婷婷色综合| 97碰久久| aV欲望人妻中文字幕| 欧美熟女乱又伦| 五月婷婷啪啪| 99啪啪| 精品久热69| 另类图片五月天激情| 97婷婷丁香五月天激情图片| 婷婷丁香成人| 琪琪理论片| 99色婷婷视频| 91热在线| 成人视频一区| 欧美色五月| 六月丁香综合| 99只有精品| 99九九99九九九视频精彩| 五月天狠狠| 97碰91| 婷婷九月丁香久久| 成人.在线日韩| 人人玩人人橾| WWW.国产| 日韩乱玛久久| 97在线日韩| 99热99re6国产在线播放| 激情综合久久| 色婷婷欧美在线| 国产成人网址| 五月婷婷激情色情网| 九九热免费视频| 五月激情婷婷开心五月| 久久99网址| 99热这里是精品| 99er精品视频| 婷婷五月天色网久| 人妻久久久久久久久妻久久久久久久久| 97人人干视频| 亚洲黄色影视| 亚洲综合成人网| 五月丁香六月婷婷无码| 亚洲99视频| 五月婷婷狠狠干| 婷婷丁香无码专区| 影音先锋女人AA鲁色资源 | 天天艹夜夜爽| 日韩色色小视频| 久久99久久久| 婷婷日本在线| 日操夜操天天操不卡| 五月丁香六月激情综合| AV在线中文| 色色AV色色色东莞| 极品五月天| 色五月开心婷婷| 婷婷综合亚洲| 色综合综合色| 亚洲六月婷婷| 婷婷狠狠操| 丁香激情五月天| 双性美人被调教到喷水A片| PORNY九色9l自拍视频成人| se99视频| 欧美激情综合五月色丁香| 六月丁香五月激情网| 97碰在线视频| 婷婷激情中文综合| 人妻性爱| 狠狠干在线视频| 久久最新色色色| 1024人妻| 77799热| 婷婷九月色| 国产激情AV| 99在线视频播放| 成人资源在线| 超碰操网| 久久久com| 99色干| 久久久久久久97| 亚洲AV人人操| 色五月综合网| 青青操绿aaa一区日v| 激情另类综合| 五月丁香激情六月| www.99热视频| 久9久9久9久9久9久9| 色婷婷六月天| 天天干天天做| 丁香五月婷婷综合啪啪| 一起操 91N.com| 婷婷色五月天色色| 99九九热在线观看| 久久中文人妻系列| 天天cha成人综合网| 婷婷五月天色播| 五月婷婷久久爱| 国产黄色大片| 双性美人被调教到喷水A片| 99网99热| 一区二区三区四区无码| 九九国产精视频| 开心五月天激情网| 国产又黄又爽又激情不遮挡视频在线观看| 97影院一级片| 婷婷综合在线视频| 操日本99| 久碰视频| 另类天堂| 狠狠爱婷婷爱| 五月天激情小说欧美激情| 亚洲 激情 中文| 日韩久久视频| 九月av| 九九色婷婷五月天| 亚洲va综合va国产va中文| 99re在线视频| 激情图片五月天| 99re这里只有精品首页| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 中字幕视频在线永久在线观看免费 | 97碰久久| 丁香五月天BBw| 免费婷婷| 色婷婷亚洲综合天堂| 欧美色色色色色色色色色色| www.色窝| WWW久久久| 日本不卡一区二区三区| 综合久久五月天| 亚洲99视频| 97色热| 99ri在线视频| 综合五月丁香六月婷婷| 五月婷婷综合色拍| 大香网伊人久久综合| 4438亚洲欧美| 激情综合网络插| 99精品小视频| 丰满少妇乱A片无码| 丁香色成人| 天堂婷婷丁香六月网| 婷婷久久精品| 69久久久| 日韩av干| 国产精品18久久久| 久99久视频| 国产精品日韩十五区| 天天操天天插| 成人视频一区| 成人av播放| 国产欧美大香蕉一区| 久久在这里有精品| 精品久久艹| 亚洲色综久久五月| 亚洲国产va| 大香蕉久久| 欧美色宗和激情| 成人免费va| 99国产精品白浆在线观看免费 | 九九综合网色全集 | 站长推荐无码播放| 五月色婷婷夜色| 五月色情婷婷开心五月色情| 伊人激情影院| 97人人干| 激情开心五月天| 99热主页日本| 九九黄色网| 激情四射婷婷| 热99精品视频五月| 色婷婷狠| 色婷婷在线播放| 天天日日人| 思思综合热| 久热这里只有精品视频免费观看| 大香蕉久久婷婷精品综合| 日韩性视频| 九九综合色| 婷婷免费无视频| 五月天婷婷丁香六月| 亚洲操操操| 影音先锋一区二区三区| 亚洲精品久久久无码| 影音先锋AV资源男人站| 综激情网| 97色伦另类图片小说视频 | 九九99一区| 亚洲天堂啪啪| 天天做天天爱天天高潮| 色婷婷成人久久| 91尤物九色在线| 五月婷高清视频| 日本久久爱| 天天肏夜夜肏| 99人人爽| www.99视频| 91人妻视频| 九九在线精点品| 超碰免费人人| 色婷av| 色很很96| 色婷婷六月丁香综合欲精品| 五月丁香五月综合欧美| 另类国产欧美视频| 99热福利| 婷婷六月激情| 疯狂做受XXXX高潮A片| 九色PORNY在线精品酒店| 99色精品视频| 久99久在线| 亚洲欧州色情在线观看| 九九热在线精品视频| 最新婷婷五月丁香| 五月天丁香六月综合| 五月丁香花婷婷玉莉AV| 九九亚洲| WWW久| 青青草蜜臀| 超碰com| 综合网精品99| 天堂婷婷五月在线| 97热这里精品在线视频| 亚洲第一成人AV| 六月丁香啪啪| 五月天婷婷丁香导航| 中文字幕无线久必| 激情深爱综合| 日韩999| 婷婷五月六月丁香综合| 九九热视频在线观看| 月色色综合婷婷网| 久久久久婷婷五月热综合| 日韩精品一区二区亚洲AV观看 | 丰滿爆乳一区二区三区| WWW.激情| www.五月婷婷| 二级黄色毛片| 婷婷五月天六点丁香五月| www.zbzhongsen.com| 婷婷综合亚洲| 91啪啪网| 99热热热国产超碰| 五月婷婷在线播放| 大香蕉视频婷婷| 婷婷 激情 五月| 草草视频91| 97碰碰在线观看视频| 日本狠狠干| 婷婷五月色综合| 丁香五月影院| 色哟哟性爱av| 99热这里只有精品5| 人人操婷婷| 五月色天五月色| 欧美日韩成人| 思思久ren热| 久久久久久97| 天堂网啪啪| 色五月婷婷在线观看| 狠狠爱婷婷五月天| 韩国三级五月天婷婷。| 色99在线观看| 日本情色一区二区| 婷婷久久草| 色色草97| 天天摸天天舔| 综合色网站| 色婷婷激情四射视频| 日本97在线看片| 亚洲婷婷激情五月天| 任你搞免费视频观看| 五月激情综合深爱| 五月色亭丁香| 深爱开心激情| 婷婷五月18永久免费网站| 久久五月激情| 丁香五月成人丝袜| 五月婷婷偷拍| 99热超碰在线| 亚洲精品色| 一區四區歐美日韓| 69凹凸成人综合网| 激情五月,色播五月| 久热这里只有| av人人操| 欧美成人精品老美女噜噜噜| 五月激情婷婷女| 丁香六月亚洲综合| 丁香五月在线观看完整版| 9999色色色色| 婷婷五月天在线综合| 激情综合色| 丁香五月久久| 婷婷五月激情的图片| 欧洲色色| 成 久久| 欧美A片在线视频免费观看| 五月丁香激情婷婷| xx久久| 六月丁香激情网| 久久丁香五月婷婷激情综合网| 国产午夜精品一区二区三区四区| 亚洲一区二区无码蜜乳av| 99热欲| 日本在线视频播放91| 久久这里只精品66| 色色色色色九九九九九| 婷婷五月天小说| 激情五月综合| 91夫妻网站九色| 五月婷婷丁香| 99久久a线观| 九 九九九AV| 人妻人人操| 激情五月网站| 色呦呦美女| 一点色成人网| 第四色五月婷婷| 五月婷婷免费在线| 五月婷久久久久综合| 婷婷激情五月| 日本狠狠爽| 99热高清在线| 夫妇交换刺激做爰| 任你操精品免费| 女人天堂av| 991精品在线视频| 丁香激惜男女| 黄色一极大片| 大战熟女丰满人妻AV| 狠狠干五月天| 五月激激网w'w'w| 色播五月天婷婷老师| 激情五月婷婷| 五月天伊人久久久久| 欧洲精品欧洲情| 色情五月| 熟女少妇内射日韩亚洲| 9精品在线| 亚洲激情免费视频| 丁香五月天导航| 色九月丁香婷婷蜜桃在线观看| 久久五月综合| 99A片| 色综合xx| 九月婷婷久久久| 五月婷中文娱乐综合| 婷婷色五月激情| 国产精品电影网| 日撸夜撸日操| 日日干日日色| AV成人在线播放| 天天综合网~91| AAA久久| 六月婷婷啪啪| 99热这里有精力| 2023天天日夜夜爽| 亚洲成人综合在线| 激情九月婷婷| 五月天天久久香| 激情小说 五月天| 五月婷婷综合激情| 成人在线日韩| 色综合久久综合中文综合网| 青青草原爱爱网| 九九九九精品精| 丁香五月激情综合| 婷婷的99视频网站| 亚洲婷婷欧美婷婷| 天天操天天操天天操天天操天天操天天操| 色色色在线免费视频| 国产操碰| 婷婷丁香激情综合色情| 中文字幕亚洲-区久久99婷婷| 女人高潮内射99精品| 99热日本| 欧洲综合视频| 少妇性按摩无码中文A片| 亚洲aV写真天天综合网久久| 五月激情黄色小说| 久久久99精品| 99er在线观看| 丁香五月性| 狠狠做深爱婷婷久久综合一区| 丁香五月婷老师| 夜夜撸日日骑| 久久精品亚洲一级牲爱综合| 欧美成人热| 久久久思思热| 丁香六月狠狠| 五月婷婷五月丁香综合| 激情婷婷五月久久| 久久亚洲网| 久久人妻爱爱| 五月色导航| 五月婷婷六月激情网| 国产淫熟妇| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 久久精品9| 97干免费视频| 久久xxxx| 五月婷婷中文字幕| 99视频只有精品| 狠狠插狠狠插| 一本大道嫩草AV无码专区| 天堂成人A片永久免费网站| 99国产精品久久久久久久久久久| 伊人色综合网| BBWCUCKOLD精品熟妇 | 99热官网| 精品爱欲五| 色五月丁香91| 绿色小导航AV| 色婷婷丁香九月| 91干视频| 多精窝99在线视频| 精品少妇蜜臀91| www.操逼comm| 99热无码首页| 2017狠狠干| a在线观看| 这里只有精品在线播放| 婷婷五月天激情综合深爱| 久久性爱视频久久性爱视频| 天天爽天天| 亚洲精品午夜国产va久久成人| 99亚洲视频| 久久99国产综合精品免费 | 婷婷九色| 影音先锋色婷婷| 噜综合| 手机看片日日做夜夜| 狠狠色噜噜| 日本激情91| 久久五月丁香| 99日热在线视频| 涩九九九九| 激情六月下句是什么| 开心激情站婷婷五月天| 色综合久久88色综合天天99| 老师的粉嫩小又紧水又多A片视频| 日日噜噜久久婷婷五月天| av九九| 性日本精品| 九九热这里只有精品6| 激情五月天.色网| 久色激情| 色婷婷丁香六月| 99热色综合| 九九热最新视频| 五月丁香六月婷婷网站| 色色色色色色色色五月先| 激情五月黄色| 26UUU欧美| 夜夜夜叫天天天做| 亚州色色色| 五月天婷婷基地| 9一精品视频观看| 五月丁香久久综合| www.99热这里只有精品| 5月丁香啪啪啪| 色婷综合| 4399在线观看免费高清电视剧| 久久五月综合| 精品久久人妻| 99资源在线| 天天激情视频| 久久五月婷| 99这里是精品| 久久综合人妻| 日韩久久欧亚| 色婷婷成人在线| 欧美啪啪9| 亚洲AV影片在线观看| 国产亚洲99久久| 99精品在| 玖玖资源在线视频| 丁香六月婷婷色XXXXX| 狠狠香婷婷五月| 婷婷五月激情六月| 草草色情综合网| 欧美噜噜噜草| 久久美女五月天| 四季8848精品成人免费网站| 色五月天激情| 五月婷婷激情久久| 亚洲精品久久久久久久久久飞鱼| 大香蕉啪啪| 人人爱国产| 亚洲日本韩国| 9.1综合网| 色狠狠999综合| 天天肏视奸| 婷婷亚洲五月丁香综合在线| 婷婷伊人网| 亚洲五月花| 天天做天天爱天天爽在| 99热综合在线| 丁香五月综合高清在线| 久久婷色| 色情综合| 色婷婷AV久久| 激情综合5| 久久婷婷人人| 久久9热综合| 狠狠色综合五月| 99国产精品白浆在线观看免费| 婷婷五月激情欧美| 久久99精品久久久久久三级| 激情色五月天| 99热骚货| 精品国产一区二区三区四区阿崩| 色丁香五月天射婷婷爱婷婷| 五月天激情四射| 丁香五月婷婷偷拍| 五月丁香色色网| www.五月天| 亚洲在线播放| 五月婷婷丁香六月| 庭庭久久内射| 婷婷中文字幕| 夜夜躁狠狠| 国产人妻777人伦精品HD| Va另类视频| 日本玖玖在线| 天天色粽合合合合合合合| 大香蕉久久草| 天天狠狠夜夜狠狠2023| 99热6这里之有精品| 99视频| 夜丁香五月婷婷| 色婷婷久久视屏| 综合另类视频| 久久婷婷激情五月天一区二区| 丁香六月天| 五月停停丁香| 五月丁香成年黄色| 天天色宗合| 五月丁香六月婷婷中合网| 97久久婷婷色| 久久久久人妻| 性爱先锋AV| 性按摩玩人妻HD中文字幕| 丁香久久久| av在线免费网站| 天天色综网| 亚洲欧洲自拍图片专区五月天| 在线超碰免费| 婷婷狠狠18禁久久| 青草性爱视频| 久久日婷婷| 色情丁香五月婷婷精品| 99 频99热国里只有精品| www.ywav| 五月婷精品| 色开心五月婷婷丁香HD| 五月天丁香成人| 日韩砖区| 久久久久久久久久婷婷| 激情五月天丁香| 久久这里只有精品16| 综合激情肏逼网| 九九色逼| AAAA网站| 丁香五月天激情婷婷丁香六月| 九色亚洲| 操人91| 1010日日无码| 欧美久久婷婷| 久久五月婷综合| 超碰成人在线观看| 婷婷五月天伊人网在线观看视频| 日韩一级网站| 欧美槡BBBB槡BBB少妇| 六月丁香激情| 亚洲丁香五月深爱五月| 在线资源av-超碰中文在线-成人AV| 丁香婷婷啪啪| 99视频精品在线| ri电影在线| 在线视频激情网站| 中文字幕精品无码一区二区| 极品另类| 天天综合亚洲综合| 久久婷婷激情| 欧美日韩精品一区二区三区钱| 99亚洲天堂| 99在线精品免费视频| 激情五月天在线观看色婷婷| 色色网91| 爽tv | 久草五月| 色婷婷五月天激情在线观看| 色青青五月| 色色激情网| 五月丁香A片| 成人综合网站| 色婷婷基地| 久久怕怕视频| 天天干天天色天天干| a色色色色色| 三级毛片7979| 九九色video| 国产乱妇无乱码大黄AA片| 熟女激情网| 丁婷婷五月天在线播放| 激情五月综亚网| 五月婷婷六月丁香| 色播播婷婷| 99九九99九九九视频精品| 无码人妻少妇色欲AV一区二区| 91九色丨国产丨爆乳| www.com五月天| 97色射| 免费无码毛片一区二区A片 | 超碰99在线观看| 综合久久99| 99热日韩| 亚洲精品五月| 日韩五月天婷婷| 五月婷五月婷伊人伊人五月婷| 成人午夜免费电影| 日本欧美啪啪| 婷婷中文综合网| 亚洲中字AV电影在线网站| 色婷婷丁香五月天| 亚洲久久激情| 婷婷色在线| 色综合激情| 天天色丁香| www,com,五月色色| 天天天天操| 丁香六月五月天| 五月婷婷第四色| 5月婷婷激情网| 色色色色网色色网色色| 思思热久久婷婷五月天| 亚洲婷婷六月天| 全国最新疫情| 日本成人噜噜噜噜噜| 色婷婷综合五月| 情情五月天色| 思思热在线精品视频网站| 丁香五月老师| www色哟哟| 婷婷综合在线网| 97成人在线视频| 日本nghangse中文字幕| 色色热日| 五月丁香888| 91九色欧美| 婷婷综合色图| 国产婷婷色五月| 99re思思| 成人婷婷五月天| 97色伦另类图片小说视频 | 色八戒操婷婷| 91热久| 97热九九| 久久久久激情| 婷婷丁香社区网| 99热久只有| 丁香久久五月天视频在线观看| 色情五月天首页| 五月天色视频| 亚洲最大激情无码| 99超级碰碰| 精品久久99码| 4399成人黄A片| 亚洲第一成人无码A片| 久久99久久99久久99| 久久无意婷婷| 婷婷激情六月综合| 亚洲综合激情五月久久| 亚洲成人影视在线观看| www.俺去也com| 色丁香五月天射婷婷爱婷婷| 婷婷中文字暮| 婷婷97狠狠成人网站| 深爱五月天| 丁香五月激情澎湃一区| 婷婷综合| 久久视频婷婷| 丁香五月狠狠在线观看| 中文字幕 中文字幕明步| 几激情五月婷婷色五月色天堂| 婷婷六月开心网| 久久综合五月天| www亚洲无码| 老妇六区| 99超级碰免费视频| 夜夜 操无码| www.99热这里精品| 丁香婷婷成人在线播放| 五月丁香好婷婷姑娘综合网| 99ri国产在线| 中文久久婷婷| 婷婷丁香五月天操逼| 免费三级黄色| 极品人妻VIDEOSSS人妻| 五月婷在线观看| 六月丁香啪啪啪| 天天色色天天| 就爱射中文字幕资源网| 色婷婷最爱五月| 99国产er热视频| 99久.| 97极品在线| 久久国产高清| 国产亚洲成人综合| 狠狠色丁香乆乆| 99色爱| 亚洲V国产V欧美V久久久久久| 噜噜视频| 久久XX| 9久精品| 久热成人| 超碰在线成人| 五月婷精品| 超碰激情网| 色色色国产| 五月天婷婷av| 五月天综合久久| 久久视频婷婷视频| 日夜操B| 久久99网站| 99亚洲精品视频| 日韩色色视频| 丁香五月久久| 国产精品VIDEOSSEX久久发布| 五月丁香啪啪| 国产真人做爰视频免费| 欧洲MV日韩MV国产| 一级操逼大片| 天天射天天操天天干| 久久男人网婷婷| 久久久久久久久久久久久久久久久精典| 色噜噜狠狠狠狠色综合久欧美| 182无码| 婷婷久久婷婷| 视频1区2区| 亚洲无线视频| 五月丁香婷婷色| 梁铮版《蜘蛛女侠》在线| 婷婷五月激情基地| 亚洲丁香网| 99热色精品| 91丨九色丨高潮丰满日本| 九九热精品| 久久视频在线视频| 91人妻人人操| 第四色大香蕉| 五月丁香啪啪激情| 天天搞夜夜六| 战争与艾拉电影免费观看| 人妻操逼视频| 99在线热| 性无码专区无码| 婷婷日本在线| 99热这里都是精品| 国产精品久久在线观看技巧| 岛国av电影网站| 五月丁香六月激情| 久草热在线视频| 久草丁香婷婷1024| 久操97| 超黄亚洲瑟瑟网站| 99热日韩| 九九综合精品| 亚洲精品一区中文字幕乱码| 99热6色| 婷婷五日b| www.国产色| 9久视频| 中文字幕婷婷9月天| 日韩精品电影| 婷婷激情五月天综合| 99热在线免费| 精品久久99| 激情综合网婷婷五夜| 超碰日日操| 激情丁香网| WWW.99视频| 草了bav视频在线观看| 丁香五月网| 国产六月婷婷| 大香蕉久热| 五月天激情色色| 色综合久久天天综合网| 五月婷婷花| 99九九精品| 91av无码| 色七色九九| 色婷婷偷拍| 婷婷最新地址| 激情视频网址| 婷婷五月天综合久久| 狠狠干综合| 色婷婷先锋| 激情综合网 激情五月天| 丁香五月欧美成人| 丁香五月色激情| 亚洲中文丁香| 丁香五月天婷婷激情| 91人久| 五月婷婷大香蕉| 国产婷婷五月在线视频| 国产69久久久欧美黑人A片| 91chinese 在线| 六月婷婷亚洲| 日韩一级片| 亚洲在线资源| 九九精品热| 婷婷在线网| 国产噜一噜天天噜| 成人版视频在线观看| 婷婷五月日本| 99aese| 操91| 丁香五月综合| 久热99热| 亚洲成Av人片乱码色第1集| 草婷婷在线| 久久九九综合| 狠狠干狠狠色| av色婷婷| 日本女人久久| 婷婷丁香18| 大香蕉久久久久久久久| 丁香激情六月天婷婷| 五月婷婷激情网| 亚洲天堂久久| 激情综合五月天| 日本99色| 青青草五月天| 欧美婷婷综合网| 人人爽欧美婷婷久久久五月丁香| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 狠狠色丁香婷婷基地| 五月婷婷成人| 九九Av| 九九色精品| 超碰人人操人人干| 成人五月天丁香| 亚洲婷婷丁香| 99热主页日本| 久99视频在线观看| 综合久久综合久久| 狼友视频在线观看18| 婷婷97碰碰| 五月天天堂久久| 97干网站| 日韩欧美颜射| 人妻内射视频| 日韩高清久久| 思思久久99| 天天色天天爱天天爱天天爱y| 九九这里只有精品在线视频| 丁香五月停停av| 五月开心激情|