云計算與大數據(第二版)分布式數據存儲與大數據挖掘_第1頁
云計算與大數據(第二版)分布式數據存儲與大數據挖掘_第2頁
云計算與大數據(第二版)分布式數據存儲與大數據挖掘_第3頁
云計算與大數據(第二版)分布式數據存儲與大數據挖掘_第4頁
云計算與大數據(第二版)分布式數據存儲與大數據挖掘_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

云計算與大數據第2版分布式文件存儲與大數據挖掘10.1分布式數據庫HBase10.2分布式數據倉庫Hive10.3大數據挖掘計算平臺Mahout實驗基于Hive的數據統(tǒng)計實驗基于Mahout的聚類實驗重點:Hbase概念與結構Hive體系結構Mahout中的協(xié)同過濾難點:Hbase、協(xié)同過濾本章重點及難點10.1分布式數據庫Hbase10.1.1HBase簡介HBase是Hadoop的子項目,它是一個面向列的分布式數據庫。它建立在HDFS之上,是能提供高可靠性、高性能、列存儲、可伸縮、實時讀寫的數據庫系統(tǒng)。HDFS實現了一個分布式的文件系統(tǒng),雖然這個文件系統(tǒng)能以分布和可擴展的方式有效存儲海量數據,但文件系統(tǒng)缺少結構化/半結構化數據的存儲管理和訪問能力,其編程接口對于很多應用來說還太底層了。就像有了NTFS這樣的單機文件系統(tǒng)后,我們還需要Oracle、IBMDB2、MicrosoftSQLServer這樣的數據庫來幫助我們管理數據一樣。HBase之于HDFS就類似于數據庫之于文件系統(tǒng)。10.1分布式數據庫Hbase10.1.1HBase簡介HBase存儲的數據介于映射(key/value)和關系型數據之間。能通過主鍵(rowkey)和主鍵的range來檢索數據,支持單行事務(可通過hive支持來實現多表join等復雜操作)。主要用來存儲非結構化和半結構化的松散數據。Hbase目標主要依靠橫向擴展,通過不斷增加廉價的商用服務器,來增加計算和存儲能力。它可以直接使用本地文件系統(tǒng),也可以使用Hadoop的HDFS文件存儲系統(tǒng)。10.1分布式數據庫Hbase10.1.1HBase簡介10.1分布式數據庫Hbase10.1.1HBase簡介HBase的特征包括:線性及模塊可擴展性;嚴格一致讀寫;可配置的表自動分割策略;RegionServer自動故障恢復;便利地備份MapReduce作業(yè)的基類;便于客戶端訪問的JavaAPI;為實時查詢提供了塊緩存和BloomFilter;可通過服務器端的過濾器進行查詢預測;提供了支持XML、Protobuf及二進制編碼的Thrift網管和REST-ful網絡服務;可擴展的JIRB(Jruby-based)shell;支持通過Hadoop或JMX將度量標準倒出到文件或Ganglia中。10.1分布式數據庫Hbase10.1.1HBase簡介HBase中表一般有如下的特點:大:一個表可以有上億行,上百萬列面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索。稀疏:對于為空(null)的列,并不占用存儲空間,因此,表可以設計的非常稀疏。10.1分布式數據庫Hbase10.1.2Hbase體系結構HBase的服務器體系結構遵從主從服務器架構,由HRegion服務器(HRegionServer)群和HBaseMaster服務器(HBaseMasterServer)構成。HBaseMaster服務器負責管理所有的HRegion服務器。而HBase中的所有服務器都是通過ZooKeeper來進行協(xié)調并處理HBase服務器運行期間可能遇到的錯誤。HBaseMaster服務器本身并不存儲HBase中的任何數據,HBase邏輯上的表可能被劃分成多個HRegion,然后存儲到HRegion服務器群中。HBaseMaster服務器中存儲的是從數據到HRegion服務器的映射。10.1分布式數據庫Hbase10.1.2Hbase體系結構10.1分布式數據庫Hbase10.1.2Hbase體系結構1、HRegion當表的大小超過設置值時,HBase會自動將表劃分到不同的區(qū)域,每個區(qū)域包含所有行的一個子集。對用戶來說,每個表是一堆數據的集合,靠主鍵來區(qū)分。從物理上來說,一張表是被拆分成了多塊,每一塊就是一個HRegion,用表名+開始/結束主鍵來區(qū)分每一個HRegion。一個HRegion會保存一個表中某段連續(xù)的數據,從開始主鍵到結束主鍵,一張完整的表格保存在多個Region上面。10.1分布式數據庫Hbase10.1.2Hbase體系結構2、HRegion服務器HRegion服務器主要負責響應用戶I/O請求,向HDFS文件系統(tǒng)中讀寫數據,是HBase中最核心的模塊。所有的數據庫數據一般是保存在Hadoop分布式文件系統(tǒng)上面的,用戶通過一系列HRegion服務器來獲取這些數據,一臺機器上面一般只運行一個HRegion服務器,且每一個區(qū)段的HRegion也只會被一個HRegion服務器維護。10.1分布式數據庫Hbase10.1.2Hbase體系結構2、HRegion服務器HRegion服務器包含兩部分:HLog部分和HRegion部分。其中HLog存儲數據日志。HRegion部分由很多的HRegion組成,存儲的是實際的數據。每一個HRegion又由許多Store組成,每一個Store存儲實際上是一個列族(ColumnFamily)下的數據。此外,在每一個Store中包含一塊MemStore。MemStore駐留在內存中,數據到來時首先更新到MemStore中,當達到閾值之后再更新到對應的StoreFile(又名HFile)中。每一個HStore集合包含了多個HStoreFile,HStoreFile負責的是實際的數據存儲,為HBase中最小的存儲單元。10.1分布式數據庫Hbase10.1.2Hbase體系結構3、HBaseMaster服務器每臺HRegion服務器都會和HMaster服務器通信,HMaster的主要任務就是要告訴每臺HRegion服務器它要維護哪些HRegion。當一臺新的HRegion服務器登錄到HMaster服務器時,HMaster會告訴它先等待分配數據。而當一臺HRegion死機時,HMaster會把它負責的HRegion標記為未分配,然后再把它們分配到其他HRegion服務器中。HBase通過ZooKeeper來保證系統(tǒng)中總有一個Master在運行。HMaster在功能上主要負責Table和HRegion的管理工作。10.1分布式數據庫Hbase10.1.2Hbase體系結構4、ZooKeeperZooKeeper存儲的是HBase中Root表和Meta表的位置。此外,ZooKeeper還負責監(jiān)控各個機器的狀態(tài)。當某臺機器發(fā)生故障時,ZooKeeper會第一個感知,并通知HBaseMaster進行相應的處理。當HBaseMaster發(fā)生故障時,ZooKeeper負責HBaseMaster的恢復工作,能夠保證在同一個時刻系統(tǒng)中只有一臺HBaseMaster提供服務。10.1分布式數據庫Hbase10.1.3Hbase數據模型1、物理模型HBase是一個類似GoogleBigtable的分布式數據庫,它是一個稀疏的長期存儲的(存儲在硬盤上)、多維度的、排序的映射表,這張表的索引是行關鍵字、列關鍵字和時間戳,HBase中的數據都是字符串,沒有類型。用戶在表格中存儲數據,每一行都有一個可排序的主鍵和任意多的列。由于是稀疏存儲,同一張里面的每一行數據都可以有截然不同的列。列名字的格式是"<family>:<qualifier>",都是由字符串組成的,每一張表有一個列族集合,這個集合是固定不變的,只能通過改變表結構來改變。但是qulifier值相對于每一行來說都是可以改變的。10.1分布式數據庫Hbase10.1.3Hbase數據模型2、概念視圖可以將一個表想象成一個大的映射關系,通過行健、行健+時間戳或行鍵+列(列族:列修飾符),就可以定位特定數據,HBase是稀疏存儲數據的,因此某些列可以是空白的。10.1分布式數據庫Hbase10.1.3Hbase數據模型2、概念視圖從上表可以看出,test表有r1和r2兩行數據,c1和c2兩個列族,在r1中,列族c1有三條數據,列族c2有兩條數據;在r2中,列族c1有一條數據,列族c2有一條數據,每一條數據對應的時間戳都用數字來表示。10.1分布式數據庫Hbase10.1.3Hbase數據模型3、物理視圖雖然從概念視圖來看每個表格是由很多行組成的,但是在物理存儲上面,它是按照列來保存的。10.1分布式數據庫Hbase10.1.4Hbase的基本操作HBase的部署可分為單機模式、偽分布模式以及完全分布模式。單機模式直接下載HBase的二進制tar.gz包解壓后配置Java路徑即可使用。偽分布模式的搭建下載解壓HBase壓縮包,先在Master機器上操作;修改配置文件conf/hbase-env.sh,conf/hase-site.xml;設置regionservers和環(huán)境變量;HBase安裝文件復制到HadoopSlave節(jié)點;先啟動Hadoop,再啟動Hbase。10.1分布式數據庫Hbase10.1.4Hbase的基本操作10.1分布式數據庫Hbase10.1.4Hbase的基本操作HBaseShell是為用戶提供的能通過Shell控制臺或腳本執(zhí)行HBase操作的接口。任務命令表達式1)一般操作

查詢數據庫狀態(tài)status查詢版本version2)數據庫操作

創(chuàng)建表create'表名稱','列名稱1','列名稱2','列名稱N'添加記錄put'表名稱','行名稱','列名稱:','值'查看記錄get'表名稱','行名稱'查看表中的記錄總數count'表名稱'刪除記錄delete'表名','行名稱','列名稱'刪除一張表先要屏蔽該表,才能對該表進行刪除,第一步disable'表名稱'第二步drop'表名稱'查看所有記錄scan"表名稱"查看某個表某個列中所有數據scan"表名稱",['列名稱:']10.2分布式數據倉庫Hive10.2.1Hive簡介Hive是建立在Hadoop上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數據的機制。Hive定義了簡單的類SQL查詢語言,稱為HiveQL。HiveQL允許熟悉SQL的用戶查詢數據。同時,也允許熟悉MapReduce的開發(fā)者自定義Mapper和Reducer操作,從而支持MapReduce框架。10.2分布式數據倉庫Hive10.2.1Hive簡介Hive的設計特點如下:支持不同的存儲類型,例如,純文本文件、HBase中的文件??蓪⒃獢祿4嬖陉P系數據庫中,減少了在查詢過程中執(zhí)行語義檢查的時間。可以直接使用存儲在Hadoop文件系統(tǒng)中的數據。內置大量用戶函數UDF來操作時間、字符串和其他的數據挖掘工具,支持用戶擴展UDF函數來完成內置函數無法實現的操作。采用類SQL的查詢方式,可將SQL查詢轉換為MapReduce的job在Hadoop集群上執(zhí)行。10.2分布式數據倉庫Hive10.2.2Hive體系結構10.2分布式數據倉庫Hive10.2.2Hive體系結構

(1)用戶接口用戶接口主要有三個:命令行接口(CommandLineInterface,CLI)、Client和網絡接口(WebUserInterface,WUI)。其中最常用的是CLI,當CLI啟動的時候,會同時啟動一個Hive副本。Client是Hive的客戶端,用戶連接至HiveServer(如前圖中的ThiftServer)。在啟動Client模式的時候,需要指出HiveServer所在節(jié)點,并且在該節(jié)點啟動HiveServer。WUI是通過瀏覽器訪問Hive。10.2分布式數據倉庫Hive10.2.2Hive體系結構(2)元數據存儲Hive將元數據存儲在數據庫中,如MySQL、Derby。Hive中的元數據包括表的名字、表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。(3)解釋器、編譯器、優(yōu)化器、執(zhí)行器解釋器、編譯器、優(yōu)化器完成HQL查詢語句從詞法分析、語法分析、編譯、優(yōu)化以及查詢計劃的生成。生成的查詢計劃存儲在HDFS中,并在隨后由MapReduce調用執(zhí)行。(4)HadoopHive的數據存儲在HDFS中,大部分的查詢由MapReduce完成(包含*的查詢,比如select*fromtbl會生成MapReduce任務)。10.2分布式數據倉庫Hive10.2.3Hive數據類型Hive的數據存儲模型有四種:表(Table),外部表(ExternalTable),分區(qū)(Partition),桶(Bucket)。(1)Hive中的Table和數據庫中的Table在概念上是類似的。在Hive中每一個Table都有一個相應的目錄存儲數據。例如,一個表ahpu,它在HDFS中的路徑為:/wh/ahpu,其中,wh是在hive-site.xml中由${hive.metastore.warehouse.dir}指定的數據倉庫的目錄,所有的Table數據(不包括ExternalTable)都保存在這個目錄中。(2)外部表是一個已經存儲在HDFS中,并具有一定格式的數據。使用外部表意味著Hive表內的數據不在Hive的數據倉庫內,它會到倉庫目錄以外的位置訪問數據。10.2分布式數據倉庫Hive10.2.3Hive數據類型1、Hive的數據存儲模型Hive的數據存儲模型有四種:表(Table),外部表(ExternalTable),分區(qū)(Partition),桶(Bucket)。(3)分區(qū)對應于數據庫中的分區(qū)列的密集索引,但是Hive中分區(qū)的組織方式和數據庫中的很不相同。在Hive中,表中的一個分區(qū)對應于表下的一個目錄,所有的分區(qū)的數據都存儲在對應的目錄中。(4)桶對指定列進行哈希(hash)計算,會根據哈希值切分數據,目的是為了并行,每一個桶對應一個文件。10.2分布式數據倉庫Hive10.2.3Hive數據類型1、Hive的數據存儲模型Hive的數據存儲模型有四種:表(Table),外部表(ExternalTable),分區(qū)(Partition),桶(Bucket)。(3)分區(qū)對應于數據庫中的分區(qū)列的密集索引,但是Hive中分區(qū)的組織方式和數據庫中的很不相同。在Hive中,表中的一個分區(qū)對應于表下的一個目錄,所有的分區(qū)的數據都存儲在對應的目錄中。(4)桶對指定列進行哈希(hash)計算,會根據哈希值切分數據,目的是為了并行,每一個桶對應一個文件。10.2分布式數據倉庫Hive10.2.3Hive數據類型2、Hive的元數據存儲管理Hive運行過程中,其元數據可能會不斷被讀取、更新和修改,因此這些元數據不宜存放在Hadoop的HDFS文件系統(tǒng)中,否則會降低元數據的訪問效率,進一步降低Hive的整體性能。目前,Hive使用一個關系型數據庫來存儲元數據。Hive可以通過三種方式連接到數據庫。(1)“單用戶”模式(2)“多用戶”模式(3)“遠程服務器”模式10.2分布式數據倉庫Hive10.2.3Hive數據類型3、Hive的數據類型(1)基本數據類型數據類型所占字節(jié)開始支持版本TINYINT1byte,-128~127

SMALLINT2byte,-32,768~32,767

INT4byte,-2,147,483,648~2,147,483,647

BIGINT8byte,-9,223,372,036,854,775,808~9,223,372,036,854,775,807

BOOLEAN

FLOAT4byte單精度

DOUBLE8byte雙精度

STRING

BINARY布爾型(true/false)從Hive0.8.0開始支持TIMESTAMP

從Hive0.8.0開始支持DECIMAL

從Hive0.11.0開始支持CHAR

從Hive0.13.0開始支持VARCHAR

從Hive0.12.0開始支持DATE

從Hive0.12.0開始支持10.2分布式數據倉庫Hive10.2.3Hive數據類型3、Hive的數據類型(2)復雜數據類型包括:ARRAY,MAP,STRUCT,UNION,這些復雜類型是由基礎類型組成的。10.2分布式數據倉庫Hive10.2.4Hive基本操作創(chuàng)建表:hive>

CREATE

TABLE

pokes

(foo

INT,

bar

STRING);

創(chuàng)建一個新表,結構與record表一樣hive>

create

table

new_table

like

records;

創(chuàng)建分區(qū)表:hive>

create

table

logs(ts

bigint,line

string)

partitioned

by

(dt

String,country

String);

加載分區(qū)表數據:hive>

load

data

local

inpath

'/home/Hadoop/input/hive/partitions/file1'

into

table

logs

partition

(dt='2001-01-01',country='GB');

展示表中有多少分區(qū):hive>

show

partitions

logs;

10.2分布式數據倉庫Hive10.2.4Hive基本操作展示所有表:hive>

SHOW

TABLES;

hive>

SHOW

TABLES

'.*s‘顯示表的結構信息hive>

DESCRIBE

invites;

更新表的名稱:hive>

ALTER

TABLE

source

RENAME

TO

target;

添加新一列hive>

ALTER

TABLE

invites

ADD

COLUMNS

(new_col2

INT

COMMENT

'a

comment');

10.2分布式數據倉庫Hive10.2.4Hive基本操作刪除表:hive>

DROP

TABLE

records;

刪除表中數據,但要保持表的結構定義hive>

dfs

-rmr

/user/hive/warehouse/records;

從本地文件加載數據:hive>

LOAD

DATA

LOCAL

INPATH

'/home/hadoop/input/ncdc/micro-tab/sample.txt'

顯示所有函數:hive>

show

functions;

查看函數用法:hive>

describe

function

substr;

10.2分布式數據倉庫Hive10.2.4Hive基本操作內連接:

hive>

SELECT

sales.*,

things.*

FROM

sales

JOIN

things

ON

(sales.id

=

things.id);

外連接:hive>

SELECT

sales.*,

things.*

FROM

sales

LEFT

OUTER

JOIN

things

ON

(sales.id

=

things.id);hive>SELECTsales.*,things.*FROMsalesRIGHTOUTERJOINthingsON(sales.id=things.id);hive>SELECTsales.*,things.*FROMsalesFULLOUTERJOINthingsON(sales.id=things.id);

10.2分布式數據倉庫Hive10.2.4Hive基本操作創(chuàng)建視圖:hive>CREATEVIEWvalid_recordsASSELECT*FROMrecords2WHEREtemperature!=9999;查看視圖詳細信息:hive>

DESCRIBE

EXTENDED

valid_records;10.3大數據挖掘計算平臺Mahout10.3.1Mahout簡介Mahout項目是由ApacheSoftwareFoundation(ASF)的開源項目,提供一些可擴展的機器學習領域經典算法的實現,旨在幫助開發(fā)人員更加方便、快捷地創(chuàng)建智能應用程序。發(fā)展至今,ApacheMahout項目目前已經有3個公開發(fā)行版本,包含許多實現,如聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用ApacheHadoop庫,Mahout可以有效地擴展到云中。10.3大數據挖掘計算平臺Mahout10.3.1Mahout簡介Mahout的機器學習算法算法類算法說明分類算法LogisticRegression邏輯回歸

Bayesian貝葉斯

SVM支持向量機

Perceptron感知器算法

NeuralNetwork神經網絡

RandomForests隨機森林

RestrictedBoltzmannMachines有限波爾茲曼機聚類算法CanopyClusteringCanopy聚類

K-meansClusteringK均值算法

FuzzyK-means模糊K均值

ExpectationMaximizationEM聚類(期望最大化聚類)

MeanShiftClustering均值漂移聚類

HierarchicalClustering層次聚類

DirichletProcessClustering狄里克雷過程聚類

LatentDirichletAllocationLDA聚類

SpectralClustering譜聚類關聯規(guī)則挖掘ParallelFPGrowthAlgorithm并行FPGrowth算法回歸LocallyWeightedLinearRegression局部加權線性回歸降維/維約簡SingularValueDecomposition奇異值分解

PrincipalComponentsAnalysis主成分分析

IndependentComponentAnalysis獨立成分分析

GaussianDiscriminativeAnalysis高斯判別分析進化算法并行化Watchmaker框架

推薦/協(xié)同過濾Non-distributedrecommendersTaste(UserCF,ItemCF,SlopeOne)

DistributedRecommendersItemCF向量相似度計算RowSimilarityJob計算列間相似度

VectorDistanceJob計算向量間距離非Map-Reduce算法HiddenMarkovModels隱馬爾科夫模型集合方法擴展Collections擴展了java的Collections類10.3大數據挖掘計算平臺Mahout10.3.1Mahout簡介TasteTaste是ApacheMahout提供的一個協(xié)同過濾算法的高效實現,它是一個基于Java實現,可擴展性強,它在Mahout中對一些推薦算法進行MapReduce編程模式轉化,從而可以利用Hadoop的分布式架構,提高了推薦算法的性能。10.3大數據挖掘計算平臺Mahout10.3.2Mahout中的協(xié)同過濾1.協(xié)同過濾協(xié)同過濾(CollaborativeFiltering,CF)是利用集體智慧的一個典型方法。要理解什么是協(xié)同過濾,首先想一個簡單的問題,如果你現在想看個電影,但你不知道具體看哪部,你會怎么做?大部分的人會問問周圍的朋友,看看最近有什么好看的電影推薦,而我們一般更傾向于從口味比較類似的朋友那里得到推薦。這就是協(xié)同過濾的核心思想。換句話說,協(xié)同過濾就是借鑒和你相關人群的觀點來進行推薦。10.3大數據挖掘計算平臺Mahout10.3.2Mahout中的協(xié)同過濾1、

協(xié)同過濾概念不同于基于內容的推薦,協(xié)同過濾主要是基于用戶行為的推薦。比如,協(xié)同過濾會在海量的用戶中發(fā)掘出一小部分和你品位比較類似的,這些用戶成為鄰居,然后根據他們喜歡的其他東西組織成一個排序的目錄作為推薦給你。當然其中存在的核心的問題是:如何確定一個用戶是不是和你有相似的品位?如何將鄰居們的喜好組織成一個排序的目錄?10.3大數據挖掘計算平臺Mahout10.3.2Mahout中的協(xié)同過濾2、協(xié)同過濾實現要實現協(xié)同過濾的推薦算法,要進行以下三個步驟:(1)收集數據這里的數據指的都是用戶的歷史行為數據,比如用戶的購買歷史,關注,收藏行為,或者發(fā)表了某些評論,給某個物品打了多少分等等,這些都可以用來作為數據供推薦算法使用,服務于推薦算法。需要特別指出的在于,不同的數據準確性不同,粒度也不同,在使用時需要考慮到噪音所帶來的影響。10.3大數據挖掘計算平臺Mahout10.3.2Mahout中的協(xié)同過濾2、協(xié)同過濾實現要實現協(xié)同過濾的推薦算法,要進行以下三個步驟:(2)找到相似用戶和物品計算用戶間以及物品間的相似度。以下是幾種計算相似度的方法:歐幾里德距離皮爾遜相關系數Cosine相似度Tanimoto系數10.3大數據挖掘計算平臺Mahout10.3.2Mahout中的協(xié)同過濾2、協(xié)同過濾實現要實現協(xié)同過濾的推薦算法,要進行以下三個步驟:(3)進行推薦計算相似度后,就可以進行推薦了。在協(xié)同過濾中,有基于用戶的協(xié)同過濾和基于項目(物品)的協(xié)同過濾兩種主流方法。10.3.2Mahout中的協(xié)同過濾

基于用戶的協(xié)同過濾基于物品的協(xié)同過濾10.3大數據挖掘計算平臺Mahout10.3.2Mahout中的協(xié)同過濾2、協(xié)同過濾實現基于用戶的協(xié)同過濾的基本思想是:基于用戶對物品的偏好找到相鄰鄰居用戶,然后將鄰居用戶喜歡的推薦給當前用戶。計算上,就是將一個用戶對所有物品的偏好作為一個向量來計算用戶之間的相似度,找到K鄰居后,根據鄰居的相似度權重以及他們對物品的偏好,預測當前用戶沒有偏好的未涉及物品,計算得到一個排序的物品列表作為推薦。如圖所示,對于用戶A,根據用戶的歷史偏好,這里只計算得到一個鄰居,即用戶C,然后將用戶C喜歡的物品D推薦給用戶A。10.3大數據挖掘計算平臺Mahout10.3.2Mahout中的協(xié)同過濾2、協(xié)同過濾實現基于物品的協(xié)同過濾的原理和基于用戶的協(xié)同過濾類似,只是在計算鄰居時采用物品本身,而不是從用戶的角度,即基于用戶對物品的偏好找到相似的物品,然后根據用戶的歷史偏好,推薦相似的物品給他。從計算的角度看,就是將所有用戶對某個物品的偏好作為一個向量來計算物品之間的相似度,得到物品的相似物品后,根據用戶歷史的偏好預測當前用戶還沒有表示偏好的物品,計算得到一個排序的物品列表作為推薦。對于物品A,根據所有用戶的歷史偏好,喜歡物品A的用戶都喜歡物品C,得出物品A和物品C比較相似,而用戶C喜歡物品A,那么可以推斷出用戶C可能也喜歡物品C。10.3大數據挖掘計算平臺Mahout10.3.2Mahout中的協(xié)同過濾3.Mahout中的協(xié)同過濾過程Mahout首先通過Taste庫建立一個針對協(xié)同過濾的推薦引擎。Taste支持基于用戶和基于物品(項目)的推薦,在它的用戶自定義的界面提供了許多推薦選項。借助這些組件以及它們的實現,開發(fā)人員可以構建復雜的推薦系統(tǒng),提供基于實時或者離線的推薦?;趯崟r的推薦經常只能處理數千用戶,而離線推薦具有更好的適用性。Taste甚至提供了一些可利用Hadoop離線計算推薦的工具,可以滿足包含大量用戶、項目和首選項的大型系統(tǒng)的需求。10.3大數據挖掘計算平臺Mahout10.3.2Mahout中的協(xié)同過濾3.Mahout中的協(xié)同過濾過程具體來說,Taste包含5個主要組件,用于確定用戶、項目和首選項,它們是:DataModel:用于存儲用戶、項目和首選項;UserSimilarity:用于定義兩個用戶之間的相似度的界面;ItemSimilarity:用于定義兩個項目之間的相似度的界面;Recommender:用于提供推薦的界面;UserNeighborhood:用于計算相似用戶鄰近度的界面,其結果隨時可由Recommender使用。10.3大數據挖掘計算平臺Mahout10.3.3Mahout中的分類和聚類1、分類分類(classification)一種有監(jiān)督的學習方法,它根據有標記的數據找出描述并區(qū)分數據類或概念的模型(或函數),以便能夠使用模型預測類標記未知的對象類。分類的目的是學會一個分類函數或分類模型(也常常稱作分類器),該模型能將未知的數據映射到給定類別中的某一個類中,從而實現分類的目標。分類器的構造方法有統(tǒng)計方法、機器學習方法、神經網絡方法等等。不同的分類器有不同的特點。常使用三種分類器評價指標:①預測準確度;②計算復雜度;③模型描述的簡潔度。10.3大數據挖掘計算平臺Mahout10.3.3Mahout中的分類和聚類2、聚類聚類(clustering)

是一種無監(jiān)督的學習方法,它是根據“物以類聚”的原理,將本身沒有類別的樣本聚集成不同的組,并且對每一個組對象進行描述的過程。這樣的一組數據對象的集合常被稱為簇,。聚類目的是使得屬于同一個簇的樣本之間應該彼此相似,而不同簇的樣本應該足夠不相似。與分類規(guī)則不同,進行聚類前并不知道將要劃分成幾個組和什么樣的組,也不知道根據哪些空間區(qū)分規(guī)則來定義組。聚類旨在發(fā)現空間實體的屬性間的函數關系,挖掘的知識用以屬性名為變量的數學方程來表示。常見的聚類算法包括:K-means聚類算

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論