第12組-SVM支援向量機在房地產投資上的應用

靜宜大學-財工系

摘要

支援向量機(Support Vector Machine)常被人簡稱叫做SVM。SVM是屬於機器學習裡監督式學習的一種分類演算法。而監督式學習也就是說我們有預先對我們的資料給定標記,讓我們的機器主動去學習,並且可以自己預測下一波的分類情況。然而,在這種運作底下,我們就必須要對我們的資料夠了解才能夠如此運行。而在近年來,相較於其他的機器學習演算法,SVM也受到相當熱門的被使用。

支援向量機的原理為在兩個不同的數據集合中間找到能將這兩個數據集合分開的超平面,同時也希望它的margin要最大。因此,我們就能找到唯一的最佳超平面。也就是圖(一)的虛線(Support hyperplane)到中間的那個最佳超平面(Optimal separating hyperplane)的距離。而從兩邊的Support hyperplanen所支撐起來的就叫做支援向量。

SVM是去假設有一個hyperplane(wx+b=0)可以完美分割兩組資料,所以SVM就是在找參數(w和b) 讓兩組之間的距離最大化。而我們定義Separating hyperplane與兩個Support hyperplane 的距離為d。

分別為d = (|b+1|-|b|)/||w|| = 1/||w|| if b ∈ (-1,0) 與 d = (|b+1|+|b|)/||w|| = 1/||w|| if b ∈ (-1,0)。

而兩個 Separating hyperplan 之間的距離自然就是二倍的d,也就是2d = 2/||w||。因此,我們從關係式得知,若要讓margin最大,則必須要讓法向量的長度(||w||)最小化。

圖(一)

成員介紹

 

指導教授: 念家興

chnien@pu.edu.tw

 
 

財工計算四: 倪宗侑

s1050103@pu.edu.tw

 

財工計算四: 陳振泓

s1052266@pu.edu.tw

 

財工計算四: 洪慶雄

s1052272@pu.edu.tw

 

研究架構

一開始我們對於多種數據之間相關性的分類有興趣,所以選擇了支援向量機當作我們的專題報告,利用程式語言Python將支援向量機的原理套用上,並依據不同數據集的各種資料類型去找尋適用的Kernel,最終將分類完的結果以視覺化的方式呈現給使用者,提供使用者做出最適合的決策。

而對SVM的原理有基礎的了解後,我們過去實驗SVM的分類模式是怎麼樣子,並知道它能夠分類的多好,以及我們就從iris的資料集裡面計算出它的平均值和共變異數,以亂數生成的方式製造出二維常態分佈,然後使用迴圈的方式,讓它做一千次的訓練,最後再從一千次平均下來的結果作為我們判斷的依據,而這樣的方式也就是所謂的大數法則。

再來利用常態分佈的概念,我們了解在二維常態分佈的情況下,藉由SVM的分類方式處理在標準差相同,但平均值不相同的情況下,它們中間交集的體積分類狀況為何。

然後,我們開始使用政府公開性的數據進行實驗,此公開性的數據為房屋相關的資料,資料內有許多資料,由於SVM分類型的演算法是監督式學習的演算法,所以我們必須對資料進行預先的處理,以人為的方式將資料分為標籤(Label) :單價平方公尺;參數(parameter) :交易標的、土地區段位置建物區段門牌、土地移轉總面積平方公尺、都市土地使用分區、總價元,再利用SVM將他們劃分為各種類型的地段,例如:二分法,將資料分為高價區與低價區,並由此判斷低價點位於高價區是否有可套利的機會。

過程中,我們想以地圖的方式呈現給使用者就必須先獲得各個房屋的經、緯度,所以我們使用了Python的套件、Selenium和Chrome爬蟲,並架設Python的開發環境,我們爬的資料來源為”台灣電子地圖服務網”,將地號轉換為經、緯度。

對資料的預先處理,我們利用了for迴圈以及numpy套件做了插入的動作,做了一個新的表格,內含有標籤(Label):單價平方公尺,我們從數據中找出最大值、最小值、中位數以及四分位數,做進行劃分的動作,也就是給予標籤;參數(parameter) :交易標的、土地區段位置建物區段門牌、土地移轉總面積平方公尺、都市土地使用分區、總價元,這些都是會影響我們價格的資料,因此特別選用這些當作參數。

然後,利用for迴圈將經度和緯度分別分成兩軸。接著再利用numpy.save指令,並給予檔名和矩陣將所爬下來的經緯度給存檔。然後,開一個新的檔案,把經緯度給讀進去後,再把數據集給讀入,由於經緯度原始資料為字串型態,則我們必須將它轉成浮點數型態,否則無法畫出經緯度圖形。而這個過程我們是利用for迴圈將它們分別轉成浮點數。

然而,在實驗過程中遇到了以下幾點問題:

1. 地號以及地址的差異,地址可以於網頁上批次作業查詢,而地號則無法。

2. 曾使用過for迴圈對單價平方公尺進行價格等級分類,但因為數據太大所以會浪費很多時間及記憶體。

3. 經緯度數據過大,難以爬蟲,因此我們只採用150筆數據來實驗。

4. 選擇隨機的種子亂數random_state,必須採用土法煉鋼方式。

5. 如何取捨爬蟲的數據多寡,影響是否能分得更詳細,以及有限的時間方面。

研究成果

 

北區

 

北區

 
 

北屯區

 

北屯區

 
 

大里區

 

大里區

 
 

太平區

 

太平區

 
 

大雅區

 

大雅區

 
 

大甲區

 

大甲區

 

以上的研究成果為分類出來台中市幾個地區的結果,分別為北區、北屯區、大里區、太平區、大雅區、大甲區。

備註: 藍色區域為低價區,紅色區域為高價區,藍色點為低價點,紅色點為高價點。