• 沒有找到結果。

關研究,再介紹本雲端分散式系統的核心架構:Apache Storm 流式計算系統、

Kafka 訊息傳遞通道。

一、技術分析

相較於探究股價本身的實體條件決定是否進行投資的基本面分析

(Fundamental Analysis),技術分析(Technical Analysis)則是利用統計找出 過去曾經一再發生的市場規則,以規則來做為進出場投資的依據。技術分析又

(一) 支撐向量機(Support Vector Machine, 支持向量機, SVM)

SVM 是一種分類(Classification)的演算法,是由統計學習理論提出的一 種新的機器學習方法。

SVM 的主要概念在於一個特徵空間中,找出一個超平面(hyperplane),

藉由這個平面將資料分成兩類。以二維的角度來看,即是在一個平面上找出一 條直線,並以此將散佈在平面上之資料分開,而直線之考量必須極大化其邊界

(margin),畫出的直線邊界越大,預測精度則會越高。

圖 1 SVM 概念以二維平面呈現之示意圖 行模擬,總投報率達 208%,高出基準點 71 個百分比。Qinghua Wen, Zehong Yang, Yixu Song and Peifa Jia (2009) 透過 SVM 搭配股票箱理論(box theory)找 出股箱的上界和下界,交易策略便能以其作為買賣的決策依據,研究更針對了 牛市、熊市或者震盪趨勢的市場進行測試,皆能保證一定績效的呈現。在 Shom Prasad Das and Sdarsan Padhy (2012) 之研究中,以 SVM 針對印度的期貨 市場進行價位預測,並比較 SVM 以及另一種機器學習技術:Back propagation technique(BP),績效結果顯示出相較於 BP,SVM 具有較好的表現。

(二) 羅吉斯迴歸(Logistic Regression)

在社會科學中常使用到大量的類別資料,例如性別可以分為男女,一個人 有分為有感冒或沒感冒,宗教可以分為基督教、佛教、伊斯蘭教等。若類別變 數做為自變數(dependent variable)時,可以利用卡方分析來做資料的分析,但 若要使用身高、體重、收入等連續變數做為自變數時,常常受限於應變數為類

羅吉斯迴歸以二項式分配(Binomial Distribution)為出發點,假設應變數服 從二項式分配,線性模型為:

(三) 類神經網路(Neural Network)

輸入層(Input layer):透過許多神經元(Neuron)接受大量資訊。

輸出層(Output layer):資訊在神經元鏈接中傳輸、分析,形成預測結果。

隱藏層(Hidden layer):主要功能是增加類神經網路的複雜性,以模擬複雜的 非線性關係,好比人類的神經突觸連結越多,就會越 聰明。但過於複雜的類神經網路,會有過度學習導致 預測力降低的疑慮,所以並不是人工神經元越多越好。

lebeling Kaastra and Milton Boyd (1996) 在 1996 年的文獻中就已提出人工類 神經網路(artificial neural network, ANN)在財經相關的預測研究已經有相當程 度的成長,並且發展了一套 ANN 用於預測金融相關的時間序列資料。

Wensheng Dai, Jui-Yu Wu, Chi-Je Lu (2012) 應用了非線性獨立成分分析

(nonlinear independent component analysis, NLICA)搭配後傳導類神經網路

(backpropagation neural network, BPN)對日漸興盛的亞洲股市建立一個時間序 列的預測模型。運用 NLICA 來對資料進行前處理,再將前處理之資料交由 BPN 去學習,最後分別再對日經指數以及上海 B 股指數進行預測。該文獻中運

(四) 決策樹(Decision Tree)

決策樹經常被使用於 data mining,不僅可以分析數據,也可以做預測。決 策樹模型代表的是資料中的「屬性」與「值」之間的映射關係。

圖 4 決策樹示意圖

要從現有的資料中建立一顆決策樹,通常採用由上而下(Top-Down),以 遞迴的方式建立。唯一的要求是,資料的屬性必須是「類別型態」,若是連續 型數據,必須先離散化過後才可以開始建立決策樹。決策樹的本質是一種貪婪 演算法(Greedy Algorithm),一開始所有的訓練樣本(Training Set)都在根節 點,並以計算過後各屬性的統計性測量(例如資訊獲利)當作基礎,挑選最好 的屬性來當作分割點,反覆地將樣本分隔開來。

Muh-Cherng Wu, Sheng-Yu Lin and Chia-Hsin Lin (2006) 運用濾嘴投資法

(filter rule)找出許多個進出場時間點,將這些時間點用利用決策樹分類,並 與純粹的濾嘴投資法以及 Lin (2006) 提出的濾嘴投資法搭配基本面分析之參數 做比較。在台灣電子股以及那斯達克(NASDAQ)科技股兩個市場的測試下,

研究結果顯示有使用決策樹做分類的濾嘴投資分析法表現優於其他兩者。Jar-Long Wang and Shu-Hui Chan (2006) 也利用 Microsoft、Intel、IBM 的每日報價 以及技術指標來使用 two-layer bias decision tree,結果不僅在買進時間點和獲利 上有提升,在模型的學習速度、穩定度、簡易性都有所進展。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

調用和 ETL 等領域。 Storm 的部署管理非常簡單,而且,在同類的流式計 算工具,Storm 的性能也是非常出眾的。

(二) Storm 架構 1. 串流

串流(Stream)是 Storm 裡面的關鍵抽象。一個串流是一個沒有邊界 的元組(tuple)序列。Storm 提供一些原語來分散式地、可靠地把一個串 流傳輸進一個新的串流。

Storm 提供的最基本的處理串流的原語是 Spout 和 Bolt。你可以實現 Spout 和 Bolt 對應的接口以處理你的應用的邏輯。

2. Spout

通常 Spout 會從外部資料源讀取資料,然後封裝成元組形式,之後發 送到 Stream 中。Spout 是一個主動的角色,在接口內部有個 nextTuple 函 數,Storm 框架會不停的調用該函數。

3. Bolt

Bolt 是一個被動的角色,其接口中有一個 execute(Tuple input)方法,

在接收到消息之後會調用此函數,用戶可以在此方法中執行自己的處理邏 輯。

4. Topology

Spout 和 Bolt 所組成一個網路會被打包成 Topology 交給 Storm 運行,

Topology 是 Storm 裡面最高等級的抽象,裡面的每一個節點都是平行運行,

並且會一直運行到停止它為止。

圖 5 Topology 示意圖

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

Storm 使用元組來做為它的資料模型。Topology 裡面的每個節點必須 定義它要發射的 tuple 的每個參數,元組本來應該是一個 Key-Value 的 Map,由於各個組件間傳遞的元組的參數名稱已經事先定義好了,所以元 組只需要按序填入各個值,就是一個值串鏈,而一段連續源源不絕的元組 就組成了串流。

四、Kafka

(一) Kafka 簡介

Apache Kafka 是由 Apache 開發的一個開源分散式訊息傳遞系統,由 Scala 寫成。Kafka 最初是由 LinkedIn 開發,並於 2011 年初開源。2012 年 10 月從 Apache Incubator 畢業。該項目的目標是為處理實時數據提供一個 統一、高通量、低等待的平台。

(二) Kafka 架構

圖 6 Kafka 佈署架構 1. Topics and 日誌

生產者(Producer)可以定義 Topic 並將訊息傳至該 Topic 上,而消 費者(consumer)則從 Topic 上來接收訊息。Topic 使用分隔日誌

(partition log)來紀錄訊息的順序,而每一筆訊息都是用 offset 來做為自 己的 id,Kafka 保證所有的訊息能夠存在一段時間,並且保證分隔內的訊 息會按照順序交給消費者。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

圖 7 Kafka Topic 的分隔日誌示意圖 2. 分配(Distribution)

Kafka 的分隔日誌會分散到叢集上的各個機器上,且一個分隔會由一 台機器作為領導(leader),零至多台機器作為追隨者(followers)。追隨 者為副本,若領導不幸陣亡追隨者則會頂上成為新的領導。

3. 生產者

生產者可以指定訊息要傳遞到哪個 Topic,並指定 Topic 裡的訊息分 配到哪幾個分隔上。

4. 消費者和消費者群組(Consumer Group)

消費者能向 Topic 取得訊息,採用佇列(Queuing)和廣播-訂閱

(Publish-Subscribe)機制。兩種機制的綜合運用則為消費者群組,消費 者會自己定義標籤,標籤相同者為同一組且成員可分散在不同機器上。每 一分隔對一組群組為佇列機制,該群組只會有一個消費者收到訊息,再用 輪詢方式交給其他消費者。對多個群組時則為廣播-訂閱機制廣播給所有 訂閱者。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

圖 8 Kafka 傳遞機制示意圖 5. Zookeeper

在一個分散式的系統下,每一個伺服器都會各自的任務,在這當中 最常會遇到的問題為在一個時間點之下,該如何知道哪些伺服器還正常運 作,哪些出錯了?這就是 Zookeeper 所關注的問題,Zookeeper 負責偵測移 除或新加入的 中介者(Broker) 或消費者以及維護消費關係

(Consumption Relationship)。

相關文件