精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

AdaBoost分類器完全圖解

譯文 精選
人工智能
在本文中,我們將詳細探討AdaBoost算法是如何進行預測的。我們將會看到AdaBoost算法能夠通過結合有針對性的弱學習器來增強力量,就像將有針對性的鍛煉變成全身力量的鍛煉程序一樣。

譯者 | 朱先忠

審校 | 重樓

本文將通過完整的源碼與圖解方式向你展示AdaBoost算法運行邏輯,并指出其優點與不足,還將其與隨機森林算法進行對比分析。

簡介

每個人都會犯錯,即使是機器學習領域最簡單的決策樹也存在這個問題。AdaBoost(自適應增強)算法不會忽略這些錯誤,而是會做一些不同的事情:它會從這些錯誤中學習(或適應)以變得更好。

與一次生成多棵樹的隨機森林不同,AdaBoost算法從一棵簡單的樹開始,并識別它錯誤分類的實例。然后,它會構建新的樹來修復這些錯誤,從錯誤中學習,并在每一步中變得更好。

在本文中,我們將詳細探討AdaBoost算法是如何進行預測的。我們將會看到AdaBoost算法能夠通過結合有針對性的弱學習器來增強力量,就像將有針對性的鍛煉變成全身力量的鍛煉程序一樣。

作者本人使用Canva Pro創建(針對移動設備進行了優化;在桌面PC上可能顯得過大)。

定義

AdaBoost算法是一種集成機器學習模型,它能夠創建一系列加權決策樹,通常使用淺樹(通常只是單層“樹樁”)來實現。每棵樹都在整個數據集上進行訓練,但采用了自適應樣本權重,使先前分類錯誤的樣本更加重要。

對于分類任務,AdaBoost通過加權投票系統組合樹,其中表現更好的樹在最終決策中具有更大的影響力。

該模型的優勢來自其自適應學習過程——雖然每棵簡單的樹可能都是“弱學習器”,其表現僅略優于隨機猜測,但樹的加權組合創造了一個“強學習器”,可以逐步關注和糾正錯誤。

AdaBoost是增強算法系列的一部分,因為它一次構建一棵樹。每棵新樹都會嘗試修復先前樹所犯的錯誤。然后,它使用加權投票來組合它們的答案并做出最終預測。

測試數據集

在本文中,我們將重點介紹經典高爾夫數據集作為分類的樣本。

各列含義:“Outlook(展望)”——獨熱編碼為3列、“Temperature(溫度)”——華氏度、“Humidity(濕度)”——百分比、“Windy(有風)——(是/否)和“播放(Play)”——是/否,代表目標特征。

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
# 創建和準備數據集
dataset_dict = {
    'Outlook': ['sunny', 'sunny', 'overcast', 'rainy', 'rainy', 'rainy', 'overcast', 
                'sunny', 'sunny', 'rainy', 'sunny', 'overcast', 'overcast', 'rainy',
                'sunny', 'overcast', 'rainy', 'sunny', 'sunny', 'rainy', 'overcast',
                'rainy', 'sunny', 'overcast', 'sunny', 'overcast', 'rainy', 'overcast'],
    'Temperature': [85.0, 80.0, 83.0, 70.0, 68.0, 65.0, 64.0, 72.0, 69.0, 75.0, 75.0,
                   72.0, 81.0, 71.0, 81.0, 74.0, 76.0, 78.0, 82.0, 67.0, 85.0, 73.0,
                   88.0, 77.0, 79.0, 80.0, 66.0, 84.0],
    'Humidity': [85.0, 90.0, 78.0, 96.0, 80.0, 70.0, 65.0, 95.0, 70.0, 80.0, 70.0,
                 90.0, 75.0, 80.0, 88.0, 92.0, 85.0, 75.0, 92.0, 90.0, 85.0, 88.0,
                 65.0, 70.0, 60.0, 95.0, 70.0, 78.0],
    'Wind': [False, True, False, False, False, True, True, False, False, False, True,
             True, False, True, True, False, False, True, False, True, True, False,
             True, False, False, True, False, False],
    'Play': ['No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'Yes',
             'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'No', 'No', 'Yes', 'Yes',
             'Yes', 'Yes', 'Yes', 'Yes', 'No', 'Yes']
}
# 準備數據
df = pd.DataFrame(dataset_dict)
df = pd.get_dummies(df, columns=['Outlook'], prefix='', prefix_sep='', dtype=int)
df['Wind'] = df['Wind'].astype(int)
df['Play'] = (df['Play'] == 'Yes').astype(int)

# 重新安排各列
column_order = ['sunny', 'overcast', 'rainy', 'Temperature', 'Humidity', 'Wind', 'Play']
df = df[column_order]

# 準備特征和目標
X,y = df.drop('Play', axis=1), df['Play']
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.5, shuffle=False)Main Mechanism

AdaBoost算法主要機制

AdaBoost算法的工作原理如下:

  • 初始化權重:為每個訓練樣本分配相同的權重。
  • 迭代學習:在每個步驟中,訓練一個簡單的決策樹并檢查其性能。錯誤分類的樣本獲得更多權重,使其成為下一棵樹的優先級。正確分類的樣本保持不變,所有權重都調整為總和為1。
  • 構建弱學習器:每個新的簡單樹都針對前幾棵樹的錯誤,創建一系列專門的弱學習器。
  • 最終預測:通過加權投票合并所有樹,其中每棵樹的投票都基于其重要性值,從而為更準確的樹提供更大的影響力。

AdaBoost分類器使用許多簡單的決策樹(通常為50~100棵)進行預測。每棵樹稱為“樹樁”,專注于一個重要特征,如溫度或濕度。最終預測是通過合并所有樹的投票做出的,每個投票都根據該樹的重要性(“alpha”)加權。

訓練步驟

在這里,我們將遵循SAMME(使用多類指數損失函數的分階段加性建模)算法,這是scikit-learn庫中處理二分類和多類分類的標準方法。

1.1.決定要使用的弱學習器。其中,單級決策樹(或“樹樁”)是默認選擇。

1.2.決定要構建多少個弱學習器(在本例中為樹的數量)(默認值為50棵樹)。

我們從深度為1的決策樹(樹樁)開始作為弱學習器。每個樹樁只進行一次分割,我們將按順序訓練其中的50個,并在此過程中調整權重。

1.3.開始時,為每個訓練樣本賦予相同的權重:

  • 每個樣本的權重=1/N(N是樣本總數)
  • 所有權重加起來為1

所有數據點的權重都相同(0.0714),總權重加起來為1。這確保在訓練開始時每個樣本都同等重要。

對于第一棵樹

2.1.在考慮樣本權重的同時構建決策樹樁

在進行第一次分割之前,算法會檢查所有數據點及其權重,以找到最佳分割點。這些權重會影響每個樣本在進行分割決策時的重要性。

計算根節點的初始加權基尼不純度

算法計算根節點的基尼不純度分數,但現在考慮所有數據點的權重。

對于每個特征:

  • 按特征值對數據進行排序(與決策樹分類器完全相同)

對于每個特征,算法都會對數據進行排序并識別潛在的分割點,與標準決策樹完全相同。

對于每個可能的分割點:

  • 將樣本分成左組和右組
  • 計算兩個組的加權基尼不純度
  • 計算此分割的加權基尼不純度減少量

該算法計算每個潛在分割的加權基尼不純度并將其與父節點進行比較。對于分割點為0.5的特征“sunny”,此不純度減少量(0.066)顯示了此分割對數據分離的改善程度。

選擇提供最大基尼不純度減少量的分割

在檢查所有可能的分割特征后,“overcast”列(分割點為0.5)提供最高的不純度減少量0.102。這意味著它是分離類別的最有效方法,使其成為第一次分割的最佳選擇。

d. 使用此決策創建一個簡單的單分割樹

使用找到的最佳分割點,算法將數據分成兩組,每組保留其原始權重。這個簡單的決策樹故意保持較小和不完美,使其略優于隨機猜測。

2.2.評估這棵樹有多好

a. 使用樹預測訓練集的標簽。

b. 將所有錯誤分類的樣本的權重相加以獲得錯誤率。

第一個弱學習器對訓練數據進行預測,我們檢查它在哪里犯了錯誤(標記為X)。0.357的錯誤率表明這棵簡單的樹對一些預測有誤,這是預料之中的,并將有助于指導接下來的訓練步驟。

c. 使用以下方法計算樹重要性(α):

α = learning_rate × log((1-error)/error)

我們使用錯誤率計算樹的影響力得分(α = 0.5878)。分數越高意味著樹越準確,這棵樹因其良好的性能獲得了中等重要性。

2.3.更新樣本權重

a. 保留正確分類樣本的原始權重。

b.將錯誤分類的樣本的權重乘以e^(α)。

c. 將每個權重除以所有權重的總和。此歸一化可確保所有權重的總和仍為1,同時保持其相對比例。

樹出錯的情況(標記為X)在下一輪中獲得更高的權重。增加這些權重后,所有權重均被歸一化為總和為1,確保錯誤分類的樣本在下一棵樹中得到更多關注。

對于第二棵樹

2.1.構建新的樹樁,但現在使用更新后的權重

a. 計算根節點的新加權基尼不純度:

  • 將會有所不同,因為錯誤分類的樣本現在具有更大的權重
  • 正確分類的樣本現在具有更小的權重

使用更新后的權重(其中錯誤分類的樣本現在具有更高的重要性),算法計算根節點的加權基尼不純度。這開始了構建第二棵決策樹的過程。

b. 對于每個特征:

  • 使用與之前相同的過程,但權重已更改。

c. 選擇具有最佳加權基尼不純度減少的分割。

  • 通常與第一棵樹的分割完全不同。
  • 關注第一棵樹錯誤的樣本。

使用更新后的權重,不同的分割點顯示出不同的有效性。請注意,“overcast(陰天)”不再是最佳分割——算法現在發現溫度(84.0)可以最大程度地減少不純度,從而顯示權重變化如何影響分割選擇。

d.創建第二個樹樁。

使用溫度≤84.0作為分割點,算法根據哪個類在該組中的總權重更大,而不是僅通過計算樣本,為每個葉子分配YES/NO。這種加權投票有助于糾正前一棵樹的錯誤。

2.2.評估這棵新樹

a.用當前權重計算錯誤率。

b.使用與之前相同的公式計算其重要性(α)。

2.3.再次更新權重——相同的過程(增加錯誤權重,然后歸一化)

第二棵樹的錯誤率(0.222)和重要性得分(α=1.253)比第一棵樹低。和以前一樣,錯誤分類的樣本在下一輪中獲得更高的權重。

對于第三棵樹及以后的所有剩余樹

重復上述步驟2.1-2.3。

該算法按順序構建50棵簡單決策樹,每棵都有自己的重要性得分(α)。每棵樹通過關注數據的不同方面從以前的錯誤中學習,從而創建一個強大的組合模型。請注意,有些樹(如樹2)在表現更好時會獲得更高的權重分數。

第3步:組合到一起

3.1.保留所有樹及其重要性分數

50棵簡單決策樹作為一個團隊一起工作,每棵都有自己的重要性分數(α)。在進行預測時,具有較高α值的樹(如樹2的1.253)對最終決策的影響比分數較低的樹更大。

from sklearn.tree import plot_tree
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import plot_tree
import matplotlib.pyplot as plt

#訓練AdaBoost算法
np.random.seed(42)  # 可重復性
clf = AdaBoostClassifier(algorithm='SAMME', n_estimators=50, random_state=42)
clf.fit(X_train, y_train)

# 為樹1、2和50創建可視化形式
trees_to_show = [0, 1, 49]
feature_names = X_train.columns.tolist()
class_names = ['No', 'Yes']

#設置繪圖
fig, axes = plt.subplots(1, 3, figsize=(14,4), dpi=300)
fig.suptitle('Decision Stumps from AdaBoost', fontsize=16)

#繪制每棵樹
for idx, tree_idx in enumerate(trees_to_show):
    plot_tree(clf.estimators_[tree_idx],
              feature_names=feature_names,
              class_names=class_names,
              filled=True,
              rounded=True,
              ax=axes[idx],
              fontsize=12)  #增加字體大小
    axes[idx].set_title(f'Tree {tree_idx + 1}', fontsize=12)

plt.tight_layout(rect=[0, 0.03, 1, 0.95])

每個節點將其“值”參數顯示為[weight_NO, weight_YES],表示該節點上每個類型的加權比例。這些權重來自我們在訓練期間計算的樣本權重。

測試步驟

為了預測,需要:

  1. 獲取每棵樹的預測值。
  2. 將每個預測值乘以其權重得分(α)。
  3. 將它們全部加起來。
  4. 總權重較高的類型將是最終預測結果。

在預測新數據時,每棵樹都會做出預測并將其乘以其權重得分(α)。最終決定來自將所有加權投票相加。在這里,NO類型獲得更高的總分(23.315相對于15.440),因此模型預測這個未見過的樣本為NO。

評估步驟

構建完所有樹后,接下來,我們就可以進行測試集評估了。

通過迭代訓練和加權弱學習器以關注錯誤分類的樣本,AdaBoost創建了一個強大的分類器,可實現高精度——通常比單個決策樹或更簡單的模型更好!

#獲得預測結果
y_pred = clf.predict(X_test)

#使用實際值和預測值創建數據幀
results_df = pd.DataFrame({
    'Actual': y_test,
    'Predicted': y_pred
})
print(results_df) # 顯示結果數據幀

# 計算和顯示精度
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print(f"\nModel Accuracy: {accuracy:.4f}")

關鍵參數解釋

以下是AdaBoost算法的關鍵參數解釋(特別是在scikit-learn庫中提供的那些):

estimator(估計器)

這是AdaBoost用來構建最終解決方案的基本模型。三個最常見的弱學習器是:

  • 深度為1的決策樹(決策樹樁):這是默認且最受歡迎的選擇。由于它只有一個分割,因此它被認為是一種非常弱的學習器,比隨機猜測略好一點,這正是提升過程所需要的。
  • 邏輯回歸:邏輯回歸(尤其是高懲罰)也可以在這里使用,即使它并不是真正的弱學習器。它可能對具有線性關系的數據有用。
  • 深度較小的決策樹(例如深度2或3):這些比決策樹樁稍微復雜一些。它們仍然相當簡單,但可以處理比決策樹樁稍微復雜一些的模式。

AdaBoost的基礎模型可以是簡單的決策樹樁(深度=1)、小型樹(深度2-3)或懲罰線性模型。每種類型都保持簡單以避免過度擬合,同時提供不同的方法來捕獲模式。

n_estimators

要組合的弱學習器的數量,通常約為50-100;當這個值超過100時很少有更好的效果。

learning_rate

控制每個分類器對最終結果的影響程度。常見的起始值為0.1、0.5或1.0。較低的數字(如0.1)和稍高的n_estimator通常效果更好。

與隨機森林算法的主要區別

由于隨機森林和AdaBoost都適用于多棵樹,因此很容易混淆所涉及的參數。關鍵區別在于隨機森林獨立組合多棵樹(裝袋),而AdaBoost一棵樹接一棵樹地構建樹以修復錯誤(提升)。以下是關于它們之間的差異的其他一些細節:

  • 沒有bootstrap參數,因為AdaBoost使用所有數據,但權重會發生變化
  • 沒有oob_score參數,因為AdaBoost不使用bootstrap放回抽樣
  • learning_rate變得至關重要(隨機森林中不存在)
  • 與隨機森林的較深樹不同,樹的深度通常保持得很淺(通常只是樹樁)
  • 關鍵之處從并行獨立樹轉移到順序依賴樹,這使得n_jobs等參數不那么重要

AdaBoost算法的優點與缺點

優點:

  • 自適應學習:AdaBoost通過賦予其所犯錯誤更多權重而變得更好。每棵新樹都會更加關注它出錯的困難情況。
  • 抵抗過度擬合:盡管它不斷逐一添加更多樹,但AdaBoost通常不會過于專注于訓練數據。這是因為它使用加權投票,因此沒有一棵樹可以過多地控制最終答案。
  • 內置特征的選擇:AdaBoost自然會找到最重要的特征。每棵簡單樹都會為該輪選擇最有用的特征,這意味著它在訓練時會自動選擇重要特征。

缺點:

  • 對噪聲敏感:由于它更重視錯誤,AdaBoost可能會在處理混亂或錯誤的數據時遇到麻煩。如果一些訓練樣本帶有錯誤標簽,它可能會過于關注這些不好的樣本,從而使整個模型變得更糟。
  • 必須是連續的:與可以同時訓練多棵樹的隨機森林不同,AdaBoost必須一次訓練一棵樹,因為每棵新樹都需要知道之前的樹的表現。這使得訓練速度變慢。
  • 學習率敏感性:雖然它比隨機森林需要調整的設置更少,但學習率確實會影響它的效果。如果學習率太高,它可能會過于精確地學習訓練數據。如果學習率太低,它需要更多的樹才能正常工作。

結語

AdaBoost是一種關鍵的增強算法,許多新方法都從中吸取了教訓。它的主要思想——通過關注錯誤來變得更好——幫助塑造了許多現代機器學習工具。雖然其他方法都試圖從一開始就做到完美,但AdaBoost卻試圖表明,有時解決問題的最佳方法是從錯誤中學習并不斷改進。

AdaBoost在二元分類問題中以及數據干凈時也最有效。雖然隨機森林可能更適合更一般的任務(如預測數字)或混亂的數據,但AdaBoost在正確使用時可以產生非常好的結果。這么多年后人們仍在使用它,這一事實表明其核心思想有多好用!

AdaBoost分類器代碼歸納

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier

# 創建數據集
dataset_dict = {
    'Outlook': ['sunny', 'sunny', 'overcast', 'rainy', 'rainy', 'rainy', 'overcast', 
                'sunny', 'sunny', 'rainy', 'sunny', 'overcast', 'overcast', 'rainy',
                'sunny', 'overcast', 'rainy', 'sunny', 'sunny', 'rainy', 'overcast',
                'rainy', 'sunny', 'overcast', 'sunny', 'overcast', 'rainy', 'overcast'],
    'Temperature': [85.0, 80.0, 83.0, 70.0, 68.0, 65.0, 64.0, 72.0, 69.0, 75.0, 75.0,
                   72.0, 81.0, 71.0, 81.0, 74.0, 76.0, 78.0, 82.0, 67.0, 85.0, 73.0,
                   88.0, 77.0, 79.0, 80.0, 66.0, 84.0],
    'Humidity': [85.0, 90.0, 78.0, 96.0, 80.0, 70.0, 65.0, 95.0, 70.0, 80.0, 70.0,
                 90.0, 75.0, 80.0, 88.0, 92.0, 85.0, 75.0, 92.0, 90.0, 85.0, 88.0,
                 65.0, 70.0, 60.0, 95.0, 70.0, 78.0],
    'Wind': [False, True, False, False, False, True, True, False, False, False, True,
             True, False, True, True, False, False, True, False, True, True, False,
             True, False, False, True, False, False],
    'Play': ['No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'Yes',
             'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes', 'No', 'No', 'No', 'Yes', 'Yes',
             'Yes', 'Yes', 'Yes', 'Yes', 'No', 'Yes']
}
df = pd.DataFrame(dataset_dict)

#準備數據
df = pd.get_dummies(df, columns=['Outlook'], prefix='', prefix_sep='', dtype=int)
df['Wind'] = df['Wind'].astype(int)
df['Play'] = (df['Play'] == 'Yes').astype(int)

#拆分特征和目標
X, y = df.drop('Play', axis=1), df['Play']
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.5, shuffle=False)

# 訓練AdaBoost
ada = AdaBoostClassifier(
    estimator=DecisionTreeClassifier(max_depth=1), # 創建基本估計器(決策樁)
    n_estimators=50,        #典型情況下使用比隨機森林算法更少的樹
    learning_rate=1.0,      # 默認學習率
    algorithm='SAMME',      # 目前唯一可用的算法(將在未來的scikit-learn更新中刪除)
    random_state=42
)
ada.fit(X_train, y_train)

#預測和評估
y_pred = ada.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")

進一步閱讀

有關AdaBoostClassifier及其在scikit-learn中的實現的詳細說明,讀者可以參考官方文檔,其中提供了有關其用法和參數的全面信息。

本文編程技術環境

本文使用Python 3.7和 scikit-learn 1.6。雖然討論的概念普遍適用,但具體代碼實現可能會因版本不同而略有不同。

關于插圖

除非另有說明,本文所有圖像均由作者本人創建,并采用了Canva Pro的授權設計元素。

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標題:AdaBoost Classifier, Explained: A Visual Guide with Code Examples,作者:Samy Baladram

責任編輯:姜華 來源: 51CTO內容精選
相關推薦

2020-06-01 14:11:39

AdaBoost數據科學分類器

2009-02-27 13:22:00

2009-11-09 13:08:43

路由器設置

2010-02-03 15:01:33

Python 解釋器

2021-09-01 09:52:52

路由器計算機架構

2015-07-23 14:53:50

貝葉斯分類器

2023-03-16 10:20:55

CSS選擇器

2010-07-29 15:37:50

2010-09-07 13:44:14

PPPOE服務器

2017-08-04 14:23:04

機器學習神經網絡TensorFlow

2011-09-07 13:26:53

水星路由器路由器

2009-09-10 17:08:00

2011-03-14 14:47:33

路由器

2011-08-29 18:30:05

華碩路由器路由器

2011-11-11 10:35:04

2010-01-28 10:11:13

Linux 2.6公平調度器

2009-12-14 15:52:52

路由器配置

2024-12-09 09:44:34

機器學習模型分類器

2009-12-14 17:54:50

水星路由器設置

2021-11-01 07:15:36

服務器FTPFileZilla
點贊
收藏

51CTO技術棧公眾號

亚洲国产你懂的| 国产一区二区视频在线| 亚洲精品720p| 日韩av一二三四| 国产精品久久一区二区三区不卡| 欧美色网在线| 国产精品美日韩| 91精品网站| 欧美激情久久久久久久| 国产福利亚洲| 亚洲一区二区在线播放相泽 | 国产精品视频一二区| 91精品一区国产高清在线gif | 粉嫩av四季av绯色av第一区| 国产一级精品视频| 中文字幕综合| 午夜精品免费在线观看| 色噜噜狠狠色综合网| 久久久久久久久久久网| 蜜桃一区二区三区| 日韩一区二区电影网| 国产成人亚洲精品无码h在线| 免费av网站在线看| 久久精品无码一区二区三区| 国产成人精品一区二区三区福利| 中文在线字幕免费观| 亚洲人成人一区二区三区| 最近2019免费中文字幕视频三| 折磨小男生性器羞耻的故事| 欧美一级做a| 精品久久久视频| av 日韩 人妻 黑人 综合 无码| 国产三级在线免费观看| 99国产欧美久久久精品| 91九色在线免费视频| 男操女视频网站| 久久99久久人婷婷精品综合 | 奇米影音第四色| 午夜激情电影在线播放| 成人一级视频在线观看| 国产精品中文字幕在线观看| aaaaaa毛片| 国产日韩欧美一区| 97人人爽人人喊人人模波多| 中文字幕av免费在线观看| 日韩欧美精品| 91精品蜜臀在线一区尤物| 亚洲免费在线精品一区| 女人偷人在线视频| 99精品欧美一区二区蜜桃免费| 成人午夜电影在线播放| 国产av一区二区三区| 亚洲成人精选| 中文字幕日韩综合av| 日韩 中文字幕| 欧美电影在线观看完整版| 欧美v国产在线一区二区三区| 色噜噜狠狠一区二区三区狼国成人| 91成人在线| 欧美性猛交xxxx黑人交| xxx国产在线观看| 国产精品伦一区二区| 欧美日韩精品一区二区三区蜜桃| 丰满女人性猛交| 黄色网址在线免费播放| 成人午夜视频福利| av一区二区在线看| 黄色av网站免费在线观看| 成人深夜视频在线观看| 国产综合第一页| 日本在线视频1区| 久久女同精品一区二区| 日韩av图片| 日本三级视频在线观看| 精品一区二区免费视频| 国产精品日本精品| 亚洲午夜激情视频| 国产高清不卡一区| 国产精品99久久久久久久| 色呦呦视频在线| 久久久久久久久久电影| 天天人人精品| 亚洲按摩av| 欧美日韩中文字幕在线视频| 少妇激情一区二区三区| 中文字幕综合| 亚洲国内精品视频| 亚洲色图 激情小说| 亚洲久久久久| 国模吧一区二区| 国产成人精品亚洲| 国产一区二区三区免费| 激情久久av| av每日在线更新| 亚洲综合久久av| 亚洲午夜精品福利| 香蕉久久aⅴ一区二区三区| 婷婷久久综合九色综合伊人色| 日本在线视频www| 国产区一区二| 国产婷婷成人久久av免费高清| 毛片视频免费播放| 亚洲第一黄色| 国产精品普通话| 人妻偷人精品一区二区三区| 国产婷婷色一区二区三区四区| 一区二区三区一级片| 国产美女精品写真福利视频| 欧美日本一道本| 亚洲男人在线天堂| 欧美一区成人| 国产精品成人播放| 无码人妻精品一区二| 久久av中文字幕片| 久久久久久草| 亚洲wwwww| 欧美军同video69gay| 9.1成人看片| 中文精品电影| 国产精品一二区| 亚洲 欧美 激情 另类| 亚洲欧美一区二区三区极速播放| 国产精品69页| 同性恋视频一区| 欧美激情亚洲自拍| 国产不卡精品视频| 国产精品久久久久一区| 欧美视频第三页| 欧美aaaaa级| 欧美国产精品人人做人人爱| 91在线视频国产| 精品在线亚洲视频| 免费在线国产精品| zzzwww在线看片免费| 欧美一级黄色录像| 来吧亚洲综合网| 日本欧美在线观看| 日韩国产一区久久| 欧美7777| 亚洲欧美制服综合另类| 亚洲 欧美 日韩 综合| 成人天堂资源www在线| 中国女人做爰视频| 亚洲二区av| 色伦专区97中文字幕| 亚洲天堂网在线观看视频| 国产亚洲成av人在线观看导航| 777av视频| 久久九九热re6这里有精品| 久久久久久有精品国产| 成人免费视频国产| 亚洲中国最大av网站| 国产人妖在线观看| 亚洲手机在线| 黄色99视频| 免费日韩电影| 中文字幕av一区| 中文字幕1区2区3区| 欧美国产一区二区在线观看| 欧美成人黄色网址| 色喇叭免费久久综合| 国产在线观看精品| 97超碰在线公开在线看免费| 欧美mv日韩mv亚洲| 国产午夜福利片| 26uuu国产在线精品一区二区| 少妇高清精品毛片在线视频| 欧美另类69xxxxx| 国产一区二区丝袜| 亚洲91av| 亚洲精品一区中文| 中文字幕你懂的| 一区二区三区在线不卡| av网页在线观看| 日韩电影在线免费观看| 99国产在线| 操人在线观看| 中文字幕免费国产精品| 国产一区二区网站| 亚洲国产毛片aaaaa无费看| 巨胸大乳www视频免费观看| 看片的网站亚洲| av在线观看地址| 国内成人自拍| 亚洲精品日韩激情在线电影| wwwww亚洲| 在线成人激情视频| www.狠狠干| 日本黄色一区二区| h色网站在线观看| 99re亚洲国产精品| 亚洲一级片av| 性久久久久久| av久久久久久| 不卡在线一区| 日本中文字幕久久看| 毛片在线看网站| 日韩精品在线免费观看| 97国产精品久久久| 五月综合激情婷婷六月色窝| 国产福利在线导航| av福利精品导航| 在线视频一二区| 视频一区中文字幕国产| 人妻激情另类乱人伦人妻| 国产成人高清| 国产精品综合久久久久久| 看片一区二区| 欧美在线免费看| 欧美大片黄色| 综合国产在线观看| 日本福利片高清在线观看| 日韩视频免费直播| 亚洲视频久久久| 色婷婷综合久久久久中文一区二区| 男男做爰猛烈叫床爽爽小说| 精品一区二区国语对白| 国产日本欧美在线| 精品久久久中文字幕| 国产一区二区高清视频| 电影91久久久| 国产精品视频久久久| 天天免费亚洲黑人免费| 欧美亚洲激情在线| 大香伊人中文字幕精品| 久久亚洲精品成人| 一广人看www在线观看免费视频| 亚洲另类图片色| 五月婷婷狠狠干| 亚洲成人久久久久| 草久久免费视频| 一个色综合av| 欧美丰满熟妇bbbbbb| 国产精品成人免费精品自在线观看| 精品无码一区二区三区| 26uuu亚洲| 蜜臀av一区二区三区有限公司| 丁香一区二区三区| 性xxxxxxxxx| 国产成人av电影| 在线观看欧美一区二区| 国产精品一卡二| 国产免费观看高清视频| 亚洲午夜精品久久久久久app| 三上悠亚免费在线观看| 国产精品18hdxxxⅹ在线| eeuss一区二区三区| 一区二区在线视频观看| 99在线看视频| 六月丁香久久丫| 久久久久久久久久久久久久一区| 欧美精品国产白浆久久久久| 久久国产精品99久久久久久丝袜| 丝袜久久网站| 欧美重口乱码一区二区| 精品久久久久中文字幕小说| 亚洲一区免费看| 91精品国产自产在线观看永久∴| 国产成年人在线观看| 欧美天堂亚洲电影院在线观看| 国产乱子伦精品无码专区| 悠悠资源网久久精品| 啊啊啊一区二区| 日韩高清不卡在线| 久久久精品高清| 国产成人午夜高潮毛片| v天堂中文在线| 国产亚洲短视频| 在线观看美女av| 久久亚洲一区二区三区四区| 中文字幕国产专区| 国产精品乱人伦中文| 97成人资源站| 天天综合天天做天天综合| 一级特黄免费视频| 欧美美女bb生活片| 亚洲欧美高清视频| 日韩精品一区二区视频| 看电影就来5566av视频在线播放| 中文字幕亚洲精品| 欧美精品videossex少妇| 欧美专区在线播放| 伊人久久精品| 久久久久久一区| 欧美激情理论| 精品国产免费av| 狠狠狠色丁香婷婷综合激情| 少妇激情一区二区三区视频| 欧美国产日韩亚洲一区| 青青草成人免费| 日本高清不卡一区| 精品人妻无码一区二区三区蜜桃一 | 色99之美女主播在线视频| 国产一线二线在线观看| 国产成人短视频| 国产劲爆久久| 久久av秘一区二区三区| 久久综合图片| 成年人性生活视频| 久久伊人中文字幕| 国产传媒免费在线观看| 亚洲超碰97人人做人人爱| 97人妻精品视频一区| 日韩精品一区二区在线观看| 国产高清视频在线播放| 韩国视频理论视频久久| 97精品资源在线观看| 欧美日韩国产综合视频在线| 女人色偷偷aa久久天堂| 手机在线免费观看毛片| 成人精品视频一区| 久久久久亚洲av成人网人人软件| 国产日韩av一区二区| 亚洲黄色三级视频| 欧美一级电影网站| 日本最新在线视频| 国产激情综合五月久久| 日本午夜精品| 久久99久久久久久| 国内精品伊人久久久久av影院 | 亚洲免费观看高清完整版在线观看| 手机看片久久久| 亚洲国产成人一区| 男人天堂亚洲天堂| 69堂成人精品视频免费| 99国产精品免费视频观看| www.色就是色| 国产校园另类小说区| 一本一道无码中文字幕精品热| 精品国产成人系列| 波多野结依一区| 国产高清自拍一区| 海角社区69精品视频| 丰满饥渴老女人hd| 一区二区视频在线| 国产www视频| 美女国内精品自产拍在线播放| 欧美一级做a| 综合久久国产| 国产综合色在线视频区| 欧美88888| 538prom精品视频线放| 麻豆视频网站在线观看| 国产精品网址在线| 999国产精品永久免费视频app| 国产成人黄色网址| 国产精品福利影院| 国产三级在线观看视频| 久久久成人av| 在线观看操人| 99久久综合狠狠综合久久止| 国内自拍视频一区二区三区 | 亚洲综合免费视频| 最新国产成人av网站网址麻豆| 国产精品久久久久久久久免费高清| 亚洲乱码一区二区三区| 极品少妇xxxx精品少妇| 国产suv一区二区三区| 精品国一区二区三区| 国产美女高潮在线观看| 欧美专区一二三 | 在线观看视频日韩| av无码av天天av天天爽| 在线观看亚洲精品| 欧美性天天影视| 99中文视频在线| 免费欧美在线| 网站永久看片免费| 精品久久久久99| 成人福利视频| 最新不卡av| 成人深夜在线观看| 无码人妻精品一区二区三区9厂| 中文字幕av日韩| 操欧美女人视频| 久久久久久久片| 亚洲精品视频在线| 色视频精品视频在线观看| 国产精品啪视频| 在线成人欧美| 青青青视频在线播放| 欧美成人一区二区三区| 中日韩脚交footjobhd| 亚洲欧美日韩国产yyy| 成人久久视频在线观看| 国产免费a视频| 欧美剧在线观看| 欧美女优在线视频| 日本亚洲一区二区三区| 欧美午夜电影在线| 免费大片黄在线观看视频网站| 国内一区二区三区在线视频| 日韩av一区二区在线影视| 九九在线观看视频| 亚洲老头同性xxxxx| 日韩精品三级| 中文网丁香综合网| av电影在线观看一区| 国产又粗又猛又黄| 欧美亚洲午夜视频在线观看|