陸紅
摘要:大數(shù)據(jù)分析有很多方法,由于大數(shù)據(jù)的特點(diǎn)、數(shù)據(jù)量大、非結(jié)構(gòu)化、屬性不確定等特點(diǎn),建立大數(shù)據(jù)分析模型比較困難,本文通過房?jī)r(jià)大數(shù)據(jù)分析案例,介紹如何通過機(jī)器學(xué)習(xí)構(gòu)建大數(shù)據(jù)分析模型的途徑和方法,文章重點(diǎn)介紹了如何準(zhǔn)備大數(shù)據(jù)分析模型的訓(xùn)練數(shù)據(jù)方法,介紹了房?jī)r(jià)大數(shù)據(jù)分析模型機(jī)器學(xué)習(xí)算法、機(jī)器學(xué)習(xí)路徑,大數(shù)據(jù)分析模型構(gòu)建方法等,為從事大數(shù)據(jù)分析的研究人員提供一些可借鑒的經(jīng)驗(yàn)和方法。
關(guān)鍵詞:大數(shù)據(jù);分析模型;房?jī)r(jià)
中圖分類號(hào):TP399 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2017)03-0137-02
1 引言
大數(shù)據(jù)分析首先要建立一個(gè)分析模型,分析模型是大數(shù)據(jù)分析的基石,只有先建立了模型才能對(duì)大數(shù)據(jù)進(jìn)行分析。構(gòu)建大數(shù)據(jù)分析模型傳統(tǒng)的方法很難實(shí)現(xiàn),大數(shù)據(jù)非結(jié)構(gòu)化、屬性很難預(yù)知,通過數(shù)學(xué)、統(tǒng)計(jì)學(xué)等方法構(gòu)建大數(shù)據(jù)分析模型都比較困難,機(jī)器學(xué)習(xí)是構(gòu)建大數(shù)據(jù)分析模型最有效的方法之一。機(jī)器學(xué)習(xí)通過不斷地學(xué)習(xí)優(yōu)化、不斷地迭代逼近所要的模型。
2 訓(xùn)練數(shù)據(jù)準(zhǔn)備
機(jī)器學(xué)習(xí)構(gòu)建大數(shù)據(jù)分析模型的方法是通過訓(xùn)練數(shù)據(jù)將模型訓(xùn)練出來。從要研究的大數(shù)據(jù)對(duì)象中找出訓(xùn)練集。機(jī)器學(xué)習(xí)分為監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí),監(jiān)督學(xué)習(xí)需要教師,監(jiān)督機(jī)器學(xué)習(xí)的結(jié)果,事先設(shè)定好學(xué)習(xí)目標(biāo),期望的結(jié)果。非監(jiān)督學(xué)習(xí)的數(shù)據(jù)一般都無標(biāo)簽,學(xué)習(xí)結(jié)果事先也無法預(yù)知,通過數(shù)據(jù)可視化等方法觀察學(xué)習(xí)結(jié)果。
房?jī)r(jià)大數(shù)據(jù)分析模型機(jī)器學(xué)習(xí)屬于監(jiān)督學(xué)習(xí),期望預(yù)測(cè)值極大地逼近真實(shí)值。首先需要采集房?jī)r(jià)數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),然后設(shè)計(jì)房?jī)r(jià)大數(shù)據(jù)分析模型機(jī)器學(xué)習(xí)算法,計(jì)算機(jī)通過機(jī)器學(xué)習(xí)算法和學(xué)習(xí)路徑學(xué)習(xí)訓(xùn)練數(shù)據(jù),學(xué)習(xí)目標(biāo)是預(yù)測(cè)的結(jié)果極大地逼近真實(shí)數(shù)據(jù),通過反復(fù)迭代,不斷地接近目標(biāo),訓(xùn)練出所希望的模型。
3 數(shù)據(jù)清洗
清洗后的訓(xùn)練數(shù)據(jù)如下:
間數(shù)(x1) x1 2 x1 2 x1 3 x1 3 x1 3 x1 3 x1 2 x1 2 x1 2 x1 3 x1 3 x1 3 x1 2 x1 2 x1 1 x1 3 x1 3 x1 3 x1 3 x1 1 x1 2 x1 2 x1 2 x1 2 x1 2 x1 3 x1 2 x1 3 x1 2 x1 2 x1 3 x1 2 x1 2 x1 3 x1 3 x1 3 x1 2 x1 3 x1 2 x1 1 x1 2 x1 2 x1 2 x1 2
面積(x2) x2 126 x2 99 x2 134 x2 137 x2 135 x2 138 x2 104 x2 99 x2 105 x2 126 x2 112 x2 116 x2 88 x2 90 x2 79 x2 120 x2 155 x2 158 x2 161 x2 66 x2 108 x2 88 x2 111 x2 103 x2 104 x2 131 x2 105 x2 130 x2 102 x2 105 x2 148 x2 98 x2 100 x2 128 x2 110 x2 101 x2 121 x2 127 x2 103 x2 67 x2 78 x2 71 x2 81 x2 77
價(jià)格(y1) y1 460 y1 425 y1 515 y1 580 y1 630 y1 600 y1 425 y1 439 y1 435 y1 608 y1 460 y1 460 y1 410 y1 380 y1 340 y1 520 y1 685 y1 680 y1 630 y1 328 y1 532 y1 405 y1 495 y1 470 y1 480 y1 690 y1 480 y1 690 y1 462 y1 495 y1 540 y1 440 y1 510 y1 599 y1 395 y1 450 y1 455 y1 595 y1 403 y1 295 y1 315 y1 345 y1 355 y1 335
4 房?jī)r(jià)大數(shù)據(jù)分析模型機(jī)器學(xué)習(xí)算法
機(jī)器學(xué)習(xí)首先要設(shè)計(jì)機(jī)器學(xué)習(xí)學(xué)習(xí)算法,設(shè)計(jì)機(jī)器學(xué)習(xí)學(xué)習(xí)路徑,機(jī)器學(xué)習(xí)解決的問題通??煞譃轭A(yù)測(cè)和分類兩類問題。首先我們分析一下要解決的問題是屬于預(yù)測(cè)問題還是分類問題,然后選擇相應(yīng)的學(xué)習(xí)算法,設(shè)計(jì)學(xué)習(xí)路徑,通過訓(xùn)練數(shù)據(jù)訓(xùn)練和機(jī)器學(xué)習(xí)構(gòu)建大數(shù)據(jù)分析模型。模型通過訓(xùn)練數(shù)據(jù)訓(xùn)練出來以后,對(duì)模型進(jìn)行檢驗(yàn),然后不斷進(jìn)行優(yōu)化,以達(dá)到我們所期望的精度。
以下是梯度下降機(jī)器學(xué)習(xí)算法和學(xué)習(xí)路徑:
首先建立一個(gè)估值函數(shù)(模型)如下:
x為自變量(特征參數(shù)),h(x)為應(yīng)變量(房?jī)r(jià)的估值),希望求出此函數(shù)的系數(shù)θ0、θ1,構(gòu)成一個(gè)完整的函數(shù),此函數(shù)就是我們要構(gòu)建的大數(shù)據(jù)分析模型。
我們建立一個(gè)成本函數(shù),希望預(yù)測(cè)值與真實(shí)值的差趨近于0,也就是成本函數(shù)值趨近于0。
J(Θ0, Θ1)=
其中:
X(I)表示向量X中的第i個(gè)元素;
Y(I)表示向量Y中的第i個(gè)元素;
表示已知的假設(shè)函數(shù);
m為訓(xùn)練集的數(shù)量;
Gradient Descent梯度下降方法機(jī)器學(xué)習(xí)步驟:
(1)先隨機(jī)選定一個(gè)初始點(diǎn);
(2)確定梯度下降方向;
(3)通過實(shí)驗(yàn)確定下降步伐,學(xué)習(xí)率Learning rate;
(4)通過不斷地遞歸,收斂到極小值;
通過梯度下降法使成本函數(shù)趨于0,在此條件下求得自變量的系數(shù)θ0和θ1,將此θ0和θ1帶入到函數(shù)中得到我們要的模型。
下面是介紹如何運(yùn)用梯度下降法,經(jīng)過反復(fù)迭代求出θ0和θ1:
梯度下降是通過不停的迭代,最后沿梯度下降到最低點(diǎn),收斂到一個(gè)我們滿意的數(shù)據(jù),誤差趨近于0時(shí)迭代結(jié)束,此時(shí)的θ0和θ1正是我們要求的函數(shù)自變量的系數(shù),有了θ0和θ1,這個(gè)假設(shè)的函數(shù)就建立起來了,這個(gè)函數(shù)就是我們要建的大數(shù)據(jù)分析模型。
梯度下降法分為批量梯度下降法和隨機(jī)梯度下降法,批量梯度下降法速度較慢,每次迭代都要所有訓(xùn)練數(shù)據(jù)參與;隨機(jī)梯度下降精度差一些,容易在極值周圍震蕩;房?jī)r(jià)大數(shù)據(jù)分析模型采用的是實(shí)時(shí)數(shù)據(jù)梯度下降法(Real Time Online Gradient Descent),可以隨著房?jī)r(jià)的變化隨時(shí)修正模型的參數(shù)。
5 構(gòu)建房?jī)r(jià)大數(shù)據(jù)分析模型
通過數(shù)據(jù)可視化,我們可以看到房?jī)r(jià)數(shù)據(jù)趨于線性,所以我們采用線性回歸構(gòu)建房?jī)r(jià)大數(shù)據(jù)分析模型。采用監(jiān)督學(xué)習(xí),先給定一個(gè)訓(xùn)練集,根據(jù)這個(gè)訓(xùn)練集學(xué)習(xí)出一個(gè)線性函數(shù),然后檢驗(yàn)這個(gè)函數(shù)訓(xùn)練的好壞,即此函數(shù)是否足夠擬合訓(xùn)練集數(shù)據(jù),不斷優(yōu)化模型減少殘差,最大限度地接近真實(shí)值。
假設(shè)房?jī)r(jià)大數(shù)據(jù)分析模型:
y=aX1+bX2
通過梯度下降法,不斷遞歸,最后使假設(shè)值與實(shí)際值之差趨近于0,求得此時(shí)的模型變量系數(shù)a、b,構(gòu)建線性函數(shù)(房?jī)r(jià)大數(shù)據(jù)分析模型)。模型通過回歸診斷、交叉驗(yàn)證不斷進(jìn)行優(yōu)化,直到誤差達(dá)到要求。
以下是采用機(jī)器學(xué)習(xí)算法構(gòu)建的房?jī)r(jià)大數(shù)據(jù)分析模型,用R語言編寫房?jī)r(jià)大數(shù)據(jù)分析模型程序如下:
令:a=q1;b=q2;
將訓(xùn)練數(shù)據(jù)以數(shù)據(jù)框的形式存儲(chǔ)。
pricedata<-data.frame(
x1<-c(2,2,3,3,3,3,2,2,2,3,3,3,3,2,2,1,3,3,3,3,1,2,2,2,2,2,3,2,3,2,2,3,2,2,3,3,3,2,3,2,1,2,2,2,2),
x2<-c(126, 99, 134 , 137 , 135 , 138 , 104 , 99 , 105 , 105 , 126 , 112 , 116 , 88 , 90 , 79 , 120 , 155 , 158 , 161 , 66 , 108 , 88 , 111 , 103 , 104 , 131 , 105 , 130 , 102 , 105 , 148 , 98 , 100 , 128 , 110 , 101 , 121 , 103 , 67 , 78 , 71 , 81 , 77),
y<-c(460, 425, 515 , 580 , 630 , 600 , 425 , 439 , 435 , 435 , 608 , 460 , 460 , 410 , 380 , 340 , 520 , 685 , 680 , 630 , 328 , 532 , 405 , 495 , 470 , 480 , 690 , 480 , 690 , 462 , 495 , 540 , 440 , 510 , 599 , 395 , 450 , 595 , 403 , 295 , 315 , 345 , 355 , 335));
構(gòu)造梯度下降算法函數(shù),初始點(diǎn)q1=0、q2=0;下降速率d=0.0001。
grd2<-function(){
q1=0;
q2=0;
d=0.0001;
i=0;
m=9;
plot(y~x1+x2,data=pricedata,pch=16,col='red');
通過反復(fù)迭代得出估值函數(shù)系數(shù)q1、q2。
while (i<100000)
{
i=i+1;
q1=q1-d/m*(q1*x1+q2*x2-y)*x1;
q2=q2-d/m*(q1*x1+q2*x2-y)*x2;
}
return(q1);
return(q2);
}
grd2();
model2<-grd2();
summary(model2);
通過summary(model2)匯總出模型變量系數(shù)。
plot(model2);
通過數(shù)據(jù)可視化檢驗(yàn)擬合情況,不斷優(yōu)化房?jī)r(jià)大數(shù)據(jù)分析模型。