iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

機器學習演算法可以根據輸入和輸出的類型分為四種。 監督式機器學習; 無監督機器學習; 半監督學習; 強化機器學習.
今天特別討論3種

監督學習

監督學習是一種機器學習方法,其中模型接受帶有標籤的訓練數據,並學習從輸入到輸出之間的映射關係。它的主要特點包括:

有標籤的訓練數據:監督學習需要有標籤的訓練數據,每個訓練示例都有一個已知的正確答案(標籤)。
預測或分類的目標:主要目標是預測輸出,例如二元分類(是/否)、多類分類(預測類別)、回歸(預測數值)等。
監督式算法:常見的監督學習算法包括線性回歸、決策樹、支持向量機、神經網絡等。
上一篇有提出範例

非監督學習(Unsupervised Learning)

非監督學習是一種機器學習方法,其中模型接受未標籤的訓練數據,試圖發現數據中的模式和結構。它的主要特點包括:

未標籤的訓練數據:不需要有標籤的訓練數據,通常用於發現數據的結構。
發現模式的目標:主要目標是發現數據的模式、結構或群組,例如聚類相似的數據點、降低數據的維度以簡化分析等。
非監督式算法:常見的非監督學習算法包括K均值聚類、主成分分析(PCA)、自動編碼器等。

非監督學習範例:投資組合優化
非監督學習可用於優化投資組合。例如,可以使用K均值聚類算法將股票分為不同的群組,然後根據每個群組的表現來調整投資權重。以下是一個簡單的sample:

# 引入所需的庫
from sklearn.cluster import KMeans
import numpy as np

# 創建一些示範數據
data = np.array([[1, 2], [2, 3], [5, 6], [7, 8], [8, 7]])

# 初始化K均值聚類模型,分成2個群組
model = KMeans(n_clusters=2)

# 訓練模型
model.fit(data)

# 獲得每個數據點的分組
labels = model.labels_
print("數據點的分組:", labels)

強化學習(Reinforcement Learning)

強化學習是一種機器學習方法,其中智能體(agent)學習如何在環境中採取行動,以最大化累積的回報(reward)。它的主要特點包括:

互動性:智能體通過與環境的互動學習,不需要標籤的訓練數據。
獎勵信號:智能體根據其行動在環境中獲得的獎勵信號來學習。
策略優化:目標是找到一個最佳策略,以在不同情境下最大化獎勵。

Q-learning

是強化學習的一種方法。Q-學習就是要記錄下學習過的策略,因而告訴智能體什麼情況下採取什麼行動會有最大的獎勵值。Q-學習不需要對環境進行建模,即使是對帶有隨機因素的轉移函數或者獎勵函數也不需要進行特別的改動就可以進行。
refrence by https://zh.wikipedia.org/zh-tw/Q%E5%AD%A6%E4%B9%A0

  1. 狀態(State)
    在Q-learning中,狀態代表智能體在某個時間點觀察到的環境的特定情境。狀態可以是任何描述環境的變數或特徵。在投資示例中,狀態可以是某個時間點的市場數據,如股票價格、交易量、財務指標等。

  2. 動作(Action)
    動作代表智能體可以在特定狀態下執行的操作或決策。在投資示例中,動作可以是買入、賣出或持有某支股票。

  3. 獎勵(Reward)
    獎勵是一個數值,表示智能體在特定狀態下執行特定動作後獲得的即時回報。在投資示例中,獎勵可以是交易後的利潤或損失,也可以是投資組合的總回報。

  4. Q值(Q-value)
    Q值是一個函數,它估計在特定狀態下執行特定動作後,智能體可以獲得的期望回報。Q值的更新遵循以下的Q-learning更新規則:

Q(s, a) = Q(s, a) + learning_rate * [reward + discount_factor * max(Q(s', a')) - Q(s, a)]

其中:

Q(s, a) 是在狀態 s 下執行動作 a 的Q值。
learning_rate 是學習速率,控制Q值的更新幅度。
reward 是智能體在狀態 s 下執行動作 a 後獲得的即時獎勵。
discount_factor 是折扣因子,表示未來獎勵的重要性。
max(Q(s', a')) 表示在下一個狀態 s' 中執行所有可能動作後的最大Q值。

Q-learning在投資中的範例

假設我們希望使用Q-learning來優化股票交易策略。以下是一個簡單的示例:

狀態(State)
我們選擇三個特徵來描述狀態:
1.當前股票價格
2.當前持有的股票數量
3.過去N個時間點的平均交易量

動作(Action)
我們考慮三個動作:
1.買入股票
2.賣出股票
3.保持持有

獎勵(Reward)
我們使用每日的股票價格變化作為即時獎勵,即 reward = 當天收盤價 - 前一天收盤價。

Q值(Q-value)
我們初始化一個Q值表格,其中包含每個狀態-動作組合的初始Q值。然後,我們使用Q-learning算法來不斷更新這些Q值,以最大化未來的總回報。

import numpy as np

# 初始化Q值表格
num_states = 10
num_actions = 3
Q = np.zeros((num_states, num_actions))

# 定義Q-learning參數
learning_rate = 0.1
discount_factor = 0.9
num_episodes = 1000

# Q-learning算法
for episode in range(num_episodes):
    state = 0  # 初始狀態
    done = False
    while not done:
        action = select_action(state)  # 選擇動作
        next_state, reward, done = take_action(state, action)  # 執行動作,獲得獎勵和下一個狀態
        # 更新Q值
        Q[state, action] = Q[state, action] + learning_rate * (reward + discount_factor *    np.max(Q[next_state, :]) - Q[state, action])
        state = next_state  # 進入下一個狀態

機器學習在投資中的應用範圍廣泛,從股票價格預測到投資組合優化和量化交易策略的優化。不同類型的學習,如監督學習、非監督學習和強化學習,都可以在投資中發揮重要作用。學會這些技術,並將它們應用於金融領域,可以幫助投資者做出更明智的決策並提高回報。無論您是新手還是經驗豐富的投資者,機器學習都為您提供了一個強大的工具箱,用於探索和實現更好的投資策略。


上一篇
淺談Machine Learning基礎
下一篇
自動化投資的基本概念
系列文
嘗試使用Python與Open Data 打造自動化投資30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言