3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark MLlib 机器学习

發布時間:2025/7/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark MLlib 机器学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本章導讀

機器學習(machine learning, ML)是一門涉及概率論、統計學、逼近論、凸分析、算法復雜度理論等多領域的交叉學科。ML專注于研究計算機模擬或實現人類的學習行為,以獲取新知識、新技能,并重組已學習的知識結構使之不斷改善自身。

MLlib是Spark提供的可擴展的機器學習庫。MLlib已經集成了大量機器學習的算法,由于MLlib涉及的算法眾多,筆者只對部分算法進行了分析,其余算法只是簡單列出公式,讀者如果想要對公式進行推理,需要自己尋找有關概率論、數理統計、數理分析等方面的專門著作。本章更側重于機器學習API的使用,基本能夠滿足大多數讀者的需要。

1.?機器學習概率

機器學習也屬于人工智能的范疇,該領域主要研究的對象是人工智能,尤其是如何在經驗學習中改善具體算法。機器學習是人工智能研究較為年輕的分支,它的發展過程大致可分為如下4個階段:

  • ?第一階段:20世紀50年代中葉至60年代中葉,屬于熱烈時期。
  • 第二階段:20世紀60年代中葉至70年代中葉,稱為冷靜時期。
  • 第三階段:20世紀70年代中葉至80年代中葉,稱為復興時期。
  • 第四階段:從1986年開始至今。

(1)?機器學習的組成

機器學習的基本結構由環境、知識庫和執行部分三部分組成。環境向學習部分(屬于知識庫的一部分)提供某些信息,學習部分利用這些信息修改知識庫,以增進執行部分完成任務的效能,執行部分根據知識庫完成任務,同時把獲得的信息反饋給學習部分。

(2)?學習策略

學習策略是指機器學習過程中所采用的推理策略。學習系統一般由學習和環境兩部分組成。環境(如書本或教師)提供信息,學習部分則實現信息轉換、存儲,并從中獲取有用的信息。學習過程中,學生(學習部分)使用的推理越少,他對教師(環境)的依賴就越大,教師的負擔也就越重。根據學生實現信息轉換所需推理的多少和難易程度,以從簡單到復雜,從少到多的次序可以將學習策略分為以下6種基本類型:

  • 機械學習(rote learning):學習者不需要任何推理或轉換,直接獲取環境所提供的信息。屬于此類的如塞繆爾的跳棋程序。
  • 示教學習(learning from instruction):學習者從環境獲取信息,把知識轉換成內部可使用的表示形式,并將新知識和原有知識有機地合為一體。此種學習策略需要學生有一定程度的推理能力,但環境仍要做大量的工作。典型應用是FOO程序。
  • 演繹學習(learning by deduction):學習者通過推理獲取有用的知識。典型應用是宏操作(macro-operation)學習。
  • 類比學習(learning by analogy):學習者根據兩個不同領域(源域、目標域)中的知識相似性,通過類比,從源域的知識推導出目標域的相應知識。此類應用如盧瑟福類比。
  • 基于解釋的學習(explanation-based learning, EBL):學習者根據教師提供的目標概念和此概念的例子、領域理論及可操作準則,首先給出解釋說明為什么該例子滿足目標概念,然后將解釋推廣未目標概念的一個滿足可操作準則的充分條件。著名的EBL系統由迪喬恩(G.DeJong)的GENESIS等。
  • 歸納學習(learning from induction):由環境提供某概念的一些實例或反例,讓學習者通過歸納推理得出該概念的一般描述。歸納學習是最基本的,發展也較為成熟的學習方法,在人工智能領域中已得到廣泛的研究和應用。

學習策略還可以從所獲取知識的表示形式、應用領域等維度分類。

(3)?應用領域

目前,機器學習廣泛應用于數據挖掘、計算機視覺、自然語言處理、生物特征識別、搜索引擎、醫學診斷、檢測信用卡欺詐、證券市場分析、DNA序列測序、語音和手寫識別、戰略游戲和機器人等領域。

2.?Spark MLlib總體設計

MLlib(machine learning library)是Spark提供的可擴展的機器學習庫。MLlib中已經包含了一些通用的學習算法和工具,如:分類、回歸、聚類、協同過濾、降維以及底層的優化原語等算法和工具。

MLlib提供的API主要分為以下兩類:

  • spark.mllib包中提供的主要API。
  • spark.ml包中提供的構建機器學習工作流的高層次的API。

3.?數據類型

MLlib支持存儲在一臺機器上的局部向量和矩陣以及由一個或多個RDD支持的分布式矩陣。局部向量和局部矩陣是提供公共接口的簡單數據模型。Breeze和jblas提供了底層的線性代數運算。Breeze提供了一組線性代數和數字計算的庫,具體信息訪問http://www.scalanlp.org/。jblas提供了使用Java開發的線性代數庫,具體信息訪問http://jblas.org/。

3.1?局部向量

MLlib支持兩種局部向量類型:密集向量(dense)和稀疏向量(sparse)。密集向量由double類型的數組支持,而稀疏向量則由兩個平行數組支持。例如,向量(1.0,0.0,3.0)由密集向量表示的格式為[1.0,0.0,3.0],由稀疏向量表示的格式為(3,[0,2],[1.0,3.0])。

注意:這里對稀疏向量做些解釋。3是向量(1.0,0.0,3.0)的長度,除去0值外,其他兩個值的索引和值分別構成了數組[0,2]和數組[1.0,3.0]。

有關向量的類如圖所示。

Vector是所有局部向量的基類,Dense-Vector和SparseVector都是Vector的具體實現。

Spark官方推薦使用Vectors中實現的工廠方法創建局部向量,就像下面這樣:

import org.apache.spark.mllib.linalg.{Vector, Vectors} //創建密集向量(1.0, 0.0, 3.0) val dv: Vector = Vectors.dense(1.0, 0.0, 3.0) //給向量(1.0, 0.0, 3.0)創建疏向量 val svl: Vector= Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0)) //通過指定非0的項目,創建稀疏向量(1.0, 0.0, 3.0) val sv2: Vector = Vectors.sparse(3, Seq((0, 1.0), (2, 3.0)))

注意: Scala默認會導入scala.collection.immutable.Vector,所以必須顯式導入org.apache.spark.mllib.linalg.Vector才能使用MLlib才能使用MLlib提供的Vector。

上面例子中以數組為參數,調用Vectors的sparse接口,見如下代碼。使用Seq創建稀疏向量,其本質依然是使用數組,見如下代碼。

3.2?標記點

標記點是將密集向量或者稀疏向量與應答標簽相關聯。在MLlib中,標記點用于監督學習算法。MLlib使用double類型存儲標簽,所以我們能在回歸和分類中使用標記點。如果只有兩種分類,可以使用二分法,一個標簽要么是1.0,要么是0.0。如果有很多分類,標簽應該從零開始:0、1、2....

標記點由樣例類LabeledPoint來表示,其使用方式如下。

import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.regression.LabeledPoint //使用標簽1.0和一個密集向量創建一個標記點 val pos = LabeledPoint(1.0, Vectors.dense(1.0, 0.0, 3.0)) //使用標簽0.0和一個疏向量創建一個標記點 val neg = LabeledPoint(0.0, Vectors.sparse(3, Array(0, 2), Array(1.0, 3.0)))

用稀疏的訓練數據做練習是很常見的,好在MLlib支持讀取存儲在LIBSVM格式中的訓練例子。LIBSVM格式是一種每一行表示一個標簽稀疏特征向量的文本格式,其格式如下:

label index1:value1 index2:value2 ...

LIBSVM是林智仁教授等開發設計的一個簡單、易用和快速有效的SVM模式識別與回歸的軟件包。MLlib已經提供了MLUtils.loadLibSVMFile方法讀取存儲在LIBSVM格式文本文件中的訓練數據,見如下代碼:

import org.apache.spark.mllib.regression.LabeledPoint import org.apache.spark.mllib.util.MLUtils import org.apache.spark.rdd.RDDval examples: RDD[LabeledPoint] = MLUtils.loadLibSVMFile(sc, "data/mllib/sample_libsvm_data.txt")

3.3?局部矩陣

MLlib支持數據存儲在單個double類型數組的密矩陣。先來看這樣一個矩陣:

這個矩陣是如何存儲的?它只是存儲到一維數組[1.0, 3.0, 5.0, 2.0, 4.0, 6.0],這個矩陣的尺寸是3*2,即3行2列。

有關局部矩陣的類如下圖所示。局部矩陣的基類是Matrix,目前有一個實現類DenseMatrix。Spark官方推薦使用Matrices中實現的工廠方法創建局部矩陣,例如:

import org.apache.spark.mllib.linalg.{Matrix, Matrices} //創建密矩陣((1.0,2.0),(3.0, 4.0),(5.0, 6.0)) val dm: Matrix = Matrices.dense(3, 2, Array(1.0, 3.0, 5.0, 2.0, 4.0, 6.0))

3.4?分布式矩陣

?分布式矩陣分布式地存儲在一個或者多個RDD中。如何存儲數據量很大的分布式矩陣?最重要的在于選擇一個正確的格式。如果將分布式矩陣轉換為不同格式,可能需要全局的shuffle,成本非常昂貴。

有關分布式矩陣的類如圖所示:

迄今為止,MLlib已經實現了4種類型的分布式矩陣:

  • RowMatrix:最基本的分布式矩陣類型,是面向行且行索引無意義的分布式矩陣。RowMatrix的行實際是多個局部向量的RDD,列受限于integer的范圍大小。RowMatrix適用于列數不大以便單個局部向量可以合理地傳遞給Driver,也能在單個節點上存儲和操作的情況。

下面展示了可以使用RDD[Vector]實例來構建RowMatrix的例子。

import org.apache.spark.mllib.linalg.Vector import org.apache.spark.mllib.linalg.distributed.RowMatrix val rows: RDD[Vector] = ... val mat: RowMatrix = new RowMatrix(rows) val m = mat.numRows() val n = mat.numCols()
  • IndexedRowMatrix:與RowMatrix類似,但卻面向索引的分布式矩陣。IndexedRowMatrix常用于識別行或者用于執行連接操作。可以使用RDD[IndexedRow]實例創建IndexedRowMatrix。IndexedRow的實現如下:
@Experimental case class IndexedRow(index: Long, vector: Vector)

通過刪除IndexedRowMatrix的行索引,可以將IndexedRowMatrix轉換為RowMatrix。下面的例子演示了如何使用IndexedRowMatrix。

import org.apache.spark.mllib.linalg.distributed.{IndexedRow, IndexedRowMatrix, RowEntry} val rows: RDD[IndexedRow] = ... val mat: IndexedRowMatrix = new IndexedRowMatrix(rows) val m = mat.numRows() val n = mat.numCols() val rowMat: RowMatrix = mat.toRowMatrix()
  • CoordinateMatrix:使用坐標列表(COO)格式存儲的分布式矩陣。支持CoordinateMatrix的RDD實際是(i: Long,j: Long, value: Double)這樣的三元組,i是行索引,j是列索引,value是實際存儲的值。CoordinateMatrix適用于行和列都很大且矩陣很稀疏的情況。

可以使用RDD[MatrixEntry]實例創建CoordinateMatrix。MatrixEntry的實現如下。

@Experimental case class MatrixEntry(i: Long, j: Long, value: Double)

通過調用CoordinateMatrix的toIndexedRowMatrix方法,可以將CoordinateMatrix轉換為IndexedRowMatrix。下面的例子演示了CoordinateMatrix的使用。

import org.apache.spark.mllib.linalg.distributed.{CoordinateMatrix, MatrixEntry} val entries: RDD[MatriEntry] = ... val mat: CoordinateMatrix = new CoordinateMatrix(entries) val m = mat.numRows() val n = mat.numCols() val indexedRowMatrix = mat.toIndexedRowMatrix()
  • BlockMatrix:由RDD[MatrixBlock]支持的分布式矩陣。MatrixBlock實際是((Int, Int), Matrix)這樣的二元組,(Int, Int)是Block的索引,Matrix是記錄塊大小的子矩陣。BlockMatrix支持與其他BlockMatrix的add和multiply,還提供validate方法用于校驗當前BlockMatrix是否恰當構建。

通過調用IndexedRowRowMatrix或者CoordinateMatrix的toBlockMatrix方法,可以方便轉換為BlockMatrix。toBlockMatrix方法創建的Block的默認大小是1024 x 1024。可以使用toBlockMatrix(rowsPerBlock,colsPerBlock)方法改變Block的大小。下面的例子演示了BlockMatrix的使用。

import org.apache.spark.mllib.linalg.distributed.{BlockMatrix, CoordinateMatrix, MatrixEntry} val entries: RDD[MatrixEntry] = ... val coordMat: CoordinateMatrix = new CoordinateMatrix(entries) val matA: BlockMatrix = coordMat.toBlockMatrix().cache() matA.validate() val ata = matA.transpose.multiply(matA)

注意:由于MLlib會緩存矩陣的大小,所以支持分布式矩陣的RDD必須要有明確的類型,否則會導致出錯。

4.?基礎統計

MLlib提供了很多統計方法,包括摘要統計、相關統計、分層抽樣、假設校驗、隨機數生成等。這些都涉及統計學、概率論的專業知識。

4.1?摘要統計

調用Statistics類的colStats方法,可以獲得RDD[Vector]的列的摘要統計。colStats方法返回了MultivariateStatisticalSummary對象,MultivariateStatisticalSummary對象包含了列的最大值、最小值、平均值、方差、非零元素的數量以及總數。下面的例子演示了如何使用colStats。

import org.apache.spark.mllib.linalg.Vector import org.apache.spark.stat.{MultivariateStatisticalSummary, Statistics} val observations: RDD[Vector] = ... val summary: MultivariateStatisticalSummary = Statistics.colStats(observations) println(summary.mean) //每個列值組成的密集向量 println(summary.variance) //列向量方差 println(summary.numNonzeros) //每個列的非零值個數

?colStats實際使用了RowMatrix的computeColumnSummaryStatistics方法,見代碼如下:

4.2?相關統計

計算兩個序列之間的相關性是統計中通用的操作。MLlib提供了計算多個序列之間相關統計的靈活性。目前支持的關聯方法運用了皮爾森相關系數(Pearson correlation coefficient)和斯皮爾森相關系統(Spearman's rank correlation coefficient)。

1.?皮爾森相關系數

皮爾森相關系數也稱為皮爾森積矩相關系數(Pearson product-moment correlation coefficient),是一種線性相關系數。皮爾森相關系數是用來反映兩個變量線性相關程度的統計量。

相關系數用r表示,其中n為樣本量,xi,yi,sx,sy?分別為兩個變量的觀測值和均值。r描述的是兩個變量間線性相關強弱的程度。r的取值在-1與+1之間,若r>0,表明兩個變量是正相關,即一個變量的值越大,另一個變量的值也會越大;若r<0,表明兩個變量是負相關,即一個變量的值越大另一個變量的值反而會越小。r的絕對值越大表明相關性越強,要注意的是這里并不存在因果關系。若r=0,表明兩個變量間不是線性相關,但有可能是其他方式的相關(比如曲線方式)。

2.?斯皮爾森秩相關系數

斯皮爾森秩相關系數也稱為Spearman的p,是由Charles Spearman命名的,一般用希臘字母ps(rho)或rs表示。Spearman秩相關系數是一種無參數(與分布無關)的校驗方法,用于度量變量之間聯系的強弱。在沒有重復數據的情況下,如果一個變量是另外一個變量的嚴格單調函數,則Spearman秩相關系數就是+1或-1,稱變量完全Spearman秩相關。注意和Pearson完全相關的區別,只有當兩變量存在線性關系時,Pearson相關系數才為+1或-1。

Spearman秩相關系數為:

Statistics提供了計算序列之間相關性的方法,默認情況下使用皮爾森相關系數,使用方法如下:

import org.apache.spark.SparkContext import org.apache.spark.mllib.linalg._ import org.apache.spark.mllib.stat.Statisticsval sc: SparkContext = ... val seriesX: RDD[Double] = ... //a series val seriesY: RDD[Double] = ... //和seriesX必須有相同的分區和基數 val correlation:Double = Statistics.corr(seriesX, seriesY, "pearson") val data: RDD[Vector] = ... //每個向量必須是行,不能是列 val correlMatrix: Matrix = Statistics.corr(data, "pearson")

Statistics中相關性的實現,見代碼如下:

其實質是代理了Correlations,Correlations中相關性的實現見代碼如下:

4.3?分層抽樣

分層抽樣(Stratified sampling)是先將總體按某種特征分為若干次級(層),然后再從每一層內進行獨立取樣,組成一個樣本的統計學計算方法。為了對分層抽樣有更直觀的感受,請看下面的例子:

某市現有機動車共1萬輛,其中大巴車500輛,小轎車6000輛,中拔車1000輛,越野車2000輛,工程車500輛。現在要了解這些車輛的使用年限,決定采用分層抽樣方式抽取100個樣本。按照車輛占比,各類車輛的抽樣數量分別為5,60,10,20,5.

摘要統計和相關統計都集成Statistics中,而分層抽樣只需要調用RDD[(K,V)]的sampleByKey和sampleByKeyExact即可。為了分層抽樣,其中的鍵可以被認為是標簽,值是具體的屬性。sampleByKey方法采用擲硬幣的方式來決定是否將一個觀測值作為采樣,因此需要一個預期大小的樣本數據。sampleByKeyExact則需要更多更有效的資源,但是樣本數據的大小是確定的。sampleByKeyExact方法允許用戶采用符合[fk * nk] V k ∈ K,其中fk是鍵k的函數,nk是RDD[(K,V)]中鍵為k的(K,V)對,K是鍵的集合。下例演示了如何使用分層抽樣。

import org.apache.spark.SparkContext import org.apache.spark.SparkContext import org.apache.spark.rdd.PairRDDFunctionsval sc: SparkContext = ... val data = ... //an RDD[(K,V)] of any key value pairs val fractions: Map[K. Double] = ... //specify the exact fraction desired from each key val exactSample = data.sampleByKeyExact(withReplacement = false, fractions)

4.4?假設校驗

假設校驗(hypothesis testing)?是數理統計學中根據一定假設條件由樣本推斷總體的一種方法。

如果對總體的某種假設是真實的,那么不利于或不能支持這一假設的事件A(小概率事件)在一次試驗中幾乎不可能發生;要是在一次試驗中A竟然發生了,就有理由懷疑該假設的真實性,拒絕這一假設。小概率原理可以用圖表示。

H0表示原假設,H1表示備選假設。常見的假設校驗有如下幾種:

  • 雙邊校驗:H0:u = u0,H1:u=/u0
  • 右側單邊校驗:H0:u<=u0,H1:u>u0
  • 左側單邊校驗:H0:u>=u0,H1:u<u0

假設校驗是一個強大的工具,無論結果是否偶然的,都可以決定結果是否具有統計特征。MLlib目前支持皮爾森卡方測試。輸入數據的類型決定了是做卡方適合度檢測還是獨立性檢測。卡方適合度檢測的輸入數據類型應當是向量,而卡方獨立性檢測需要的數據類型是矩陣。RDD[LabeledPoint]可以作為卡方檢測的輸入類型。下列演示了如何使用假設校驗。

import org.apache.spark.SparkContext import org.apache.spark.mllib.linalg._ import org.apache.spark.mllib.regression.LabeledPoint import org.apache.spark.mllib.stat.Statistics._val sc: SparkContext = ... val vec: Vector = ... //事件的頻率組成的vector val goodnessOfFitTestResult = Statistics.chiSqTest(vec) println(goodnessOfFitTestResult) val mat: Matrix = ... //偶然性matrix val independenceTestResult = Statistics.chiSqTest(mat) println(independenceTestResult) val obs:RDD[LabeledPoint] = ... //(feature, label) pairs val featureTestResults: Arra[ChiSqTestResult] = Statistics.chiSqTest(obs) var i = 1 featureTestResults.foreach{ result =>println(s"Column $i:\n result")i += 1 } //summary of the test

4.5?隨機數生成

隨機數可以看做隨機變量,什么是隨機變量?將一枚質地均勻的硬幣拋擲3次,記錄它的結果,有:

其中u代表正面朝上,d代表反面朝上,整個集合Ω是拋擲3次硬幣的樣本空間。正面朝上的次數可能是0,1,2,3。由于樣本空間Ω中的結果都是隨機發生的,所以出現正面的次數X是隨機的,X即為隨機變量。如果拋擲硬幣,直到出現正面的拋擲次數為Y,那么Y的取值可能是0,1,2,3...。如果隨機變量的取值是有限的(比如X)或者是可列的(比如Y),那么就稱為離散隨機變量。

剛才說的拋擲3次硬幣的情況下,使用P(X =?取值)的方式表達每種取值的概率,我們不難得出:

如果樣本空間上隨機變量的取值用x1,x2,x3,....表示,那么存在滿足p(x1) = P(X = xi)和Σip(xi) = 1?的函數p。這個函數p稱為隨機變量X的概率質量函數或者頻率函數。

如果X取值累積某個范圍的值,那么其累積分布函數定義如下:

累積分布函數滿足:

同一樣本空間上兩個離散隨機變量X和Y的可能取值分別為x1,x2,x3,...和y1,y2,y3,...,如果對所有i和j,滿足:

則X和Y是獨立的。將此定義推廣到兩個以上離散隨機變量的情形,如果對所有i, j?和?k,滿足:

則X、Y和Z是相互獨立的。

剛才所說的X、Y的取值都是離散的,還有一種情況下取值是連續的。以人的壽命為例,可以是任意的正實數值。與頻率函數相對的是密度函數?(x)。?(x)有這些性質:?(x)?≥ 0,?分段連續且∫-?(x)dx = 1。如果X是具有密度函數?的隨機變量,那么對于任意的a < b,X落在區間(a, b)上的概率是密度函數從a到b的下方面積:

隨機數生成對于隨機算法、隨機協議和隨機性能測試都很有用。MLlib支持均勻分布、標準正態分布、泊松分布等生成隨機RDD。

MLlib有關隨機數的類如圖所示:

以泊松分布為例,先看看它的數學定義。參數為λ(λ>0)的泊松頻率函數是

當λ = 0.1、1、5、10時的泊松分布如圖所示:

RandomRDDs提供了工廠方法創建RandomRDD和RandomVectorRDD。下面的例子中生成了一個包含100萬個double類型隨機數的RDD[double],其值符合標準正太分布N(0,1),分布于10個分區,然后將其映射到N(1, 4)。

import org.apache.spark.SparkContext import org.apache.spark.mllib.random.RandomRDDs._val sc: SparkContext = ... val u = normalRDD(sc, 1000000L, 10) val v = u.map(x => 1.0 + 2.0 * x)

5. 分類和回歸

MLlib支持多種多樣的分析方法,例如,二元分類、多元分類和回歸。表11-1列出了各類問題的支持算法。

5.1?數學公式

許多標準的機器學習方法都可以配制成凸優化問題,即找到一個極小的凸函數?依賴于一個d項的可變向量w。形式上,我們可以寫為優化問題minwεR d?(w),其中所述目標函數的形式為:

這里的向量xi?ε Rd?是訓練數據,1?≤?i?≤ n?并且yi?ε??Rd?是想要預測數據的相應的標簽。如果L(w; xi, yi)能表示為?wτX和y的函數,我們就說這個方法是線性的。幾個MLlib的分類和回歸算法都屬于這一類,并在這里討論。

目標函數?有兩個部分:控制該模型的復雜的正則化部分和用于在訓練數據上測量模型的誤差的損失部分。損失函數L(w)是典型的基于w的凸函數。固定的正則化參數λ?≥ 0定義了最小損失(即訓練誤差)和最小化模型的復雜性(即避免過度擬合)這兩個目標之間的權衡。

?(1)?損失函數

在統計學,統計決策理論和經濟學中,損失函數是指一種將一個事件(在一個樣本空間中的一個元素)映射到一個表達與其事件相關的經濟成本和機會成本的實數上的一種函數。通常而言,損失函數由損失項和正則項組成。表11-2列出了常用的損失函數。

這里對表11-2中的一些內容做些說明:

  • Hinge loss:常用于軟間隔支持向量機的損失函數;
  • Logistic loss:常用于邏輯回歸的損失函數;
  • Squared loss:常用于最小二乘的損失函數;
  • Gradient or sub gradient:梯度與次梯度

(2)?正規化

正規化的目的是鼓勵簡單的模型,并避免過度擬合。MLlib支持以下正規化,如表11-3所示:

這里的sign(w)是由向量w中所有項的符號(±1)組成的向量。平滑度L2正規化問題一般比L1正規化容易解決。然而L1正規化能幫助促進稀疏權重,導致更小、更可解釋的模型,其中后者于特征選擇是有用的。沒有任何正規化,特別是當訓練實例的數目是小的,不建議訓練模型。

(3)?優化

線性方法使用凸優化來優化目標函數。MLlib使用兩種方法:新元和L-BFGS來描述優化部分。目前,大多數算法的API支持隨機梯度下降(SGD),并有一些支持L-BFGS。

5.2?線性回歸

線性回歸是一類簡單的指導學習方法。線性回歸是預測定量響應變量的有用工具。很多統計學習方法都是從線性回歸推廣和擴展得到的,所以我們有必要重點理解它。

1.簡單線性回歸

簡單線性回歸非常簡單,只根據單一的預測變量X預測定量響應變量Y。它假定X與Y之間存在線性關系。其數學關系如下:

≈表示近似。這種線性關系可以描述為Y對X的回歸。β0和β1是兩個未知的常量,被稱為線性模型的系數,它們分別表示線性模型中的截距和斜率。

β0和β1怎么得到呢?通過大量樣本數據估算出估計值。假如樣本數據如下:

(x1, y1),(x2, y2),....,(x3, y3)

此時問題轉換為在坐標中尋找一條與所有點的距離最大程度接近的直線問題,如圖11-7所示

使用最小二乘方法最終求得的估計值(β0,β1)。

實際情況,所有的樣本或者真實數據不可能真的都在一條直線上,每個坐標都會有誤差,所以可以表示為如下關系:

上式也稱為總體回歸直線,是對X和Y之間真實關系的最佳線性近似。

2.多元線性回歸

相比簡單線性回歸,實踐中常常不止一個預測變量,這就要求對簡單線性回歸進行擴展。雖然可以給每個預測變量單獨建立一個簡單線性回歸模型,但無法做出單一的預測。更好的方法是擴展簡單線性回歸模型,使它可以直接包含多個預測變量。一般情況下,假設有p個不同的預測變量,多元線性回歸模型為:

其中Xj代表第j個預測變量,βj代表第j個預測變量和響應變量之間的關聯。

5.3?分類

5.2節的線性回歸模型中假設響應變量Y是定量的,但很多時候,Y卻是定性的。比如杯子的材質是定性變量,可以是玻璃、塑料或不銹鋼等。定性變量也叫分類變量。預測定性響應值是指對觀測分類。

分類的目標是劃分項目分類。最常見的分類類型是二元分類,二元分類有兩種分類,通常命名為正和負。如果有兩個以上的分類,它被稱為多元分類。MLlib支持兩種線性方法分類:線性支持向量機和邏輯回歸。線性支持向量機僅支持二元分類,而邏輯回歸對二元分類和多元分類都支持。對于這兩種方法,MLlib支持L1和L2正規化變體。MLlib中使用RDD[LabeledPoint]代表訓練數據集,其中標簽引從0開始,如0,1,2,...。對于二元標簽γ在MLlib中使用0表示負,使用+1表示正。

1.線性支持向量機

線性支持向量機(SVM)是用于大規模分類任務的標準方法。正是在介紹損失函數時提到的:

默認情況下,線性支持向量機使用L2正規化訓練。MLlib也支持選擇L1正規化,在這種情況下,問題就變成了線性問題。線性支持向量機算法輸出SVM模型。給定一個新的數據點,記為X,該模型基于wτx的值做預測。默認情況下,如果wτx?≥ 0則結果是正的,否則為負。

下例展示了如何加載樣本數據集,執行訓練算法。

import org.apache.spark.mllib.classification.{SVMModel,SVMWithSGD} import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics import org.apache.spark.mllib.util.MLUtils //加載LIBSVM格式的訓練數據 val data = MLUtils.loadLibSVMFile(sc, "data/mllib/sample_libsbvm_data.txt") //將數據切分為訓練數據(60%)和測試數據(40%) val splits = data.randomSplit(Array(0.6,0.4),seed = 11L) val training = splits(0).cache() val test = splits(1) //運行訓練算法構建模型 val numIterations = 100 val model = SVMWithSGD.train(training, numIterations) //在測試數據上計算原始分數 val scoreAndLabels = test.map{ point => val score = model.predict(point.features)(score, point.label) } //獲取評估指標 val metrics = new BinaryClassificationMetrics(scoreAndLabels) val auROC = metrics.areaUnderROC() println("Area under ROC = " + auROC) //保存和加載模型 model.save(sc, "myModelPath") val sameModel = SVMModel.load(sc, "myModelPath")

SVMWithSGD.train默認執行L2正規化,可以設置正則化參數為1.0為執行L1正規化。配置及優化SVMWithSGD的代碼如下:

import org.apache.spark.mllib.optimization.L1Updater val svmAlg = new SVMWithSGD() svmAlg.optimizer.setNumIterations(200).setRegParam(0.1).setUpdater(new L1Updater) val modelL1 = svmAlg.run(training)

2.邏輯回歸

?邏輯回歸被廣泛用于預測二元響應。它正是在介紹損失函數時提到的:

對于二元分類問題,該算法輸出二元邏輯回歸模型。給定一個新的數據點,記為X,該模型基于應用邏輯函數

做預測,其中z =?wτx。默認情況下,如果?(wτx) > 0.5,輸出為正,否則為負。雖然不像線性支持向量機,邏輯回歸模型中,?(z)的原始輸出具有一概率解釋(即X是正概率)。

二元邏輯回歸可以推廣到多元邏輯回歸來訓練和預測多元分類問題。對于多元分類問題,該算法將輸出一個多元邏輯回歸模型,其中包含K-1個二元邏輯回歸模型。MLlib實現了兩種算法來解決邏輯回歸分析:小批量梯度下降和L-BFGS。Spark官方推薦L-BFGS,因為它比小批梯度下降的收斂更快。

下例演示了如何使用邏輯回歸。

//運行訓練算法構建模型 val model = new LogisticRegressionWithLBFGS().setNumClasses(10).run(training) //在測試數據上計算原始分數 val predictionAndLabels = test.map{ case LabeledPoint(label, features) => val prediction = model.predict(features)(prediction, label) } //獲取評估指標 val metrics = new MulticlassMetrics(predictionAndLabels) val precision =metrics.precision println("Precision = " + precision) //保存和加載模型 model.save(sc, "myModelPath") val samleModel = LogisticRegressionModel.load(sc, "myModelPath")

5.4?回歸

1.線性最小二乘、套索和嶺回歸

線性最小二乘公式是回歸問題最常見的公式。在介紹損失函數時也提到過它的公式:

多種多樣的回歸方法通過使用不同的正規化類型,都派生自線性最小二乘。例如,普通最小二乘或線性最小二乘使用非正規化:嶺回歸使用L2正規化;套索使用L1正規化。對于所有這些模型的損失和訓練誤差:

就是均方誤差。

下面的例子演示了如何使用線性回歸。

//加載解析數據 val data = sc.textFile("data/mllib/ridge-data/lpsa.data") val parsedData = data.map { line => val parts = line.split(',')LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble))).cache() //構建模型 val numIterations = 100 val model = LinearRegressionWithSGD.train(parsedData, numIterations) //使用訓練樣本計算模型并且計算訓練誤差 val valueAndPreds = parsedData.map { point =>val prediction = model.predict(point.features)(point.label, prediction) } val MSE = valueAndPreds.map{case(v, p) => math.pow((v- p), 2)}.mean() println("training Mean Squared Error = " + MSE) //保存與加載模型 model.save(sc, "myModelPath") val sameModel = LinearRegressionModel.load(sc, "myModelPath") }

2.流線性回歸

流式數據可以適用于線上的回歸模型,每當有新數據到達時,更新模型的參數。MLlib目前使用普通最小二乘法支持流線性回歸。除了每批數據到達時,模型更新最新的數據外,實際與線下的執行是類似的。

下面的例子,假設已經初始化好了StreamingContext ssc來演示流線性回歸。

val numFeatures = 3 val model = new StreamingLinearRegressionWithSGD().setInitialWeights(Vectors.zeros(numFeatures)) model.trainOn(trainingData) model.predictOnValues(testData.map(lp => (lp.label, lp.features))).print() ssc.start() ssc.awaitTermination()

6.?決策樹

決策樹是分類和回歸的機器學習任務中常用的方法。決策樹廣泛使用,因為它們很容易解釋,處理分類的功能,延伸到多元分類設置,不需要縮放功能,并能捕捉到非線性和功能的交互。

MLlib使用連續和分類功能支持決策樹的二元和多元的分類和回歸。通過行實現分區數據,允許分布式訓練數以百萬計的實例。

6.1?基本算法

決策樹是一個貪心算法,即在特性空間上執行遞歸的二元分割。決策樹為每個最底部(葉)分區預測相同的標簽。為了在每個樹節點上獲得最大的信息,每個分區是從一組可能的劃分中選擇的最佳分裂。

1.節點不純度和信息增益

節點不純度是節點上標簽的均勻性的量度。當前實現提供了兩種分類不純度測量的方法(基尼不純度和嫡)和一種回歸不純度測量的方法(方差),如表11-4所示:

信息增益是父節點不純度與兩個子節點不純度的加權總和之間的差。假設將有s個分區,大小為N的數據集D劃分為兩個數據集Dleft和Dright,那么信息增益為:

2.劃分候選人

(1)?連續特征

對于單機上實現的小數據集,給每個連續特征劃分的候選人在此特征上有唯一值。有些實現了對特征值排序,為了加速計算,使用這些有序的唯一值劃分候選人。對于大的分布式數據集,排序是很昂貴的。通過在樣本數據分數上執行位計算,實現了計算近似的劃分候選人集合。有序劃分創建了“箱”,可使用maxBins參數指定這樣的容器的最大數量。

(2)?分類特征

對于有M種可能值的分類特征,將會有2M-1-1個劃分候選人。對于二元(0/1)分類和回歸,我們可以通過平均標簽排序的分類特征值,減少劃分候選人至M-1多得數據量。例如,對于一個有A、B和C三個分類的分類特征的二元分類問題,其相應的標簽1的比例是0.2,0.6和0.4時,分類特征是有序的A、C、B。兩個劃分候選人分別是A|C,B和A,C|B,其中|標記劃分。

在多元分類中共有2M-1-1種可能的劃分,無論何時都可能被使用。當2M-1-1比參數maxBins大時,我們使用與二元分類和回歸相類似的方法。M種分類特征用不純度排序,最終得到需要考慮的M-1個劃分候選人。

3.停止規則

遞歸樹的構建當滿足下面三個條件之一時會停在一個節點。

  • 節點的深度與maxBins相等;
  • 沒有劃分候選人導致信息增益大于minInfoGain;
  • 沒有劃分候選人產生的子節點都至少有minInstancesPerNode個訓練實例。

6.2?使用例子

下面的例子演示了使用基尼不純度作為不純度算法且樹深為5的決策樹執行分類。

import org.apache.spark.mllib.tree.DecisionTree import org.apache.spark.mllib.tree.model.DecisionTreeModel import org.apache.spark.mllib.util.MLUtils val data = MLUtils.loadLibSVMFile(sc, "data/mllib/sample_libsvm_data.txt") val splits = data.randomSplit(Array(0.7, 0.3)) //訓練決策樹模型 //空categoricalFeaturesInfo說明所有的特征是連續的 val numClasses = 2 val categoricalFeaturesInfo = Map[Int, Int]() val impurity = "gini" val maxDepth = 5 val maxBins = 32 // trainingData是訓練數據 val model = DecisionTree.trainClassifier(trainingData, numClasses, categoricalFeaturesInfo, impurity, maxDepth, maxBins) //在測試實例上計算 val labelAndPreds = testData.map{ point =>val prediction = model.predict(point.features)(point.label, prediction) } val testErr = labelAndPreds.filter(r => r._1 != r._2).count.toDouble / testData.count() println("Test Error = " + testErr) println("Learned classification tree model: \n" + model.toDebugString) model.save(sc, "myModelPath") val sameModel = DecisionTreeModel.load(sc, "myModelPath")

下面的例子演示了使用方差作為不純度算法且樹深為5的決策樹執行分類

val categoricalFeaturesInfo = Map[Int, Int]() val impurity = "variance" val maxDepth =5 val maxBins = 32 val model = DecisionTree.trainRegressor(trainingData, categoricalFeaturesInfo, impurity, maxDepth, maxBins) val labelsAndPredictions = testData.map{ point =>val prediction = model.predict(point.features)(point.label, prediction) } val testMSE = labelsAndPredictions.map{ case(v, p) => math.pow((v - p), 2)}.mean() println("Test Mean Squared Error =" + testMSE) println("Learned regression tree model:\n" + model.toDebugString) model.save(sc, "myModelPath") val sameModel = DecisionTreeModel.load(sc, "myModelPath")

7.?隨機森林

?合奏是一個創建由其他模型的集合組合而成的模型的學習算法。MLlib支持兩個主要的合奏算法:梯度提升決策樹和隨機森林,它們都使用決策樹作為其基礎模型。梯度提升決策樹和隨機森林雖然都是決策樹合奏的學習算法,但是訓練過程是不同的。關于合奏有以下幾個權衡點:

  • GBT每次都要訓練一顆樹,所以它們比隨機森林需要更長的時間來訓練。隨機森林可以平行地訓練多棵樹。另一方面,GBT往往比隨機森林更合理地使用更小(淺)的樹并且訓練小樹會花費更少的時間。
  • 隨機森林更不易發生過度擬合。隨機森林訓練更多的樹會減少多半的過度擬合,而GBT訓練更多的樹會增加過度擬合。(在統計語言中,隨機森林通過使用更多的樹木減少方差,而GBT通過使用更多的樹木減少偏差。)
  • 隨機森林可以更容易調整,因為性能與樹木的數量是單調增加的。但如果GBT樹木的數量增長過大,性能可能開始下降。

總之,兩種算法都是有效的,具體選擇應取決于特定的數據集。

隨機森林是分類與回歸中最成功的機器學習模型之一。為了減少過度擬合的風險,隨機森林將很多決策樹結合起來。和決策樹相似,隨機森林處理分類的功能,延伸到多元分類設置,不需要縮放功能,并能捕捉到非線性和功能的交互。

MLlib使用連續和分類功能支持隨機森林的二元和多元的分類和回歸。

7.1?基本算法

隨機森林訓練一個決策樹的集合,所以訓練可以并行。該算法隨機性注入訓練過程,使每個決策樹會有一點不同。結合每棵樹的預測降低了預測的方差,改進了測試數據的性能。

1.隨機注入

算法隨機性注入訓練的過程包括:

1)?每次迭代對原始數據集進行二次采樣獲得不同的訓練集,即引導。

2)?考慮在樹的每個節點上將特征的不同隨機子集分割。

除了這些隨機性,每個決策樹個體都以同樣的方法訓練。

2.預測

對隨機森林做預測,就必須聚合它的決策樹集合的預測。分類和回歸的聚合是不同的:

  • 分類采用多數表決。每棵樹的預測作為對分類的一次投票,收到最多投票的分類就是預測結果。
  • 回歸采用平均值。每棵樹都有一個預測值,這些樹的預測值的平均值就是預測結果。

7.2?使用例子

下面例子演示了使用隨機森林執行分類。

//訓練隨機森林模型 //空categoricalFeaturesInfo說明所有特征是連續的 val numClasses = 2 val categoricalFeaturesInfo = Map[Int, Int]() val numTrees = 3 //use more practice val featureSubsetStrategy = "auto" //Let the algorithm choose. val impurity = "gini" val maxDepth = 4 val maxBins = 32 val model = RandomForest.trainClassifier(trainingData, numClasses, categoricalFeaturesInfo, numTrees, featureSubsetStrategy, impurity, maxDepth, maxBins) val labelAndPreds = testData.map{ point => val prediction = model.predict(point.features)(point.label, prediction) }val testErr = labelAndPreds.filter(r => r._1 != r._2).count.toDouble / testData.count() println("Test Error = " + testErr) println("Learned classification forest model:\n" + model.toDebugString) model.save(sc, "myModelPath") val sameModel = RandomForestModel.load(sc, "myModelPath")

下面例子演示了使用隨機森林執行回歸。

val numClasses = 2 val categoricalFeaturesInfo = Map[Int, Int]() val numTrees = 3 //Use more in practice. val featureSubsetStrategy = "auto" //Let the algorithm choose val impurity = "variance" val maxDepth = 4 val maxBins = 32 val model = RandomForest.trainRegressor(trainingData, categoricalFeaturesInfo, numTrees, featureSubsetStrategy, impurity, maxDepth, maxBins) val labelAndPredictions = testData.map{ point => val prediction = model.predict(point.features)(point.label, prediction) } val testMSE = labelAndPredictions.map{ case(v, p) => math.pow((v -p), 2)}.mean() println("Test Mean Squared Error = " + testMSE) println("Learned regression forest model:\n" + model.toDebugString) model.save(sc, "myModelPath") val sameModel = RandomForestModel.load(sc, "myModelPath")

8.?梯度提升決策樹

GBT迭代訓練決策樹,以便最小化損失函數。和決策樹相似,隨機森林處理分類的功能,延伸到多元分類設置,不需要縮放功能,并能捕捉到非線性和功能的交互。

MLlib使用連續和分類功能支持梯度提升決策樹的二元和多元的分類和回歸。

8.1?基本算法

GBT迭代訓練一個決策樹的序列。在每次迭代中,算法使用當前合奏來預測每個訓練實例的標簽,然后將預測與真實的標簽進行比較。數據集被重新貼上標簽,將重點放在預測不佳的訓練實例上。因此,在下一迭代中,決策樹將幫助糾正先前的錯誤。重貼標簽的具體機制是由損失函數定義的。隨著每次迭代,GBT進一步減少訓練數據上的損失函數。表11-5列出了MLlib中GBT支持的損失函數。請注意,每個損失只適用于分類或回歸之一。其中N表示實例數量,y1表示實例i的標簽,xi表示實例i的特征,F(Xi)表示實例i的模型預測標簽。

8.2?使用例子

下例演示了用LogLoss作為損失函數,使用GBT執行分類的例子。

//訓練GradientBoostedTree模型 //默認使用LogLoss val boostingStrategy = BoostingStrategy.defaultParams("Classification") boostingStrategy.numIterations = 3 //Note:Use more iterations in practice. boostingStrategy.treeStrategy.numClasses = 2 boostingStrategy.treeStrategy.maxDepth = 5 //空categoricalFeaturesInfo說明所有特征是連續的 boostingStrategy.treeStrategy.categoricalFeaturesInfo = Map[Int, Int]() val model = GradientBoostedTrees.train(trainingData, boostingStrategy) val labelAndPreds = testData.map{ point => val prediction = model.predict(point.features)(point.label, prediction) } val testErr = labelAndPreds.filter(r => r._1 != r._2).count.toDouble / testData.count() println("Test Error = " + testErr) println("Learned classification GBT model:\n" + model.toDebugString) model.save(sc, "myModelPath") val sameModel = GradientBoostedTreesModel.load(sc, "myModelPath")

下例演示了用Squared Error?作為損失函數,使用GBT執行回歸的例子。

//訓練GradientBoostedTrees模型 // defaultParams指定了Regression, 默認使用SquaredError val boostingStrategy = BoostingStrategy.defaultParams("Regression") boostingStrategy.numIterations = 3 //Note: Use more iterations in practice. boostingStrategy.treeStrategy.maxDepth = 5 //空categoricalFeaturesInfo說明所有特征是連續的 boostingStrategy。treeStrategy.categoricalFeaturesInfo = Map [Int, Int]() val model = GradientBoostedTrees.train(trainingData, boostingStrategy) val labelsAndPredictions = testData.map{ point =>val prediction = model.predict(point.features)(point.label, prediction) } val testMSE = labelsAndPredictions.map{case(v, p) => math.pow((v - p), 2)}.mean() println("Test Mean Squared Error = " + testMSE) println("Learned regression GBT model:\n" + model.toDebugString) model.save(sc, "myModelPath") val sameModel = GradientBoostedTreesModel.load(sc, "myModelPath")

9.?樸素貝葉斯

9.1?算法原理

j我們首先來介紹一些數學中的理論,然后來看樸素貝葉斯。

條件概率:A和B表示兩個事件,且P(B)?≠ 0(B事件發生的概率不等于0),則給定事件B發生的條件下事件A發生的條件概率定義為:

使用條件概率推導出乘法定律:A和B表示兩個事件,且P(B)?≠ 0(B事件發生的概率不等于0)。那么:

將乘法定律擴展為全概率定律:事件B1,B2,...,Bn滿足Uni=1 Bi=Ω,Bi∩Bj=?,i?≠ j,且對所有的i,P(Bi) > 0。那么,對于任意的A,滿足:

貝葉斯公式:事件事件A, B1,B2,...,Bn,?其中Bi不相交,Uni=1?Bi=Ω,且對所有的i,P(Bi) > 0。那么:

樸素貝葉斯分類算法是一種基于每對特征之間獨立性的假設的簡單的多元分類算法。樸素貝葉斯的思想:對于給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認為此待分類項屬于哪個類別。樸素貝葉斯分類的定義如下:

1)?設x = {a1,a2,...,am}為待分類項,每個ai為x的一個特征屬性;

2)類別集合C = {y1,y2,...,yn};

3)?計算P(y1|x),P(y2|x),...,P(yn|x) ;

4)?如果P(yk|x) = max{(y1|x),P(y2|x),...,P(yn|x)?},則x?ε?yk 。

關鍵在第三步:

1)?找到一個已知分類的待分類項集合,這個集合叫做訓練樣本集。

2)?統計得到在各類別下各個特征屬性的條件概率估計。即P(a1|y1),P(a2|y1),...,P(am|y1);?P(a1|y2),P(a2|y2),... ,P(am|y2);...;P(a1|yn),P(a2|yn),...,P(am|yn) 。

3)?如果各個特征屬性都是獨立的,則根據貝葉斯公式可以得到以下推導:

樸素貝葉斯能夠被非常有效的訓練。它被單獨傳給訓練數據,計算給定標簽特征的條件概率分布并給出觀察結果用于預測。

MLlib支持多項樸素貝葉斯和伯努利樸素貝葉斯。這些模型典型的應用是文檔分類。在這方面,每個觀察是一個文檔,每個特征代表一個條件,其值是條件的頻率(在多項樸素貝葉斯中)或一個由零個或一個指示該條件是否在文檔中找到(在伯努利樸素貝葉斯中)。特征值必須是非負的。模型類型選擇使用可選的參數"多項"或“伯努利”。“多項”作為默認模型。通過設置參數λ(默認為1.0)添加劑平滑。為文檔分類,輸入特征向量通常是稀疏的,因為稀疏向量能利用稀疏性的優勢。因為訓練數據只使用一次,所以沒有必要緩存它。

9.2?使用例子

下面的例子演示了如何使用多項樸素貝葉斯。

import org.apache.spark.mllib.classification.{NaiveBayes, NaiveBayesModel} import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression.LabeledPoint val data = sc.textFile("data/mllib/sample_naive_bayes_data.txt") val parsedData = data.map{ line => val parts = line.split(',')LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble))) } val splits = parsedData.randomSplit(Array(0.6, 0.4), seed = 11L) val training = splits(0) val test = splits(1) val model = NaiveBayes.train(training, lambda = 1.0, modelType = "multinomial") val predictionAndLabel = test.map(p => (model.predict(p.features), p.label)) val accuracy = 1.0 * predictionAndLabel.filter(x => x._1 == x._2).count() / test.count() model.save(sc, "myModelPath") val sameModel = GradientBoostedTreesModel.load(sc, "myModelPath")

10.?保序回歸

10.1?算法原理

保序回歸屬于回歸算法,其定義為:給定一個有限的實數集合Y =??{y1,y2,...,yn}?表示觀測響應,?X =??{x1,x2,...,xn}?表示未知的響應值,進行擬合找到一個最小化函數:

?并使用x1≤x2≤...≤xn?對目標排序,其中ωi?是大于0的權重。最終的函數被稱為保序回歸,并且它是唯一的。它可以看做是排序限制下的最小二乘問題。基本上保序回歸是擬合原始數據點最佳的單調函數。

MLlib支持PAVA,此算法使用一種辦法來平行化保序回歸。保序回歸有一個可選參數isotonic,默認值是true。此參數指定保序回歸是保序的(單調增加)還是不保序的(單調減少)。

保序回歸的結果被視為分段線性函數。因此,預測的規則是:

1)?如果預測輸入能準備匹配訓練特征,那么返回相關預測。如果有多個預測匹配訓練特征,那么會返回其中之一。

2)?如果預測輸入比所有的訓練特征低或者高,那么最低和最高的訓練特征各自返回。如果有多個預測比所有的訓練特征低或者高,那么都會返回。

3)?如果預測輸入介于兩個訓練特征,那么預測會被視為分段線性函數和從最接近的訓練特征中計算得到的插值。

10.2?使用例子

下面的例子演示了如何使用保序回歸。

import org.apache.spark.mllib.regression.{IsotonicRegression, IsotonicRegressionModel} //省略數據加載及樣本劃分的代碼 val model = new IsotonicRegression().setIsotonic(true).run(training) val predictionAndLabel = test.map { point => val predictedLabel = model.predict(point._2)(predictedLabel, point._1) } val meanSquareError = predictionAndLabel.map{case(p, 1) => math.pow((p-1), 2)}.mean() println("Mean Squared Error = " + meanSquaredError) model.save(sc, "myModelPath") val sameModel = IsotonicRegressionModel.load(sc, "myModelPath")

11.?協同過濾

協同過濾通常用于推薦系統。這些技術旨在填補用戶關聯矩陣的缺失項。MLlib支持基于模型的協同過濾,用戶和產品可以預測缺失項的潛在因素的小集合來描述。MLlib采用交替最小二乘算法來學習這些潛在的因素。

矩陣分解的標準方法基于協同過濾處理用戶項矩陣的條目是明確的。現實世界的用例只能訪問隱式反饋是更常見的(例如瀏覽、點擊、購買、喜歡、股份等)。

下面的例子演示了如何使用協同過濾。

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.MatrixFactorizationModel import org.apache.spark.mllib.recommendation.Ratingval data = sc.textFile("data/mllib/als/test.data") val ratings = data.map(_.split(',') match { case Array(user, item, rate) =>Rating(user.toInt, item.toInt, rate.toDouble) }) //使用ALS構建推薦模型 val rank = 10 val numIterations = 20 val model = ALS.train(ratings, rank, numIterations, 0.01) //模型計算 val usersProducts = ratings.map{ case Rating(user, product, rate) => (user, product) } val predictions = model.predict(usersProducts).map { case Rating(user, product, rate) =>((user, product), rate) } val ratesAndPreds = ratings.map { case Rating(user, product, rate) => ((user, product), rate) }.join(predictions) val MSE = ratesAndPres.map { case ((user, product), (r1, r2)) =>val err = (r1 - r2)err * err}.mean() println("Mean Squared Error = " + MSE) model.save(sc, "myModelPath") val sameModel = MatrixFactorizationModel.load(sc, "myModelPath")

12.?聚類

聚類分析又稱群分析,它是研究(樣品或指標)分類問題的一種統計分析方法。聚類分析以相似性為基礎,在一個聚類中的模式之間比不在同一聚類中的模式之間具有更多的相似性。MLlib支持的聚類算法如下:

  • K-means;
  • 高斯混合(Gaussian mixture);
  • power iteration clustering(PIC);
  • latent?Dirichlet allocation(LDA);
  • 流式K-means.

12.1?K-means

K-means算法是硬聚類算法,是典型的基于原型的目標函數聚類方法的代表,它是數據點到原型的某種距離作為優化的目標函數,利用函數求極值的方法得到迭代運算的調整規則。

聚類屬于無監督學習,以往的回歸、樸素貝葉斯、SVM等都是有類別標簽y的,也就是說,樣本中已經給出了樣本的分類。而聚類的樣本中卻沒有給定y,只有特征x,比如假設宇宙中的星星可以表示成三維空間中點集(x, y, z)。聚類的目的是找到每個樣本x潛在的類別y,并將同類別y的樣本x放在一起。

在聚類問題中,訓練樣本X =??{x1,x2,...,xm},每個xi?ε Rn,K-means算法是將樣本聚類成k個簇,具體算法描述如下:

1)?隨機選取k個聚類質心點為μ12,...,μk?ε Rn

2)?重復下面過程直到收斂。

對每一個樣本i計算它應該屬于的類

對于每一個類重新計算該類的質心

k是我們事先給定的聚類數,ci代表樣本i與k個類中距離最近的那個類,ci的值是1到k中的一個。質心uj代表我們對屬于同一個類的樣本中心點的猜測,拿星團模型來解釋就是要將所有的星星聚成k個星團,首先隨機選取k個宇宙中的點(或者k個星星)作為k個星團的質心,然后第一步對于每一個星星計算其到k個質心中每一個的距離,接著選取距離最近的那個星團作為ci,這樣經過第一步每一個星星都有了所屬的星團;第二步對于每一個星團,重新計算它的質心uj(對里面所有的星星坐標求平均)。重復迭代第一步和第二步直到質心不變或者變化很小。圖11-8演示了以上過程。

?

?下面的例子演示了K-means算法的使用。

import org.apache.spark.mllib.clustering.{KMeans, KMeansModel} import org.apache.spark.mllib.linalg.Vectorsval data = sc.textFile("data/mllib/kmeans_data.txt") val parsedData = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache() val numClusters =2 val numIterations = 20 val clusters = KMeans.train(parsedData, numClusters, numIterations) val WSSSE = clusters.computeCost(parsedData) println("Within Set Sum of Squared Errors = " + WSSSE) clusters.save(sc, "myModelPath") val sameModel = KMeansModel.load(sc, "myModelPath")

12.2?高斯混合

K-means的結果是每個數據點被分配到其中某一個cluster了,而高斯混合則給出這些數據點被分配到每個cluster的概率。高斯混合的算法與K-means算法類似。MLlib中高斯混合的使用例子

import org.apache.spark.mllib.clustering.GaussianMixture import org.apache.spark.mllib.clustering.GaussianMixtureModel import org.apache.spark.mllib.linalg.Vectorsval data = sc.textFile("data/mllib/gmm_data.txt") val parsedData = data.map(s => Vectors.dense(s.trim.split(' ').map(_.toDouble))).cache() val gmm = new GaussianMixture().setK(2).run(parsedData) gmm.save(sc, "myGMMModel") val sameModel = GaussianMixtureModel.load(sc, "myGMMModel") for(i <- 0 until gmm.k){println("weight=%f\nmu=%s\nsigma=\n%s\n" format(gmm.weights(i), gmm.gaussians(i).mu, gmm.gaussians(i).sigma)) }

12.3?快速迭代聚類

快速迭代聚類是一種簡單可擴展的圖聚類方法。其使用例子如下:

?

import org.apache.spark.mllib.clustering.{PowerIterationClustering, PowerIterationClusteringModel} import org.apache.spark.mllib.linalg.Vectors val similarities: RDD[(Long, Long, Double)] = ... val pic = new PowerIterationClustering().setK(3).setMaxIterations(20) val model = pic.run(similarities) model.assignments.foreach{ a => println(s"${a.id} -> ${a.cluster}") } model.save(sc, "myModelPath") val sameModel = PowerIterationClusteringModel.load(sc, "myModelPath")

12.4?latent Dirichlet allocation

latent Dirichlet allocation(LDA)是一個三層貝葉斯概率模型,包含詞、主題和文檔三層結構。文檔到主題服從Dirichlet分布,主題到詞服從多項式分布。

LDA是一種非監督機器學習技術,可以用來識別大規模文檔集或語料庫中潛藏的主題信息。它采用了詞袋的方法,這種方法將每一篇文檔視為一個詞頻向量,從而將文本信息轉化為了易于建模的數字信息。但是詞袋方法沒有考慮詞與詞之間的順序,這簡化了問題的復雜性,同時也為模型的改進提供了契機。每一篇文檔代表了一些主題所構成的一個概率分布,而每一個主題又代表了很多單詞所構成的一個概率分布。由于Dirichlet分布隨機向量各分量間的弱相關性(之所以還有點“相關”,是因為各分量之和必須為1),使得我們假想的潛在主題之間也幾乎是不相關的,這與很多實際問題并不相符,從而造成了LDA的又一個遺留問題。

對于語料庫中的每篇文檔,LDA定義了如下生成過程:

1)?對每一篇文檔,從主題分布中抽取一個主題;

2)?從上述被抽到的主題所對應的單詞分布中抽取一個單詞;

3)?重復上述過程直至遍歷文檔中的每一個單詞。

下例演示了LDA的使用。

12.5?流式K-means

當數據流到達,我們可能想要動態地估算cluster,并更新它們。該算法采用了小批量的K-means更新規則。對每一批數據,將所有的點分配到最近的cluster,并計算最新的cluster中心,然后更新每個cluster的公式為:

ci是前一次計算得到的cluster中心,ni是已經分配到cluster的點數,xi是從當前批次得到的cluster的新中心,mi是當前批次加入cluster的點數。衰減因子a可被用于忽略過去的數據;a=1時所有數據都從一開始就被使用;a=0時只有最近的數據將被使用。這類似于一個指數加權移動平均值。

下面的例子演示了流失K-means的使用。

13.?維數減縮

維數減縮是減少所考慮變量的數量的過程。維數減縮有兩種方式:

  • 奇異值分解;
  • 主成分分析。

13.1?奇異值分解

奇異值分解將一個矩陣因子分解為三個矩陣U、Σ?和?V:

其中U是正交矩陣,其列被稱為左奇異向量;Σ是對角矩陣,其對角線是非負的且以降序排列,因此被稱為奇異值;V也是正交矩陣,其列被稱為右奇異向量。

對于大的矩陣,除了頂部奇異值和它的關聯奇異值,我們不需要完全分解。這樣可以節省存儲、去噪聲和恢復矩陣的低秩結構。如果我們保持前7個頂部奇異值,那么最終的低秩矩陣為:

假設n小于m。奇異值和右奇異值向量來源于特征值和Gramian矩陣AτA的特征向量。矩陣存儲左奇異向量U,通過矩陣乘法U = A(VS-1)計算。使用的實際方法基于計算成本自動被定義:

1)?如果(n < 100)?或者(k > n/2),我們首先計算Gramian矩陣,然后再計算其頂部特征向量并將特征向量本地化到Driver。這需要單次傳遞,在每個Executor和Driver上使用O(n2)的存儲,并花費Driver上O(n2k)的時間。

2)?否則,將使用分布式的方式計算AτA的值,并且發送給ARPACK計算頂部特征向量。這需要O(k)次傳遞,每個Executor上使用O(n)的存儲,在Driver上使用O(nk)的存儲。

下面的例子演示了SVD的使用。

13.2?主成分分析

主成分分析是一種統計方法,此方法找到一個旋轉,使得第一坐標具有可能的最大方差,并且每個隨后的坐標都具有可能的最大方差。旋轉矩陣的列被稱為主成分。下面的例子演示了使用RowMatrix計算主成分。

14.?特征提取與轉型

14.1?術語頻率反轉

術語頻率反轉是一個反映文集的文檔中的術語的重要性,廣泛應用于文本挖掘的特征矢量化方法。術語表示為t,文檔表示為d,文集表示為D。術語頻率TF(t,d)表示術語t在文檔d中出現的頻率,文檔頻率DF(t, D)表示包含術語t的文檔數量。如果我們僅使用術語頻率來測量重要性,則很容易過度強調術語出現的很頻繁,而攜帶的關于文檔的信息很少,例如a、the?和of等。如果術語非常頻繁地跨文集出現,這意味著它并沒有攜帶文檔的特定信息。反轉文檔頻率是一個術語提供了多少信息的數值度量:

|D|?表示文集中的文檔總數。因為使用了對數,如果一個術語出現于所有的文檔中,它的IDF值變0。需要注意的是,應用一個平滑項,以避免被零除。TF-IDF方法基于TF與IDF,它的公式如下:

這里有一些術語頻率和文檔頻率定義的變種。在MLlib中,為了使TF和IDF更靈活,將它們分開了,MLlib實現術語頻率時使用了哈希。應用歐冠哈希函數將原始特征映射到了索引(術語),術語頻率因此依賴于map的索引計算。這種方法避免了需要計算一個全局術語到索引圖,這對于大型語料庫開銷會很大。但由于不同的原始特征在哈希后可能變為同樣的術語,所以存在潛在的哈希沖突。為了降低碰撞的機會,我們可以增加目標特征的維度(即哈希表中的桶數)。默認的特征維度是220 = 1048576.

下面的例子演示了HashingTF的使用。

14.2?單詞向量轉換

Word2Vec計算由單詞表示的分布式向量。分布式表征的主要優點是,類似的單詞在矢量空間是接近的,這使得泛化小說模式更容易和模型估計更穩健。分布式向量表示被證實在許多自然語言處理應用中有用,例如,命名實體識別、消歧、解析、標記和機器翻譯。

MLlib的Word2Vec實現采用了skip-gram模型。skip-gram的訓練目標是學習單詞的向量表示,其善于在同一個句子預測其上下文。給定了單詞序列w1,w2,...,wτ,skip-gram模型的目標是最大化平均對數似然,公式如下:

其中k是訓練窗口的大小。每個單詞w與兩個向量uw和vw關聯,并且由單獨的向量來表示。通過給定的單詞wj正確預測wi的概率是由softmax模型決定的。softmax模型如下:

w表示詞匯量。

由于計算logp(wi|wj)的成本與V成正比(V很容易就達到百萬以上),所以softmax這種skip-gram模型是很昂貴的。為了加速Word2Vec計算,MLlib使用分級softmax,它可以減少計算logp(wi|wj)?復雜度到O(log(V))。

下面的例子演示了Word2Vec的使用,

14.3?標準尺度

通過縮放到單位方差和/或通過在訓練集的樣本上使用列摘要統計溢出均值使特征標準化,這是常見的預處理步驟。例如,當所有的特征都有單位方差和/或零均值時,支持向量機的RBF核或者L1和L2正規化線性模型通常能更好地工作。標準化可以提高在優化過程中的收斂速度,并且還可以防止在模型訓練期間,非常大的差異會對特征發揮過大的影響。

StandardScaler的構造器有兩個參數:

  • withMean:默認false。用于縮放前求均值,這將建立一個密集的輸出,所以不能在稀疏輸入上正常工作,并將引發異常。
  • withStd:默認true。縮放數據到標準單位誤差。

以下例子演示了StandardScaler的使用。

14.4?正規化尺度

正規化尺度把樣本劃分為單位Lp范式,即維度。這是一種常見的對文本分類或集群化的操作。例如,兩個L2正規化TF-IDF向量的點積是這些向量的余弦近似值。

設二維空間內有兩個向量a和b,它們的夾角為θ(0≤θ≤π),則點積定義為以下實數:

MLlib提供Normalizer支持正規化,Normalizer有以下構造參數:

p:?正規化到Lp空間,默認為2。

下面的例子演示了Normalizer的使用。

14.5?卡方特征選擇器

ChiSqSelector用于卡方特征選擇。它運轉在具有分類特征的標簽數據上。ChiSqSelector對基于分類進行獨立卡方測試的特征排序,并且過濾(選擇)最接近標簽的頂部特征。

ChiSqSelector有以下構造器參數:

numTopFeatures:選擇器將要過濾(選擇)的頂部特征數量。

下邊的例子演示了ChiSqSelector的使用。

14.6?Hadamard積

ElementwiseProduct采用逐個相乘的方式,使用給定的權重與每個輸入向量相乘。換言之,它采用一個標量乘法器擴展數據集的每一列。這表示Hadamard積對輸入向量v,使用轉換向量w,最終生成一個結果向量。Hadamard積可由以下公式表示:

ElementwiseProduct的構造器參數為:

w:轉換向量。

下面代碼演示了ElementwiseProduct的使用。

15.?頻繁模式挖掘

分析大規模數據集的第一個步驟通常是挖掘頻繁項目、項目集、亞序列或其他子結構,這在數據挖掘中作為一個活躍的研究主題已多年了。其數學原理讀者可以取維基百科了解。MLlib提供了頻繁模式挖掘的并行實現——FP-growth算法。

FP-growth

給定一個交易數據集,FP-growth的第一步驟是計算項目的頻率,并確定頻繁項目。FP-growth雖然與Apriori類算法有相同的設計目的,但是FP-growth的第二步使用后綴樹(FP樹)結構對交易數據編碼且不會顯式生成候選集(生成候選集通常開銷很大)。第二步之后,就可以從FP樹中抽取頻繁項目集。MLlib中實現了FP-growth的平行版本,叫做PFP。PFP可以將FP-growth的工作分發到其他機器,比單機運行有更好的擴展性。

FPGrowth有以下參數:

  • minSupport:項目集被確定為頻繁的最小數量。
  • numPartitions:分發任務的數量。

下面的例子演示了FPGrowth的使用。

16.?預言模型標記語言

預言模型標記是一種基于XML的語言,它能夠定義和共享應用程序之間的預測模型。

MLlib支持將模型導出為預言模型標記語言。表11-6列出了MLlib模型導出為PMML的相應模型。

下面的例子演示了將KMeamsModel導出為PMML格式。

17.?管道

Spark1.2增加了一個新包spark.ml,目的是提供一套高層次的API,幫助用戶創建、調試機器學習的管道。spark.ml的標準化API用于將多種機器學習算法組合到一個管道或工作流中。下面列出了Spark ML API的主要概念:

  • ML?DataSet:由Hive table或者數據源的數據構成的可容納各種數據類型的DataFrame作為數據集。例如,數據集可以由不同的列分別存儲文本、特征向量、標簽和預測值。
  • Transformer:是一種將DataFrame轉換為另一個DataFrame的算法。例如,ML模型是一個將特征RDD轉換為預測值RDD的Transformer。
  • Estimator:適用于DataFrame,并生成一個Transformer。例如,學習算法是一個在數據集上訓練并生成一個模型的Estimator。
  • Pipeline:鏈接多個Transformer和Estimator,一起構成ML的工作流。
  • Param:所有Transformer和Estimator用于指定參數的通用API。

17.1?管道工作原理

機器學習中,運行一系列的算法取處理數據或者從數據學習的場景是很常見的。例如,一個簡單的文本文檔處理工作流可能包含以下階段:

1)?將文檔文本切分成單詞;

2)?將文檔的單詞轉換為數字化的特征向量;

3)?使用特征向量和標簽學習一個預測模型。

Spark ML以一系列按序運行的PipelineStage組成的管道來表示這樣的工作流。這一系列的Stage要么是Transformer,要么是Estimator。數據集通過管道中的每個Stage都會被修改。比如Transformer的transform()方法將在數據集上被調用,Estimator的fit()方法被調用生成一個Transformer,然后此Transformer的transform()方法也將在數據集上被調用。圖11-9展示了簡單文本文檔工作流例子使用管道的處理流程。

圖11-9說明整個管道由3個Stage組成。Tokenizer和HashingTF都是Transformer,LogisticRegression是Estimator。每個圓柱體都說明它本身是一個DataFrame。整個處理流程如下:

1)?在由原生文本文檔構成的原始數據集上應用Pipeline.fit()方法。

2) Tokenizer.transform()將原生文本文檔切分為單詞,并向數據集增加單詞列。

3) HashingTF.transform()將單詞列轉換為特征向量,并向數據集增加向量列。

4)?因為LogisticRegression是Estimator,所以管道第一次調用LogisticRegression.fit()生成了LogisticRegressionModel。如果管道中還有更多的Stage,將會傳遞數據集到下一個Stage之前在數據集上調用LogisticRegressionModel的transform()。

管道本身是一個Estimator。因此調用Pipeline的fit()方法最后生成了PipelineModel,PipelineModel也是一個Transformer。這個PipelineModel會在測試時間使用,測試過程如圖11-10所示。

圖11-10說明PipelineModel的測試過程與圖11-9的管道有相同的Stage數量。但是圖11-9的管道中的所有Estimator在此時都已經變為Transformer。當在測試數據集上調用PipelineModel的transform()方法時,數據在管道中按序通過。每個Stage的transform()方法都會更新數據集,并將數據集傳遞給下一個Stage。

剛才介紹的例子中,管道是線性的,即每個stage都使用由上一個stage生產的數據。只要數據流圖構成了DAG,它就有可能不是線性的。如果管道構成了DAG,那么這些Stage就必須指定拓撲順序。

17.2?管道API介紹

Spark ML的Transformer和Estimator指定參數具有統一的API。有兩種方式指定參數:

  • 給實例設置參數。例如,Ir是LogisticRegression的實例,可以調用lr.setMaxIter(10)使得調用lr.fit()時最多迭代10次。
  • 傳遞ParamMap給fit()或者transform()方法。通過這種方式指定的參數值將會覆蓋所有由set方式指定的參數值。

下面的例子演示了Estimator、Transformer和Param的使用。

17.3?交叉驗證

?模型選擇是Spark ML中很重要的課題。通過對整個管道的調整,而不是對管道中的每個元素的調整,促成對管道模型的選擇。當前spark.ml使用CrossValidator支持模型選擇。CrossValidator本身攜帶一個Estimator、一組ParamMap以及一個Evaluator。CrossValidator開始先將數據集劃分為多組,每組都由訓練數據集和測試數據集組成。例如,需要劃分3組,那么CrossValidator將生成三個數據集對(訓練,測試)。每一對都使用2/3的數據用于訓練,1/3的數據用于測試。CrossValidator會迭代ParamMap的集合。對于每個ParamMap,它都會訓練給定的Estimator并使用給定的Evaluator計算。ParamMap將會產出最佳的計算模型(對多個數據集對求平均),CrossValidator最終使用這個最佳的ParamMap和整個數據集擬合Estimator。下邊的例子演示了CrossValidator的使用。使用ParamGridBuilder構造網格參數:hashingTF.numFeatures有3個值,r.regParam有2個值。這個網格將會有3*2=6個參數設置供CrossValidator選擇。使用了2組數據集對,那么一共有(3*2)*2=12種不同的模型被訓練。

下面的代碼演示了交叉驗證的使用。

轉載于:https://www.cnblogs.com/swordfall/p/9456222.html

總結

以上是生活随笔為你收集整理的Spark MLlib 机器学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

丁香花在线影院观看在线播放 | 77777熟女视频在线观看 а天堂中文在线官网 | 粉嫩少妇内射浓精videos | 波多野结衣av一区二区全免费观看 | 亚洲男人av香蕉爽爽爽爽 | 久久精品国产日本波多野结衣 | 熟女少妇在线视频播放 | 人妻少妇被猛烈进入中文字幕 | 精品乱码久久久久久久 | 亚洲毛片av日韩av无码 | 亚洲大尺度无码无码专区 | 国产亚洲精品久久久ai换 | 久久久久久久女国产乱让韩 | 国产精品香蕉在线观看 | 国产成人久久精品流白浆 | 国产精品亚洲专区无码不卡 | 日韩 欧美 动漫 国产 制服 | 中文字幕久久久久人妻 | 久久久久久亚洲精品a片成人 | 亚洲天堂2017无码 | 亚洲国产av美女网站 | 亚洲人成网站免费播放 | 鲁大师影院在线观看 | 久久精品视频在线看15 | 久久综合色之久久综合 | 少妇无码av无码专区在线观看 | 在线a亚洲视频播放在线观看 | 久久97精品久久久久久久不卡 | aⅴ在线视频男人的天堂 | 中文字幕中文有码在线 | 99久久人妻精品免费一区 | 亚洲精品成人av在线 | 国产莉萝无码av在线播放 | 婷婷丁香五月天综合东京热 | 亚洲日韩av片在线观看 | 国产两女互慰高潮视频在线观看 | 97无码免费人妻超级碰碰夜夜 | 大地资源中文第3页 | 亚洲男人av天堂午夜在 | 少妇人妻偷人精品无码视频 | 国产精品毛多多水多 | 久久五月精品中文字幕 | 狠狠色噜噜狠狠狠狠7777米奇 | 暴力强奷在线播放无码 | 国内精品人妻无码久久久影院 | 麻豆国产人妻欲求不满 | 欧美阿v高清资源不卡在线播放 | 四十如虎的丰满熟妇啪啪 | 中文久久乱码一区二区 | 中文字幕无码av波多野吉衣 | 免费国产黄网站在线观看 | 精品一区二区三区波多野结衣 | 久久99精品国产麻豆 | 久久久久免费精品国产 | 国产成人无码区免费内射一片色欲 | 精品欧洲av无码一区二区三区 | 蜜桃臀无码内射一区二区三区 | 精品一区二区三区无码免费视频 | 女人和拘做爰正片视频 | 国产婷婷色一区二区三区在线 | 欧美老人巨大xxxx做受 | 99精品无人区乱码1区2区3区 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲人成网站免费播放 | 久久天天躁夜夜躁狠狠 | 人人澡人人透人人爽 | 国产一区二区三区四区五区加勒比 | 一二三四社区在线中文视频 | 国内精品人妻无码久久久影院 | 国内揄拍国内精品少妇国语 | 精品人妻人人做人人爽夜夜爽 | 精品一二三区久久aaa片 | 国产色在线 | 国产 | 久久亚洲日韩精品一区二区三区 | 人人妻人人澡人人爽人人精品浪潮 | 国产色视频一区二区三区 | 少妇无码一区二区二三区 | 国内精品九九久久久精品 | 77777熟女视频在线观看 а天堂中文在线官网 | 少妇邻居内射在线 | 国产精品福利视频导航 | 欧美三级不卡在线观看 | 久久综合香蕉国产蜜臀av | 亚洲一区二区三区播放 | 国产成人无码av在线影院 | 最近的中文字幕在线看视频 | 美女黄网站人色视频免费国产 | 亚洲乱码国产乱码精品精 | 欧美国产亚洲日韩在线二区 | 未满小14洗澡无码视频网站 | 国产成人午夜福利在线播放 | 激情国产av做激情国产爱 | 久青草影院在线观看国产 | 国产绳艺sm调教室论坛 | 亚洲精品一区二区三区大桥未久 | 99久久久无码国产精品免费 | 国产特级毛片aaaaaaa高清 | 国产特级毛片aaaaaa高潮流水 | 大地资源网第二页免费观看 | 日韩亚洲欧美精品综合 | 欧美人与善在线com | 蜜桃臀无码内射一区二区三区 | 欧美丰满老熟妇xxxxx性 | 国产精品无码一区二区桃花视频 | 玩弄中年熟妇正在播放 | 国产农村乱对白刺激视频 | 丝袜足控一区二区三区 | 欧美日本免费一区二区三区 | 人妻夜夜爽天天爽三区 | 中文亚洲成a人片在线观看 | 内射老妇bbwx0c0ck | 亚洲春色在线视频 | 国产莉萝无码av在线播放 | 日日碰狠狠躁久久躁蜜桃 | 免费视频欧美无人区码 | 成人三级无码视频在线观看 | 人妻少妇被猛烈进入中文字幕 | 亚洲爆乳精品无码一区二区三区 | 亚洲中文字幕无码中字 | www国产亚洲精品久久网站 | 国产成人无码区免费内射一片色欲 | 免费人成在线视频无码 | 亚洲欧美综合区丁香五月小说 | 亚洲精品国产精品乱码视色 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲人成影院在线无码按摩店 | 亚洲欧美综合区丁香五月小说 | 国内精品九九久久久精品 | 日韩人妻系列无码专区 | 欧美国产日韩亚洲中文 | 亚洲成色www久久网站 | 丝袜 中出 制服 人妻 美腿 | 日韩欧美中文字幕在线三区 | 国产成人无码av在线影院 | 亚洲精品成人av在线 | 人妻天天爽夜夜爽一区二区 | 亚洲精品无码人妻无码 | 久久精品人妻少妇一区二区三区 | 国产亚洲tv在线观看 | 丁香啪啪综合成人亚洲 | 亚欧洲精品在线视频免费观看 | 国产xxx69麻豆国语对白 | 狂野欧美性猛xxxx乱大交 | 无码毛片视频一区二区本码 | 亚洲熟妇色xxxxx欧美老妇y | 高潮毛片无遮挡高清免费 | 亚洲 欧美 激情 小说 另类 | 久久综合九色综合欧美狠狠 | 无遮挡啪啪摇乳动态图 | 丰满少妇人妻久久久久久 | 国产农村妇女高潮大叫 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲国产欧美国产综合一区 | 无码中文字幕色专区 | 国产一区二区三区四区五区加勒比 | 亚洲 欧美 激情 小说 另类 | av无码电影一区二区三区 | 在线播放亚洲第一字幕 | 无码人妻av免费一区二区三区 | 亚洲一区二区三区含羞草 | 大肉大捧一进一出好爽视频 | 日本大乳高潮视频在线观看 | 国产亚洲精品久久久久久 | 四虎影视成人永久免费观看视频 | 九九久久精品国产免费看小说 | 中文无码伦av中文字幕 | 99国产欧美久久久精品 | 亚洲精品午夜无码电影网 | 少妇性l交大片欧洲热妇乱xxx | 精品国产aⅴ无码一区二区 | 精品无码成人片一区二区98 | 国产真实乱对白精彩久久 | 亚洲精品久久久久中文第一幕 | 国产精品自产拍在线观看 | 亚洲人成影院在线无码按摩店 | 国产成人无码av一区二区 | 欧美 丝袜 自拍 制服 另类 | 国产97色在线 | 免 | 牛和人交xxxx欧美 | 久久久久久亚洲精品a片成人 | 夜夜影院未满十八勿进 | 国产成人综合在线女婷五月99播放 | 丁香啪啪综合成人亚洲 | 国产小呦泬泬99精品 | 日本熟妇人妻xxxxx人hd | 激情爆乳一区二区三区 | 日本欧美一区二区三区乱码 | 老太婆性杂交欧美肥老太 | 亚洲欧洲日本无在线码 | 色综合视频一区二区三区 | 一本色道久久综合狠狠躁 | 欧美性猛交xxxx富婆 | 99精品国产综合久久久久五月天 | 噜噜噜亚洲色成人网站 | 国产精品理论片在线观看 | 色一情一乱一伦一视频免费看 | 国产亚洲精品久久久久久大师 | 国内老熟妇对白xxxxhd | 动漫av网站免费观看 | 牛和人交xxxx欧美 | 4hu四虎永久在线观看 | 精品 日韩 国产 欧美 视频 | 九九综合va免费看 | 日日噜噜噜噜夜夜爽亚洲精品 | 丰满少妇高潮惨叫视频 | 国产精品18久久久久久麻辣 | 狠狠色欧美亚洲狠狠色www | 国产特级毛片aaaaaaa高清 | 蜜桃视频插满18在线观看 | 久久久久久久久888 | 美女黄网站人色视频免费国产 | 久久精品视频在线看15 | 亚洲精品久久久久avwww潮水 | 欧美性黑人极品hd | 天堂亚洲免费视频 | 一本色道久久综合狠狠躁 | 中文字幕乱妇无码av在线 | 亚欧洲精品在线视频免费观看 | 欧美一区二区三区视频在线观看 | 国产亚洲美女精品久久久2020 | 国产人妻人伦精品1国产丝袜 | 午夜精品久久久久久久 | 亚洲国产高清在线观看视频 | 麻豆av传媒蜜桃天美传媒 | 红桃av一区二区三区在线无码av | 国产精品亚洲五月天高清 | 欧美成人午夜精品久久久 | 亚洲小说春色综合另类 | 欧美 日韩 亚洲 在线 | 日韩精品一区二区av在线 | 六十路熟妇乱子伦 | 国产艳妇av在线观看果冻传媒 | 欧美人与物videos另类 | 最新版天堂资源中文官网 | 国产免费无码一区二区视频 | 久久精品国产精品国产精品污 | 中文字幕乱妇无码av在线 | 国产精品美女久久久 | 国产成人综合在线女婷五月99播放 | 久久精品中文闷骚内射 | 伊人久久大香线蕉午夜 | 亚洲va中文字幕无码久久不卡 | 男女爱爱好爽视频免费看 | 色婷婷香蕉在线一区二区 | 亚洲综合久久一区二区 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产精品嫩草久久久久 | 牲欲强的熟妇农村老妇女 | 亚洲熟妇色xxxxx亚洲 | 老子影院午夜精品无码 | 国产精品va在线播放 | 西西人体www44rt大胆高清 | 无码纯肉视频在线观看 | 日韩精品成人一区二区三区 | 欧美35页视频在线观看 | 欧美精品免费观看二区 | 久9re热视频这里只有精品 | 亚洲欧美日韩国产精品一区二区 | 国内精品九九久久久精品 | 久久伊人色av天堂九九小黄鸭 | 国产疯狂伦交大片 | 大地资源中文第3页 | 丰满人妻精品国产99aⅴ | 国产美女极度色诱视频www | √8天堂资源地址中文在线 | 久久精品人人做人人综合 | 久久久久亚洲精品中文字幕 | 亚洲成av人在线观看网址 | 国产成人无码专区 | 欧美性猛交xxxx富婆 | 老熟妇仑乱视频一区二区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 中文字幕无码免费久久9一区9 | 亚洲欧美国产精品久久 | 国产又粗又硬又大爽黄老大爷视 | 国产无遮挡又黄又爽免费视频 | 网友自拍区视频精品 | 麻豆精品国产精华精华液好用吗 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲熟女一区二区三区 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久久久人妻一区精品色欧美 | 日本免费一区二区三区最新 | 久久天天躁狠狠躁夜夜免费观看 | 日韩 欧美 动漫 国产 制服 | 1000部啪啪未满十八勿入下载 | 98国产精品综合一区二区三区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 少妇被黑人到高潮喷出白浆 | 国产农村妇女高潮大叫 | 中文字幕无码av激情不卡 | 日本又色又爽又黄的a片18禁 | 天堂在线观看www | 亚洲欧美日韩综合久久久 | 午夜成人1000部免费视频 | 欧美国产日产一区二区 | 国产精品亚洲а∨无码播放麻豆 | 秋霞成人午夜鲁丝一区二区三区 | 性做久久久久久久久 | 久久久精品人妻久久影视 | 牲欲强的熟妇农村老妇女视频 | 粉嫩少妇内射浓精videos | 国内揄拍国内精品人妻 | 成人无码精品一区二区三区 | 国产极品视觉盛宴 | 国产97色在线 | 免 | 乱人伦人妻中文字幕无码久久网 | 99精品视频在线观看免费 | 十八禁真人啪啪免费网站 | 国产在线精品一区二区高清不卡 | 久久久久久亚洲精品a片成人 | 野狼第一精品社区 | 国产综合久久久久鬼色 | 亚洲国产成人av在线观看 | 国产精品办公室沙发 | 国内老熟妇对白xxxxhd | 国产色xx群视频射精 | 欧美黑人巨大xxxxx | 国产精品久久国产三级国 | 亚洲午夜久久久影院 | 久久精品国产精品国产精品污 | 国产精品-区区久久久狼 | 精品无码成人片一区二区98 | 亚洲成熟女人毛毛耸耸多 | a在线观看免费网站大全 | 国产特级毛片aaaaaa高潮流水 | 日韩视频 中文字幕 视频一区 | 免费人成网站视频在线观看 | 国产乱人偷精品人妻a片 | 久久人妻内射无码一区三区 | 午夜熟女插插xx免费视频 | 国产免费观看黄av片 | 国产精品国产三级国产专播 | 日韩av无码一区二区三区 | 国产疯狂伦交大片 | 色婷婷综合激情综在线播放 | 未满成年国产在线观看 | 亚洲爆乳精品无码一区二区三区 | 真人与拘做受免费视频一 | 红桃av一区二区三区在线无码av | 内射老妇bbwx0c0ck | 成人三级无码视频在线观看 | 国产无套粉嫩白浆在线 | 欧美日本精品一区二区三区 | 欧美国产日产一区二区 | 人妻aⅴ无码一区二区三区 | 精品成在人线av无码免费看 | 欧美喷潮久久久xxxxx | 丰满人妻一区二区三区免费视频 | 成人免费视频一区二区 | 欧美人与禽zoz0性伦交 | 午夜精品一区二区三区在线观看 | 成人一区二区免费视频 | av无码久久久久不卡免费网站 | 人妻少妇精品久久 | 天堂一区人妻无码 | 久久精品一区二区三区四区 | 在线欧美精品一区二区三区 | 美女张开腿让人桶 | 丰腴饱满的极品熟妇 | 欧美激情内射喷水高潮 | 最新国产乱人伦偷精品免费网站 | 日韩 欧美 动漫 国产 制服 | 天天综合网天天综合色 | 欧美野外疯狂做受xxxx高潮 | 亚洲中文字幕在线观看 | 麻豆md0077饥渴少妇 | 国产人妻人伦精品 | 久久精品女人的天堂av | 日日碰狠狠躁久久躁蜜桃 | 久久国产劲爆∧v内射 | 天堂一区人妻无码 | 久久久久久国产精品无码下载 | 97久久精品无码一区二区 | 欧美35页视频在线观看 | 精品人妻av区 | 精品人妻av区 | 一本精品99久久精品77 | 日韩人妻系列无码专区 | 亚洲精品综合一区二区三区在线 | 少妇厨房愉情理9仑片视频 | 国产成人综合美国十次 | 久久精品国产亚洲精品 | 精品久久久无码人妻字幂 | 最近中文2019字幕第二页 | 国产免费观看黄av片 | 久9re热视频这里只有精品 | 久久午夜夜伦鲁鲁片无码免费 | 日韩人妻无码中文字幕视频 | 夫妻免费无码v看片 | а√天堂www在线天堂小说 | 欧美熟妇另类久久久久久多毛 | 18精品久久久无码午夜福利 | 波多野42部无码喷潮在线 | 成人av无码一区二区三区 | 18无码粉嫩小泬无套在线观看 | 国产在线精品一区二区三区直播 | 久久国产精品偷任你爽任你 | 国产人妻人伦精品1国产丝袜 | 无人区乱码一区二区三区 | 一本久久伊人热热精品中文字幕 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 少妇无码av无码专区在线观看 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲爆乳无码专区 | 国产农村乱对白刺激视频 | 2020久久香蕉国产线看观看 | 午夜福利电影 | 无码国产激情在线观看 | 欧美色就是色 | 在教室伦流澡到高潮hnp视频 | 波多野结衣 黑人 | 国内揄拍国内精品人妻 | 国产精品无码一区二区桃花视频 | 特大黑人娇小亚洲女 | 东京热男人av天堂 | 亚洲午夜福利在线观看 | 精品久久久无码人妻字幂 | 日日天日日夜日日摸 | 老子影院午夜精品无码 | 一本一道久久综合久久 | 国产在线精品一区二区三区直播 | 露脸叫床粗话东北少妇 | 老熟女乱子伦 | 欧美 日韩 亚洲 在线 | 国产肉丝袜在线观看 | √8天堂资源地址中文在线 | 装睡被陌生人摸出水好爽 | 99国产精品白浆在线观看免费 | 欧美人与禽zoz0性伦交 | 亚洲国产精华液网站w | 亚洲精品一区二区三区四区五区 | 老熟女乱子伦 | 国产免费无码一区二区视频 | 国产性生大片免费观看性 | 国产亚av手机在线观看 | 日本熟妇人妻xxxxx人hd | 欧美日韩视频无码一区二区三 | 中文字幕无码av波多野吉衣 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 小鲜肉自慰网站xnxx | 国产人成高清在线视频99最全资源 | 日本www一道久久久免费榴莲 | 装睡被陌生人摸出水好爽 | 人妻尝试又大又粗久久 | 色欲久久久天天天综合网精品 | 无遮挡啪啪摇乳动态图 | www国产精品内射老师 | 永久免费观看美女裸体的网站 | 亚洲中文字幕在线无码一区二区 | 97夜夜澡人人爽人人喊中国片 | 99久久人妻精品免费一区 | 男人的天堂av网站 | 中文字幕无码乱人伦 | 亚洲gv猛男gv无码男同 | 国产色视频一区二区三区 | 在线成人www免费观看视频 | 国语精品一区二区三区 | 亚洲成a人片在线观看无码3d | 国产女主播喷水视频在线观看 | 国产美女精品一区二区三区 | 亚洲精品www久久久 | 久久无码专区国产精品s | 在线看片无码永久免费视频 | 久久99精品国产麻豆 | 99国产精品白浆在线观看免费 | 亚洲成在人网站无码天堂 | 国产成人精品久久亚洲高清不卡 | 国产69精品久久久久app下载 | 欧美人与物videos另类 | 97精品国产97久久久久久免费 | 少妇无码av无码专区在线观看 | 正在播放老肥熟妇露脸 | 女高中生第一次破苞av | 欧美阿v高清资源不卡在线播放 | 人人澡人摸人人添 | 久久久久se色偷偷亚洲精品av | 午夜男女很黄的视频 | 熟妇女人妻丰满少妇中文字幕 | 女高中生第一次破苞av | 伊人久久婷婷五月综合97色 | 成人三级无码视频在线观看 | 亚洲国产午夜精品理论片 | 荡女精品导航 | 久久国产精品偷任你爽任你 | 少妇人妻偷人精品无码视频 | 精品午夜福利在线观看 | 97久久国产亚洲精品超碰热 | 日日摸夜夜摸狠狠摸婷婷 | 午夜福利试看120秒体验区 | 国产精品鲁鲁鲁 | 熟妇激情内射com | 国产色xx群视频射精 | 色综合久久久无码网中文 | 欧美性黑人极品hd | 国产免费久久精品国产传媒 | 两性色午夜视频免费播放 | 精品国产一区av天美传媒 | 免费看少妇作爱视频 | 久久久久久久久888 | 一本色道久久综合狠狠躁 | 精品 日韩 国产 欧美 视频 | 色综合久久网 | 久久久久久久女国产乱让韩 | 亚洲无人区一区二区三区 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 麻豆国产人妻欲求不满 | 丰满妇女强制高潮18xxxx | 中文字幕无码av波多野吉衣 | av无码不卡在线观看免费 | 亚洲成色在线综合网站 | 一本大道伊人av久久综合 | 国产明星裸体无码xxxx视频 | 女人高潮内射99精品 | 精品人人妻人人澡人人爽人人 | 国产人妻人伦精品 | 日韩精品无码一本二本三本色 | 无码一区二区三区在线观看 | 国产免费久久久久久无码 | 欧美三级a做爰在线观看 | 亚洲综合在线一区二区三区 | 亚洲狠狠色丁香婷婷综合 | 亚洲 a v无 码免 费 成 人 a v | 少女韩国电视剧在线观看完整 | 久久久久久久人妻无码中文字幕爆 | 天堂亚洲2017在线观看 | 乱人伦中文视频在线观看 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 曰韩少妇内射免费播放 | 久久久久亚洲精品中文字幕 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲区小说区激情区图片区 | 漂亮人妻洗澡被公强 日日躁 | 成人无码影片精品久久久 | 在线播放免费人成毛片乱码 | 欧美肥老太牲交大战 | 国产亲子乱弄免费视频 | 亚洲自偷自拍另类第1页 | 老头边吃奶边弄进去呻吟 | 少妇性l交大片 | 99久久精品国产一区二区蜜芽 | 一个人免费观看的www视频 | 全球成人中文在线 | 国产亚洲精品久久久闺蜜 | 国产偷自视频区视频 | 精品日本一区二区三区在线观看 | 香蕉久久久久久av成人 | 曰韩无码二三区中文字幕 | 色偷偷人人澡人人爽人人模 | 一本久久伊人热热精品中文字幕 | 欧美精品无码一区二区三区 | 伊人色综合久久天天小片 | 2020久久香蕉国产线看观看 | 日韩精品一区二区av在线 | 十八禁真人啪啪免费网站 | 欧美三级a做爰在线观看 | 欧洲精品码一区二区三区免费看 | 国产精品亚洲五月天高清 | 国产午夜视频在线观看 | 亚洲精品中文字幕 | 中文字幕亚洲情99在线 | 粗大的内捧猛烈进出视频 | 亚洲天堂2017无码 | 97久久精品无码一区二区 | 国产精品永久免费视频 | 亚洲一区二区三区含羞草 | 中文字幕人妻无码一夲道 | 欧美人与牲动交xxxx | 久久午夜夜伦鲁鲁片无码免费 | 亚洲aⅴ无码成人网站国产app | 精品国产一区二区三区av 性色 | 人妻中文无码久热丝袜 | 九一九色国产 | 久久精品国产99精品亚洲 | 伊人色综合久久天天小片 | 超碰97人人射妻 | 欧美刺激性大交 | 亚洲欧美日韩综合久久久 | 狂野欧美性猛xxxx乱大交 | 亚洲色www成人永久网址 | 亚洲区小说区激情区图片区 | 国产免费久久精品国产传媒 | 国产内射爽爽大片视频社区在线 | 亚洲 高清 成人 动漫 | 国精产品一区二区三区 | 国产 浪潮av性色四虎 | 美女极度色诱视频国产 | 久久亚洲精品中文字幕无男同 | 欧美亚洲国产一区二区三区 | 国产精品久久久久久亚洲毛片 | 又色又爽又黄的美女裸体网站 | 国产电影无码午夜在线播放 | 小鲜肉自慰网站xnxx | 娇妻被黑人粗大高潮白浆 | 男人的天堂2018无码 | 日韩av无码中文无码电影 | 国产黄在线观看免费观看不卡 | 久久久亚洲欧洲日产国码αv | 亚洲国产精品无码久久久久高潮 | 免费人成在线视频无码 | 亚洲成a人一区二区三区 | 国产成人午夜福利在线播放 | 香蕉久久久久久av成人 | 成人无码视频免费播放 | a片在线免费观看 | 精品久久8x国产免费观看 | 日日摸天天摸爽爽狠狠97 | 久久综合给久久狠狠97色 | 日本免费一区二区三区最新 | 无码国产乱人伦偷精品视频 | 久9re热视频这里只有精品 | 无码av最新清无码专区吞精 | 国产一区二区三区日韩精品 | 88国产精品欧美一区二区三区 | 丝袜足控一区二区三区 | 欧美日韩视频无码一区二区三 | 久久人妻内射无码一区三区 | 无码国产激情在线观看 | 国产片av国语在线观看 | 精品一区二区三区无码免费视频 | 老子影院午夜精品无码 | 国产成人无码a区在线观看视频app | 亚洲精品中文字幕久久久久 | 亚洲精品一区二区三区四区五区 | 人妻夜夜爽天天爽三区 | 国产亚洲美女精品久久久2020 | 亚洲另类伦春色综合小说 | 久久午夜无码鲁丝片午夜精品 | 高清不卡一区二区三区 | 国产精品99爱免费视频 | 国产精品亚洲综合色区韩国 | aa片在线观看视频在线播放 | 成人aaa片一区国产精品 | 粉嫩少妇内射浓精videos | 搡女人真爽免费视频大全 | 久久国产精品偷任你爽任你 | 亚洲熟女一区二区三区 | 无码国内精品人妻少妇 | 小sao货水好多真紧h无码视频 | 美女扒开屁股让男人桶 | 国产亚洲精品久久久闺蜜 | 亚洲国产精品久久人人爱 | 日本大乳高潮视频在线观看 | 内射老妇bbwx0c0ck | 天天综合网天天综合色 | 午夜无码人妻av大片色欲 | 国产亚洲日韩欧美另类第八页 | 奇米影视7777久久精品人人爽 | 亚洲色欲色欲欲www在线 | 欧美兽交xxxx×视频 | 内射老妇bbwx0c0ck | 欧美性色19p | 性史性农村dvd毛片 | 高清不卡一区二区三区 | 精品久久综合1区2区3区激情 | 亚洲成av人在线观看网址 | 四虎国产精品免费久久 | 在线播放免费人成毛片乱码 | 在线观看欧美一区二区三区 | 午夜福利试看120秒体验区 | 性做久久久久久久免费看 | 小鲜肉自慰网站xnxx | 国产9 9在线 | 中文 | 偷窥村妇洗澡毛毛多 | 成人无码视频在线观看网站 | 无套内谢的新婚少妇国语播放 | 午夜福利不卡在线视频 | 丰满人妻一区二区三区免费视频 | 午夜成人1000部免费视频 | 少妇性俱乐部纵欲狂欢电影 | 少妇无码av无码专区在线观看 | 国产精品99久久精品爆乳 | 中文字幕日韩精品一区二区三区 | 日韩人妻无码中文字幕视频 | 精品国产国产综合精品 | 日韩少妇白浆无码系列 | 国产成人久久精品流白浆 | 久久国内精品自在自线 | 99麻豆久久久国产精品免费 | 亚洲一区二区三区 | 一个人看的视频www在线 | 色婷婷香蕉在线一区二区 | av无码不卡在线观看免费 | 波多野42部无码喷潮在线 | 久久精品无码一区二区三区 | 国产三级久久久精品麻豆三级 | 亚洲综合久久一区二区 | 狠狠综合久久久久综合网 | 精品人妻人人做人人爽夜夜爽 | 欧美日韩视频无码一区二区三 | 国产人妻人伦精品1国产丝袜 | 日本乱人伦片中文三区 | 国产精品美女久久久 | 精品无码成人片一区二区98 | 麻豆人妻少妇精品无码专区 | 国产在热线精品视频 | 九月婷婷人人澡人人添人人爽 | 日韩在线不卡免费视频一区 | 亚洲精品久久久久avwww潮水 | 日韩成人一区二区三区在线观看 | 欧洲极品少妇 | 99国产欧美久久久精品 | 波多野42部无码喷潮在线 | 精品人妻av区 | 无码人妻av免费一区二区三区 | 樱花草在线社区www | 国产精品资源一区二区 | 一本大道伊人av久久综合 | 亚洲成av人片天堂网无码】 | 国产成人无码一二三区视频 | 国产精品人妻一区二区三区四 | 久久 国产 尿 小便 嘘嘘 | 精品人妻av区 | 亚洲精品一区二区三区在线观看 | 精品国偷自产在线视频 | 日本va欧美va欧美va精品 | 黑人粗大猛烈进出高潮视频 | av无码电影一区二区三区 | 亚洲爆乳无码专区 | 日本一区二区三区免费播放 | 国产激情无码一区二区 | 少妇高潮喷潮久久久影院 | 人妻少妇精品无码专区动漫 | 在线播放无码字幕亚洲 | 荡女精品导航 | 国产精品自产拍在线观看 | 欧美精品免费观看二区 | 亚洲精品国产精品乱码不卡 | 99re在线播放 | 人人妻人人澡人人爽精品欧美 | 夫妻免费无码v看片 | 成年美女黄网站色大免费视频 | 国产日产欧产精品精品app | 国产欧美精品一区二区三区 | 国产精品美女久久久久av爽李琼 | 国产精品福利视频导航 | 国产在线aaa片一区二区99 | 男人的天堂2018无码 | 俄罗斯老熟妇色xxxx | 无遮挡国产高潮视频免费观看 | 国产精品亚洲а∨无码播放麻豆 | 久久久av男人的天堂 | 久久精品人人做人人综合 | 人人妻人人澡人人爽人人精品浪潮 | 国产又粗又硬又大爽黄老大爷视 | 亚洲欧美国产精品专区久久 | 久久久久免费看成人影片 | 日本熟妇乱子伦xxxx | 日韩av无码一区二区三区不卡 | 澳门永久av免费网站 | 国产极品视觉盛宴 | 中文无码成人免费视频在线观看 | 18精品久久久无码午夜福利 | 亚洲国产欧美日韩精品一区二区三区 | 久久人人97超碰a片精品 | 国产三级精品三级男人的天堂 | 亚洲欧美国产精品久久 | 国产成人午夜福利在线播放 | 国产精品对白交换视频 | 亚洲综合久久一区二区 | 黑人巨大精品欧美一区二区 | 色综合久久88色综合天天 | 欧洲熟妇色 欧美 | 日韩精品一区二区av在线 | 曰本女人与公拘交酡免费视频 | 国产av一区二区三区最新精品 | 亚洲国产av精品一区二区蜜芽 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产亚洲美女精品久久久2020 | 成人欧美一区二区三区 | 午夜成人1000部免费视频 | 亚洲日本va中文字幕 | 精品国偷自产在线 | 全球成人中文在线 | 无码免费一区二区三区 | 亚洲精品成a人在线观看 | 国产精品久久福利网站 | 欧美丰满老熟妇xxxxx性 | 免费男性肉肉影院 | 天堂无码人妻精品一区二区三区 | 天堂在线观看www | 玩弄人妻少妇500系列视频 | 国产精品18久久久久久麻辣 | 亚洲高清偷拍一区二区三区 | 国产乱子伦视频在线播放 | 欧美熟妇另类久久久久久不卡 | 成人毛片一区二区 | 国产亲子乱弄免费视频 | 中文字幕亚洲情99在线 | 国产成人无码av在线影院 | 无码人妻丰满熟妇区毛片18 | 亚洲中文无码av永久不收费 | 午夜福利一区二区三区在线观看 | 国产精品多人p群无码 | 亚洲精品国产精品乱码不卡 | 99久久人妻精品免费一区 | www一区二区www免费 | 亚洲一区二区三区 | 国产精品久久久午夜夜伦鲁鲁 | 国产精品18久久久久久麻辣 | 国产精品二区一区二区aⅴ污介绍 | 乱中年女人伦av三区 | 99视频精品全部免费免费观看 | 人人澡人人透人人爽 | 7777奇米四色成人眼影 | 免费乱码人妻系列无码专区 | 人人澡人摸人人添 | 日韩精品乱码av一区二区 | 日本www一道久久久免费榴莲 | av无码久久久久不卡免费网站 | 久久午夜无码鲁丝片午夜精品 | 亚洲精品午夜无码电影网 | 乌克兰少妇xxxx做受 | 97夜夜澡人人爽人人喊中国片 | 99精品无人区乱码1区2区3区 | 人妻少妇精品久久 | 国产xxx69麻豆国语对白 | 老太婆性杂交欧美肥老太 | 久久国语露脸国产精品电影 | 女人色极品影院 | 中文字幕无码乱人伦 | 久9re热视频这里只有精品 | 大肉大捧一进一出视频出来呀 | 国产超级va在线观看视频 | 亚洲午夜福利在线观看 | 国产猛烈高潮尖叫视频免费 | 国产在线精品一区二区三区直播 | 熟女俱乐部五十路六十路av | 国产69精品久久久久app下载 | 99视频精品全部免费免费观看 | 大肉大捧一进一出视频出来呀 | 无码任你躁久久久久久久 | 久久亚洲精品中文字幕无男同 | 久久99精品国产.久久久久 | 日本精品人妻无码77777 天堂一区人妻无码 | 久久人人爽人人爽人人片av高清 | 熟女少妇人妻中文字幕 | 久久久久久国产精品无码下载 | 又粗又大又硬毛片免费看 | 乌克兰少妇xxxx做受 | 欧美性生交活xxxxxdddd | 精品乱码久久久久久久 | 97se亚洲精品一区 | 天天躁日日躁狠狠躁免费麻豆 | 成人性做爰aaa片免费看不忠 | 欧美精品国产综合久久 | 任你躁国产自任一区二区三区 | 国产激情艳情在线看视频 | 中文字幕 亚洲精品 第1页 | 国产九九九九九九九a片 | 久久综合九色综合97网 | 麻豆国产人妻欲求不满谁演的 | 99精品国产综合久久久久五月天 | 午夜福利一区二区三区在线观看 | 精品亚洲韩国一区二区三区 | 国产精品久久久 | 成人女人看片免费视频放人 | 国产乱子伦视频在线播放 | 国产亚洲美女精品久久久2020 | 亚洲精品国产精品乱码不卡 | www国产精品内射老师 | 久久亚洲中文字幕精品一区 | 亚洲精品中文字幕乱码 | 18禁黄网站男男禁片免费观看 | 国产另类ts人妖一区二区 | 欧美肥老太牲交大战 | 久久综合给合久久狠狠狠97色 | 国产午夜无码视频在线观看 | 国产精品美女久久久网av | 欧洲极品少妇 | 久久这里只有精品视频9 | 国内丰满熟女出轨videos | 成人精品天堂一区二区三区 | 欧美高清在线精品一区 | 成 人 网 站国产免费观看 | 无码国产乱人伦偷精品视频 | 帮老师解开蕾丝奶罩吸乳网站 | 装睡被陌生人摸出水好爽 | 98国产精品综合一区二区三区 | 久久亚洲中文字幕无码 | 国产乱码精品一品二品 | 国产精品自产拍在线观看 | 国产精品无码mv在线观看 | 亚洲色欲久久久综合网东京热 | 久久精品丝袜高跟鞋 | 国内揄拍国内精品人妻 | 熟妇人妻无码xxx视频 | 国产av人人夜夜澡人人爽麻豆 | 亚洲中文无码av永久不收费 | 亚洲精品一区三区三区在线观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 激情国产av做激情国产爱 | 大胆欧美熟妇xx | 成人片黄网站色大片免费观看 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 亚洲人成网站在线播放942 | 中文字幕乱码亚洲无线三区 | 中文字幕人成乱码熟女app | 国产极品美女高潮无套在线观看 | 免费无码一区二区三区蜜桃大 | 无码福利日韩神码福利片 | 波多野结衣乳巨码无在线观看 | 国产真实乱对白精彩久久 | 亚洲中文字幕久久无码 | 亚洲精品综合一区二区三区在线 | 亚洲成a人一区二区三区 | 久久99热只有频精品8 | 亚洲成av人在线观看网址 | 3d动漫精品啪啪一区二区中 | 亚洲国产欧美日韩精品一区二区三区 | 精品厕所偷拍各类美女tp嘘嘘 | 久久aⅴ免费观看 | 亚洲大尺度无码无码专区 | 一二三四在线观看免费视频 | 人人澡人摸人人添 | 亚洲色成人中文字幕网站 | 久久久无码中文字幕久... | 十八禁视频网站在线观看 | 麻豆果冻传媒2021精品传媒一区下载 | 欧美日韩一区二区三区自拍 | 久久久久免费精品国产 | 中文无码精品a∨在线观看不卡 | 2020最新国产自产精品 | 在线精品亚洲一区二区 | 婷婷五月综合缴情在线视频 | 人人妻人人澡人人爽欧美一区 | 免费人成网站视频在线观看 | 无码国产激情在线观看 | 久久久无码中文字幕久... | 国产成人亚洲综合无码 | 图片区 小说区 区 亚洲五月 | 玩弄少妇高潮ⅹxxxyw | 亚洲第一网站男人都懂 | 欧洲精品码一区二区三区免费看 | 人妻少妇精品久久 | 99久久精品无码一区二区毛片 | 久久zyz资源站无码中文动漫 | 国产精品久久久久无码av色戒 | 久9re热视频这里只有精品 | 强开小婷嫩苞又嫩又紧视频 | 无码人中文字幕 | 亚洲成av人片在线观看无码不卡 | 国产成人综合美国十次 | 一本精品99久久精品77 | 日韩在线不卡免费视频一区 | 日日麻批免费40分钟无码 | 日日摸夜夜摸狠狠摸婷婷 | 玩弄中年熟妇正在播放 | 人妻有码中文字幕在线 | 99久久人妻精品免费一区 | 色老头在线一区二区三区 | 国产精品无码mv在线观看 | 亚洲日本va午夜在线电影 | 无码中文字幕色专区 | 亚洲一区二区三区偷拍女厕 | 亚洲中文字幕乱码av波多ji | 国产av久久久久精东av | 一本大道久久东京热无码av | 中文字幕人妻丝袜二区 | 欧美真人作爱免费视频 | 日韩在线不卡免费视频一区 | 亚洲综合另类小说色区 | 久激情内射婷内射蜜桃人妖 | 又粗又大又硬又长又爽 | 国精产品一品二品国精品69xx | 亚洲中文字幕va福利 | 国产农村乱对白刺激视频 | 中国女人内谢69xxxxxa片 | 偷窥村妇洗澡毛毛多 | 欧美日韩一区二区三区自拍 | 精品日本一区二区三区在线观看 | 色婷婷综合激情综在线播放 | 国产精品成人av在线观看 | 97人妻精品一区二区三区 | 国产av一区二区三区最新精品 | 中文精品久久久久人妻不卡 | 大地资源网第二页免费观看 | 夜夜高潮次次欢爽av女 | 中文字幕av无码一区二区三区电影 | 伊人久久大香线焦av综合影院 | 男女作爱免费网站 | 国产乱子伦视频在线播放 | 久久综合九色综合欧美狠狠 | а√资源新版在线天堂 | 亚洲精品一区二区三区婷婷月 | 男人的天堂2018无码 | 免费乱码人妻系列无码专区 | 国产高清不卡无码视频 | 粗大的内捧猛烈进出视频 | 色综合久久88色综合天天 | 国产亚洲欧美日韩亚洲中文色 | 日本一区二区更新不卡 | 国产无遮挡又黄又爽免费视频 | 国语精品一区二区三区 | 国产精品久久久久久亚洲毛片 | 国产两女互慰高潮视频在线观看 | 亚洲人成人无码网www国产 | 丰满人妻翻云覆雨呻吟视频 | 特大黑人娇小亚洲女 | 福利一区二区三区视频在线观看 | 国产麻豆精品一区二区三区v视界 | 人人超人人超碰超国产 | 欧美午夜特黄aaaaaa片 | 国产精品久久久av久久久 | 性做久久久久久久久 | 女人被男人躁得好爽免费视频 | 老司机亚洲精品影院无码 | 一本色道久久综合狠狠躁 | 国产精品久久精品三级 | 熟妇人妻无码xxx视频 | 亚洲一区二区三区四区 | 扒开双腿吃奶呻吟做受视频 | 中文字幕亚洲情99在线 | 激情内射亚州一区二区三区爱妻 | 未满成年国产在线观看 | 无码人妻少妇伦在线电影 | 中文毛片无遮挡高清免费 | 精品国产aⅴ无码一区二区 | 水蜜桃av无码 | 欧美丰满熟妇xxxx性ppx人交 | 又紧又大又爽精品一区二区 | 无套内谢的新婚少妇国语播放 | 色综合久久88色综合天天 | 亚洲精品鲁一鲁一区二区三区 | 国产精品高潮呻吟av久久 | 亚洲无人区午夜福利码高清完整版 | 性色欲情网站iwww九文堂 | 7777奇米四色成人眼影 | 天堂а√在线中文在线 | 国产无遮挡又黄又爽又色 | 特级做a爰片毛片免费69 | 亚洲の无码国产の无码步美 | 人人澡人人妻人人爽人人蜜桃 | 亚洲 日韩 欧美 成人 在线观看 | 久热国产vs视频在线观看 | 国产超级va在线观看视频 | 久久久久久av无码免费看大片 | 国产精品无码成人午夜电影 | 中文字幕 亚洲精品 第1页 | 午夜精品久久久内射近拍高清 | 宝宝好涨水快流出来免费视频 | 久久久精品456亚洲影院 | 老司机亚洲精品影院无码 | 97资源共享在线视频 | 国产做国产爱免费视频 | 国产乱人无码伦av在线a | 真人与拘做受免费视频一 | 超碰97人人做人人爱少妇 | 人妻少妇精品无码专区动漫 | 在线视频网站www色 | 国产精品手机免费 | 97人妻精品一区二区三区 | 久久久精品国产sm最大网站 | 日韩精品乱码av一区二区 | 131美女爱做视频 | 精品少妇爆乳无码av无码专区 | 国产熟妇高潮叫床视频播放 | 中文字幕无码乱人伦 | 国产深夜福利视频在线 | 麻花豆传媒剧国产免费mv在线 | 国产乱子伦视频在线播放 | 国产精品久久久久9999小说 | 成人无码影片精品久久久 | 娇妻被黑人粗大高潮白浆 | 一本久久a久久精品vr综合 | 欧美熟妇另类久久久久久多毛 | 久久精品人妻少妇一区二区三区 | 日韩精品无码免费一区二区三区 | 久久99精品国产麻豆蜜芽 | 免费网站看v片在线18禁无码 | 娇妻被黑人粗大高潮白浆 | 18黄暴禁片在线观看 | 在线精品亚洲一区二区 | 青青青手机频在线观看 | 亚洲午夜福利在线观看 | 亚洲精品中文字幕乱码 | 夜夜高潮次次欢爽av女 | 国产精品多人p群无码 | 成熟妇人a片免费看网站 | 日日躁夜夜躁狠狠躁 | 国产人妻人伦精品 | av无码不卡在线观看免费 | 日日麻批免费40分钟无码 | 99er热精品视频 | 日韩欧美中文字幕公布 | 中文字幕无码av激情不卡 | 小sao货水好多真紧h无码视频 | 99麻豆久久久国产精品免费 | 精品欧美一区二区三区久久久 | 丝袜美腿亚洲一区二区 | 蜜桃臀无码内射一区二区三区 | 免费中文字幕日韩欧美 | 初尝人妻少妇中文字幕 | 精品国产麻豆免费人成网站 | 老熟女重囗味hdxx69 | 人妻少妇被猛烈进入中文字幕 | 无码人妻精品一区二区三区不卡 | 国产人妻精品一区二区三区不卡 | 国产激情综合五月久久 | 丰满肥臀大屁股熟妇激情视频 | 无码福利日韩神码福利片 | 少妇人妻大乳在线视频 | 人妻夜夜爽天天爽三区 | 又黄又爽又色的视频 | 老司机亚洲精品影院无码 | 亚欧洲精品在线视频免费观看 | 夜精品a片一区二区三区无码白浆 | 国产人妻人伦精品 | 日韩视频 中文字幕 视频一区 | 亚洲精品久久久久avwww潮水 | 亚洲a无码综合a国产av中文 | 亚洲精品中文字幕乱码 | 51国偷自产一区二区三区 | 国产成人精品三级麻豆 | 亚洲成av人影院在线观看 | 亚洲乱亚洲乱妇50p | 国产精品无码成人午夜电影 | 色婷婷欧美在线播放内射 | 中国大陆精品视频xxxx | 日韩欧美中文字幕公布 | 少妇高潮一区二区三区99 | 99久久无码一区人妻 | 人人妻人人澡人人爽精品欧美 | 人人妻人人澡人人爽人人精品 | 国产成人人人97超碰超爽8 | 久久精品女人的天堂av | 俺去俺来也www色官网 | 久久无码人妻影院 | 精品亚洲成av人在线观看 | 奇米影视888欧美在线观看 | 亚洲欧美综合区丁香五月小说 | 亚洲国产欧美日韩精品一区二区三区 | 欧美 丝袜 自拍 制服 另类 | 无人区乱码一区二区三区 | 国产精品高潮呻吟av久久4虎 | 欧美人与善在线com | 免费无码一区二区三区蜜桃大 | 精品夜夜澡人妻无码av蜜桃 | 国产精品人妻一区二区三区四 | 美女极度色诱视频国产 | 国产亚洲精品久久久ai换 | 午夜福利一区二区三区在线观看 | 无码人妻出轨黑人中文字幕 | 亚洲成a人片在线观看日本 | 国产精品久久久久久亚洲毛片 | 亚洲 a v无 码免 费 成 人 a v | 成人无码精品一区二区三区 | 国产精品亚洲а∨无码播放麻豆 | 日本免费一区二区三区最新 | 国产成人无码区免费内射一片色欲 | 最新国产乱人伦偷精品免费网站 | 爽爽影院免费观看 | 午夜熟女插插xx免费视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 精品国产国产综合精品 | 中文字幕无码免费久久9一区9 | 久久精品视频在线看15 | 无码福利日韩神码福利片 | 欧美性猛交xxxx富婆 | 丰满人妻一区二区三区免费视频 | 日韩视频 中文字幕 视频一区 | 无码播放一区二区三区 | 午夜嘿嘿嘿影院 | 麻豆国产人妻欲求不满谁演的 | 在线播放免费人成毛片乱码 | 少妇被粗大的猛进出69影院 | 亚洲の无码国产の无码影院 | 午夜免费福利小电影 | 国产乱人偷精品人妻a片 | 久久久久亚洲精品中文字幕 | 宝宝好涨水快流出来免费视频 | 国产 浪潮av性色四虎 | 亚洲 欧美 激情 小说 另类 | 国产精品人妻一区二区三区四 | 日本欧美一区二区三区乱码 | 亚洲人成人无码网www国产 | 扒开双腿疯狂进出爽爽爽视频 | 国产成人精品视频ⅴa片软件竹菊 | 国产午夜福利100集发布 | 国产九九九九九九九a片 | 国产在线无码精品电影网 | 色五月五月丁香亚洲综合网 | 日日天日日夜日日摸 | 天天综合网天天综合色 | 亚洲精品国产品国语在线观看 | 国产精品va在线播放 | 国产莉萝无码av在线播放 | 最近中文2019字幕第二页 | 亚洲熟妇色xxxxx欧美老妇 | 久久精品中文字幕一区 | 四虎国产精品一区二区 | 天天拍夜夜添久久精品 | 黑人粗大猛烈进出高潮视频 | 亚洲熟妇自偷自拍另类 | 久久午夜无码鲁丝片午夜精品 | 俺去俺来也www色官网 | 青青青爽视频在线观看 | 国产九九九九九九九a片 | 青青久在线视频免费观看 | 国产激情无码一区二区app | 中文无码精品a∨在线观看不卡 | 鲁一鲁av2019在线 | 久久综合香蕉国产蜜臀av | 97精品国产97久久久久久免费 | 亚洲の无码国产の无码影院 | 国产人妻精品一区二区三区 | 色婷婷av一区二区三区之红樱桃 | 波多野结衣av一区二区全免费观看 | 国产人妻久久精品二区三区老狼 | 久久精品国产日本波多野结衣 | 亚洲日韩精品欧美一区二区 | 18禁黄网站男男禁片免费观看 | 国产成人一区二区三区在线观看 | 色婷婷av一区二区三区之红樱桃 | 国产成人人人97超碰超爽8 | 国产精品手机免费 | 婷婷五月综合激情中文字幕 | 中文精品久久久久人妻不卡 | 中文字幕亚洲情99在线 | 亚洲性无码av中文字幕 | 国产熟妇高潮叫床视频播放 | 一本色道久久综合狠狠躁 | 丁香啪啪综合成人亚洲 | 亚洲码国产精品高潮在线 | 国产在线精品一区二区三区直播 | 国产精品无码久久av | 国产精品久久精品三级 | 婷婷六月久久综合丁香 | 精品亚洲韩国一区二区三区 | 免费人成网站视频在线观看 | 国产小呦泬泬99精品 | 国产97在线 | 亚洲 | 国产精品自产拍在线观看 | 四虎国产精品一区二区 | 日本熟妇乱子伦xxxx | 国产午夜亚洲精品不卡下载 | 双乳奶水饱满少妇呻吟 | 亚洲 高清 成人 动漫 | 国产激情无码一区二区app | 麻豆果冻传媒2021精品传媒一区下载 | 国产人妻人伦精品1国产丝袜 | 日本www一道久久久免费榴莲 | 97色伦图片97综合影院 | 日韩精品一区二区av在线 | 麻豆成人精品国产免费 | 欧美变态另类xxxx | 午夜理论片yy44880影院 | 欧美日韩亚洲国产精品 | 巨爆乳无码视频在线观看 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 中文字幕无线码 | 精品人妻av区 | √天堂中文官网8在线 | 亚洲一区二区三区在线观看网站 | 亚洲国产成人av在线观看 | 国产免费久久久久久无码 | 国产精品欧美成人 | 国产成人无码a区在线观看视频app | 日韩精品无码一本二本三本色 | 四虎永久在线精品免费网址 | 玩弄少妇高潮ⅹxxxyw | 亚洲另类伦春色综合小说 | 国产精品久久久久久亚洲毛片 | 国产亚洲人成在线播放 | 亚洲精品国产第一综合99久久 | 天天爽夜夜爽夜夜爽 | 国产精品美女久久久 | 鲁鲁鲁爽爽爽在线视频观看 | 国产精品久久久久影院嫩草 | 日日摸天天摸爽爽狠狠97 | 中国大陆精品视频xxxx | 国产精品亚洲五月天高清 | 性欧美牲交xxxxx视频 | 少妇人妻偷人精品无码视频 | 亚洲а∨天堂久久精品2021 | 高潮毛片无遮挡高清免费视频 | 亲嘴扒胸摸屁股激烈网站 | 一个人免费观看的www视频 | 日韩av无码一区二区三区 | 国产精品第一国产精品 | 天下第一社区视频www日本 | 日韩在线不卡免费视频一区 | 国产午夜福利100集发布 | 强开小婷嫩苞又嫩又紧视频 | 亚洲伊人久久精品影院 | 双乳奶水饱满少妇呻吟 | 国产精品亚洲一区二区三区喷水 | 欧美放荡的少妇 | 夜先锋av资源网站 | 国产艳妇av在线观看果冻传媒 | 亚洲乱亚洲乱妇50p | 特级做a爰片毛片免费69 | 3d动漫精品啪啪一区二区中 | 内射后入在线观看一区 | 亚洲熟妇色xxxxx欧美老妇 | 狠狠色噜噜狠狠狠7777奇米 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 天堂一区人妻无码 | 在线观看欧美一区二区三区 | 国内少妇偷人精品视频 | 亚洲成av人在线观看网址 | 免费无码一区二区三区蜜桃大 | 中文字幕乱妇无码av在线 | 人人爽人人爽人人片av亚洲 | 日韩人妻无码一区二区三区久久99 | 中文字幕无码人妻少妇免费 | 波多野42部无码喷潮在线 | 无码av中文字幕免费放 | 一区二区三区乱码在线 | 欧洲 | 亚洲人成网站在线播放942 | 白嫩日本少妇做爰 | 国产成人综合在线女婷五月99播放 | 免费无码肉片在线观看 | 亚洲欧美精品aaaaaa片 | 国产女主播喷水视频在线观看 | 久久国产劲爆∧v内射 | 亚洲国产精品久久久天堂 | 人人妻人人澡人人爽欧美一区九九 | 波多野结衣 黑人 | www成人国产高清内射 | 久久亚洲日韩精品一区二区三区 | 精品久久综合1区2区3区激情 | 成人无码精品一区二区三区 | 成人精品视频一区二区 | 四虎国产精品免费久久 | 日本乱人伦片中文三区 | 国产成人精品视频ⅴa片软件竹菊 | 国产又粗又硬又大爽黄老大爷视 | 亚洲码国产精品高潮在线 | 97色伦图片97综合影院 | 中文字幕无码乱人伦 | 又大又硬又爽免费视频 | 丰满人妻一区二区三区免费视频 | 无码人妻精品一区二区三区下载 | 国产精品久久国产三级国 | 少妇邻居内射在线 | 亚洲经典千人经典日产 | 精品国产一区二区三区av 性色 | 无码人妻出轨黑人中文字幕 | 欧美人妻一区二区三区 | av无码久久久久不卡免费网站 | 日本www一道久久久免费榴莲 | 国产一区二区三区日韩精品 | 欧美 日韩 亚洲 在线 | 午夜精品一区二区三区的区别 | 国产又粗又硬又大爽黄老大爷视 | 久久zyz资源站无码中文动漫 | 人人妻人人澡人人爽欧美一区 | 亚洲中文无码av永久不收费 | 亚洲 高清 成人 动漫 | 久久久国产精品无码免费专区 | 中文字幕人妻无码一夲道 | 精品无码一区二区三区的天堂 | 中文字幕av日韩精品一区二区 | 欧美自拍另类欧美综合图片区 | 成人片黄网站色大片免费观看 | 麻豆果冻传媒2021精品传媒一区下载 | 精品久久久久香蕉网 | 亚洲大尺度无码无码专区 | 国产精品自产拍在线观看 | 亚洲中文字幕在线观看 | 乱人伦中文视频在线观看 | 亚洲精品欧美二区三区中文字幕 | 日韩精品无码免费一区二区三区 | 噜噜噜亚洲色成人网站 | 亚洲综合在线一区二区三区 | 又色又爽又黄的美女裸体网站 | 亚洲日韩av一区二区三区中文 | 精品国产乱码久久久久乱码 | 波多野结衣一区二区三区av免费 | 国产精品福利视频导航 | 国产成人无码一二三区视频 | 黑森林福利视频导航 | 鲁大师影院在线观看 | 两性色午夜视频免费播放 | 人妻中文无码久热丝袜 | 综合网日日天干夜夜久久 | 欧美大屁股xxxxhd黑色 | 黑人巨大精品欧美一区二区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲の无码国产の无码步美 | 久久精品中文字幕大胸 | 激情内射亚州一区二区三区爱妻 | 欧洲熟妇精品视频 | 久久久久se色偷偷亚洲精品av | 日本va欧美va欧美va精品 | 内射欧美老妇wbb | 国产精品高潮呻吟av久久 | 国产乱码精品一品二品 | 日本护士xxxxhd少妇 | av无码电影一区二区三区 | 亚洲色www成人永久网址 | 成人免费视频视频在线观看 免费 | 一个人看的视频www在线 | 亚洲gv猛男gv无码男同 | 精品国产一区av天美传媒 | 欧美乱妇无乱码大黄a片 | 欧美性生交xxxxx久久久 | 老子影院午夜伦不卡 | 波多野结衣av一区二区全免费观看 | 人人澡人人妻人人爽人人蜜桃 | 亚洲精品国产精品乱码不卡 | 熟女俱乐部五十路六十路av | 色欲人妻aaaaaaa无码 | 蜜臀av在线播放 久久综合激激的五月天 | 日韩无套无码精品 | 99精品国产综合久久久久五月天 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲精品综合五月久久小说 | 六月丁香婷婷色狠狠久久 | 国产av一区二区精品久久凹凸 | 人妻互换免费中文字幕 | 欧美喷潮久久久xxxxx | 色婷婷香蕉在线一区二区 | 久久国产精品精品国产色婷婷 | 狂野欧美性猛交免费视频 | 精品乱码久久久久久久 | 亚洲 a v无 码免 费 成 人 a v | 亚洲熟妇自偷自拍另类 | 99久久久国产精品无码免费 | 东京无码熟妇人妻av在线网址 | 国产农村乱对白刺激视频 | 欧美真人作爱免费视频 | 国产精品香蕉在线观看 | 55夜色66夜色国产精品视频 | 台湾无码一区二区 | 未满成年国产在线观看 | 日本精品人妻无码免费大全 | 亚洲の无码国产の无码影院 | 久久精品国产99精品亚洲 | 又色又爽又黄的美女裸体网站 | 精品午夜福利在线观看 | 激情五月综合色婷婷一区二区 | av香港经典三级级 在线 | 日韩亚洲欧美精品综合 | 曰韩无码二三区中文字幕 | 中文字幕乱码亚洲无线三区 | 我要看www免费看插插视频 | 波多野结衣乳巨码无在线观看 | 亚洲 日韩 欧美 成人 在线观看 | 99久久人妻精品免费一区 | 日本护士xxxxhd少妇 | 美女扒开屁股让男人桶 | 丝袜美腿亚洲一区二区 | 捆绑白丝粉色jk震动捧喷白浆 | 无套内谢的新婚少妇国语播放 | 无码一区二区三区在线 | 少妇被粗大的猛进出69影院 | 亚洲精品午夜无码电影网 | 亚洲一区二区三区偷拍女厕 | 偷窥村妇洗澡毛毛多 | 黑人巨大精品欧美黑寡妇 | 丝袜足控一区二区三区 | 久久精品中文字幕大胸 | 97无码免费人妻超级碰碰夜夜 | 国产精品亚洲lv粉色 | 午夜成人1000部免费视频 | 无码av最新清无码专区吞精 | 亚洲一区二区三区偷拍女厕 | 欧美三级a做爰在线观看 | 色诱久久久久综合网ywww | 国产av一区二区精品久久凹凸 | 日本精品少妇一区二区三区 | 亚洲欧美中文字幕5发布 | 无码乱肉视频免费大全合集 | 狠狠综合久久久久综合网 | 亚洲狠狠婷婷综合久久 | 精品乱子伦一区二区三区 | 欧美乱妇无乱码大黄a片 | 青春草在线视频免费观看 | 精品aⅴ一区二区三区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 精品无码一区二区三区的天堂 | www国产精品内射老师 | 377p欧洲日本亚洲大胆 | 在线观看国产一区二区三区 | 成人亚洲精品久久久久 | 国产精品人妻一区二区三区四 | 久久综合久久自在自线精品自 | 一本久道久久综合婷婷五月 | 人妻少妇精品无码专区动漫 | 18禁黄网站男男禁片免费观看 | 久久99精品国产麻豆蜜芽 | 日本一卡二卡不卡视频查询 | 日本一区二区三区免费高清 | 国产av一区二区精品久久凹凸 | 国产成人无码a区在线观看视频app | 强开小婷嫩苞又嫩又紧视频 | 无码人妻丰满熟妇区五十路百度 | 日本护士毛茸茸高潮 | 俺去俺来也www色官网 | 日日摸日日碰夜夜爽av | 久久久精品456亚洲影院 | 4hu四虎永久在线观看 | 国产成人精品必看 | 国产97色在线 | 免 | 麻豆精品国产精华精华液好用吗 | 日韩av无码一区二区三区不卡 | 国产精品毛多多水多 | 精品国产一区二区三区av 性色 | 欧美日韩一区二区三区自拍 | 日韩欧美成人免费观看 | 亚洲色偷偷偷综合网 | 妺妺窝人体色www婷婷 | 午夜性刺激在线视频免费 | 精品国偷自产在线视频 | 妺妺窝人体色www在线小说 | av无码电影一区二区三区 | 99精品无人区乱码1区2区3区 | 在线精品国产一区二区三区 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 未满小14洗澡无码视频网站 | 小泽玛莉亚一区二区视频在线 | 99视频精品全部免费免费观看 | 国产va免费精品观看 | 中文字幕无码热在线视频 | 精品国产福利一区二区 | 精品久久久久久亚洲精品 | 精品偷自拍另类在线观看 | 国产精品成人av在线观看 | 久久久久久亚洲精品a片成人 | 天堂亚洲2017在线观看 | 久久国内精品自在自线 | 久久综合狠狠综合久久综合88 | 3d动漫精品啪啪一区二区中 | av无码不卡在线观看免费 | 99久久99久久免费精品蜜桃 | 曰韩少妇内射免费播放 | 亚洲成a人片在线观看无码 | 乱码午夜-极国产极内射 | 麻豆人妻少妇精品无码专区 | 中文字幕日韩精品一区二区三区 | 人人超人人超碰超国产 | 一本色道久久综合狠狠躁 | 国产精品久久久久久久9999 | 国产99久久精品一区二区 | 国产精品无码一区二区三区不卡 | 国产精品久久久久影院嫩草 | 一本大道久久东京热无码av | 日日夜夜撸啊撸 | 天干天干啦夜天干天2017 | 伦伦影院午夜理论片 | 亚洲国产精品毛片av不卡在线 | 水蜜桃色314在线观看 | 日本一区二区三区免费播放 | 人妻少妇精品无码专区动漫 | 国产人妻精品一区二区三区 | 精品久久久中文字幕人妻 | 国产成人无码a区在线观看视频app | 国产精品美女久久久网av | 亚洲s码欧洲m码国产av | 女人被爽到呻吟gif动态图视看 | 九九久久精品国产免费看小说 | 亚洲自偷自偷在线制服 | 国产成人无码a区在线观看视频app | 中文字幕乱妇无码av在线 | 天堂亚洲免费视频 | 久久99国产综合精品 | 99久久久无码国产aaa精品 | 久激情内射婷内射蜜桃人妖 | 国产99久久精品一区二区 | 日韩av无码一区二区三区不卡 | 最近中文2019字幕第二页 | 人妻少妇精品久久 | 秋霞成人午夜鲁丝一区二区三区 | 国产精品无码mv在线观看 | 国产成人一区二区三区在线观看 | 日韩精品久久久肉伦网站 | 亚洲一区二区三区播放 | 一本精品99久久精品77 | 麻豆国产人妻欲求不满谁演的 | 国产免费观看黄av片 | 久久午夜无码鲁丝片 | 国产精品人妻一区二区三区四 | 国产精品对白交换视频 | 精品午夜福利在线观看 | 亚洲国产综合无码一区 | 久久99精品国产.久久久久 | 2020久久香蕉国产线看观看 | www一区二区www免费 | 久久精品国产精品国产精品污 | 国产偷自视频区视频 | 欧美一区二区三区 | 蜜桃臀无码内射一区二区三区 | 天堂亚洲2017在线观看 | 一本无码人妻在中文字幕免费 | 国产97人人超碰caoprom | 国产极品美女高潮无套在线观看 | 国内揄拍国内精品少妇国语 | 免费男性肉肉影院 | 亚洲精品中文字幕 | 国产精品美女久久久久av爽李琼 | 男女猛烈xx00免费视频试看 | 久久国产自偷自偷免费一区调 | 性生交大片免费看女人按摩摩 | 一本一道久久综合久久 | 亚洲熟熟妇xxxx | 无码人妻精品一区二区三区下载 | 欧美性生交活xxxxxdddd | 亚洲熟妇色xxxxx欧美老妇 | 国产精品久久久午夜夜伦鲁鲁 | 婷婷五月综合激情中文字幕 | 欧美黑人巨大xxxxx | 亚洲欧美综合区丁香五月小说 | 久久国产精品精品国产色婷婷 | 中文无码精品a∨在线观看不卡 | 久久天天躁狠狠躁夜夜免费观看 | 欧美丰满熟妇xxxx | 国内精品人妻无码久久久影院 | 少妇无码av无码专区在线观看 | www国产精品内射老师 | 国产精品内射视频免费 | 国产热a欧美热a在线视频 | www国产亚洲精品久久网站 | 久9re热视频这里只有精品 | 最新国产乱人伦偷精品免费网站 | 无码av中文字幕免费放 | 欧美黑人巨大xxxxx | 成年美女黄网站色大免费视频 | 国产香蕉尹人综合在线观看 | 精品无人国产偷自产在线 | 无码人妻出轨黑人中文字幕 | 亚洲国产精品久久人人爱 | 老熟妇仑乱视频一区二区 | 国产精品久久久久9999小说 | 对白脏话肉麻粗话av | 久久久久成人片免费观看蜜芽 | 久久久久久久久蜜桃 | 蜜臀av无码人妻精品 | 国产激情艳情在线看视频 | 少妇无码av无码专区在线观看 | 永久免费观看国产裸体美女 | 99久久久无码国产aaa精品 | 欧美日韩视频无码一区二区三 | 露脸叫床粗话东北少妇 | 色婷婷欧美在线播放内射 | 国产精品香蕉在线观看 | 午夜精品久久久内射近拍高清 | 高清国产亚洲精品自在久久 | 久久亚洲日韩精品一区二区三区 | 精品国产aⅴ无码一区二区 | 中文字幕无码热在线视频 | 99久久久无码国产aaa精品 | 精品无码av一区二区三区 | 又大又硬又爽免费视频 | 性生交片免费无码看人 | 国产av一区二区三区最新精品 | 日本丰满熟妇videos | 国产超碰人人爽人人做人人添 | 国产绳艺sm调教室论坛 | 又大又硬又黄的免费视频 | 好男人www社区 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 蜜桃臀无码内射一区二区三区 | 精品无码成人片一区二区98 | 久久久精品国产sm最大网站 | 丰满少妇高潮惨叫视频 | 国产综合在线观看 | 大胆欧美熟妇xx | 丰满人妻一区二区三区免费视频 | 日产精品高潮呻吟av久久 | 国产成人精品一区二区在线小狼 | 狠狠色欧美亚洲狠狠色www | 亚洲无人区午夜福利码高清完整版 | 黄网在线观看免费网站 | 国产精品丝袜黑色高跟鞋 | 小泽玛莉亚一区二区视频在线 | 女人高潮内射99精品 | 国产精品久久久 | 漂亮人妻洗澡被公强 日日躁 | 国产精品福利视频导航 | 久久久久久久人妻无码中文字幕爆 | 99久久精品无码一区二区毛片 | 99久久久国产精品无码免费 | 免费网站看v片在线18禁无码 | 天干天干啦夜天干天2017 |