陸紅
摘要:大數(shù)據分析有很多方法,由于大數(shù)據的特點、數(shù)據量大、非結構化、屬性不確定等特點,建立大數(shù)據分析模型比較困難,本文通過房價大數(shù)據分析案例,介紹如何通過機器學習構建大數(shù)據分析模型的途徑和方法,文章重點介紹了如何準備大數(shù)據分析模型的訓練數(shù)據方法,介紹了房價大數(shù)據分析模型機器學習算法、機器學習路徑,大數(shù)據分析模型構建方法等,為從事大數(shù)據分析的研究人員提供一些可借鑒的經驗和方法。
關鍵詞:大數(shù)據;分析模型;房價
中圖分類號:TP399 文獻標識碼:A 文章編號:1007-9416(2017)03-0137-02
1 引言
大數(shù)據分析首先要建立一個分析模型,分析模型是大數(shù)據分析的基石,只有先建立了模型才能對大數(shù)據進行分析。構建大數(shù)據分析模型傳統(tǒng)的方法很難實現(xiàn),大數(shù)據非結構化、屬性很難預知,通過數(shù)學、統(tǒng)計學等方法構建大數(shù)據分析模型都比較困難,機器學習是構建大數(shù)據分析模型最有效的方法之一。機器學習通過不斷地學習優(yōu)化、不斷地迭代逼近所要的模型。
2 訓練數(shù)據準備
機器學習構建大數(shù)據分析模型的方法是通過訓練數(shù)據將模型訓練出來。從要研究的大數(shù)據對象中找出訓練集。機器學習分為監(jiān)督學習和非監(jiān)督學習,監(jiān)督學習需要教師,監(jiān)督機器學習的結果,事先設定好學習目標,期望的結果。非監(jiān)督學習的數(shù)據一般都無標簽,學習結果事先也無法預知,通過數(shù)據可視化等方法觀察學習結果。
房價大數(shù)據分析模型機器學習屬于監(jiān)督學習,期望預測值極大地逼近真實值。首先需要采集房價數(shù)據作為訓練數(shù)據,然后設計房價大數(shù)據分析模型機器學習算法,計算機通過機器學習算法和學習路徑學習訓練數(shù)據,學習目標是預測的結果極大地逼近真實數(shù)據,通過反復迭代,不斷地接近目標,訓練出所希望的模型。
3 數(shù)據清洗
清洗后的訓練數(shù)據如下:
間數(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
價格(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 房價大數(shù)據分析模型機器學習算法
機器學習首先要設計機器學習學習算法,設計機器學習學習路徑,機器學習解決的問題通??煞譃轭A測和分類兩類問題。首先我們分析一下要解決的問題是屬于預測問題還是分類問題,然后選擇相應的學習算法,設計學習路徑,通過訓練數(shù)據訓練和機器學習構建大數(shù)據分析模型。模型通過訓練數(shù)據訓練出來以后,對模型進行檢驗,然后不斷進行優(yōu)化,以達到我們所期望的精度。
以下是梯度下降機器學習算法和學習路徑:
首先建立一個估值函數(shù)(模型)如下:
x為自變量(特征參數(shù)),h(x)為應變量(房價的估值),希望求出此函數(shù)的系數(shù)θ0、θ1,構成一個完整的函數(shù),此函數(shù)就是我們要構建的大數(shù)據分析模型。
我們建立一個成本函數(shù),希望預測值與真實值的差趨近于0,也就是成本函數(shù)值趨近于0。
J(Θ0, Θ1)=
其中:
X(I)表示向量X中的第i個元素;
Y(I)表示向量Y中的第i個元素;
表示已知的假設函數(shù);
m為訓練集的數(shù)量;
Gradient Descent梯度下降方法機器學習步驟:
(1)先隨機選定一個初始點;
(2)確定梯度下降方向;
(3)通過實驗確定下降步伐,學習率Learning rate;
(4)通過不斷地遞歸,收斂到極小值;
通過梯度下降法使成本函數(shù)趨于0,在此條件下求得自變量的系數(shù)θ0和θ1,將此θ0和θ1帶入到函數(shù)中得到我們要的模型。
下面是介紹如何運用梯度下降法,經過反復迭代求出θ0和θ1:
梯度下降是通過不停的迭代,最后沿梯度下降到最低點,收斂到一個我們滿意的數(shù)據,誤差趨近于0時迭代結束,此時的θ0和θ1正是我們要求的函數(shù)自變量的系數(shù),有了θ0和θ1,這個假設的函數(shù)就建立起來了,這個函數(shù)就是我們要建的大數(shù)據分析模型。
梯度下降法分為批量梯度下降法和隨機梯度下降法,批量梯度下降法速度較慢,每次迭代都要所有訓練數(shù)據參與;隨機梯度下降精度差一些,容易在極值周圍震蕩;房價大數(shù)據分析模型采用的是實時數(shù)據梯度下降法(Real Time Online Gradient Descent),可以隨著房價的變化隨時修正模型的參數(shù)。
5 構建房價大數(shù)據分析模型
通過數(shù)據可視化,我們可以看到房價數(shù)據趨于線性,所以我們采用線性回歸構建房價大數(shù)據分析模型。采用監(jiān)督學習,先給定一個訓練集,根據這個訓練集學習出一個線性函數(shù),然后檢驗這個函數(shù)訓練的好壞,即此函數(shù)是否足夠擬合訓練集數(shù)據,不斷優(yōu)化模型減少殘差,最大限度地接近真實值。
假設房價大數(shù)據分析模型:
y=aX1+bX2
通過梯度下降法,不斷遞歸,最后使假設值與實際值之差趨近于0,求得此時的模型變量系數(shù)a、b,構建線性函數(shù)(房價大數(shù)據分析模型)。模型通過回歸診斷、交叉驗證不斷進行優(yōu)化,直到誤差達到要求。
以下是采用機器學習算法構建的房價大數(shù)據分析模型,用R語言編寫房價大數(shù)據分析模型程序如下:
令:a=q1;b=q2;
將訓練數(shù)據以數(shù)據框的形式存儲。
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));
構造梯度下降算法函數(shù),初始點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');
通過反復迭代得出估值函數(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ù)據可視化檢驗擬合情況,不斷優(yōu)化房價大數(shù)據分析模型。