分享

机器学习+数据驱动的投资:监督学习、无监督学习与强化学习 代码

 AI量化实验室 2023-10-12 发布于北京

原创文章第90篇,专注“个人成长与财富自由、世界运作的逻辑, AI量化投资”。

今天开始要“数据驱动”下的金融

与理论驱动的不同,金融经济与物理数字不同,金融经济理论连猜想都谈不上,最多算是“假说”。因为金融有人的行为的参与,人是最复杂的的东西。“牛顿可以计算天体的运动,但计算不了人性的疯狂”。

也许大数据与AI的发展,可以试试。

首先要总体回顾一下当前的人工智能可以做点啥。

人工智能三种学习类型:

  • 有监督

  • 无监督

  • 强化学习

有监督从包含特征值标签值的数据集中进行学习。无监督学习仅从包含特征值的数据集中进行学习,通常是在数据中发现结构信息。在金融领域,无监督学习可以对股票进行分类。

强化学习通过“反复试错”,通过收到的奖励和惩罚来更新最佳行动策略。

强化学习通过应用于需要连续采取行动,并且可以获得即时反馈的环境,比如玩游戏。金融投资领域其实也是这样的场景。

01  无监督学习

这是一些notebook里条件的初始化:

import numpy as np
import pandas as pd
from pylab import plt, mpl
plt.style.use('seaborn')
mpl.rcParams['savefig.dpi'] = 300
mpl.rcParams['font.family'] = 'serif'
np.set_printoptions(precision=4, suppress=True)

然后随机生成100个点有四个中心点。

# 生成4组共100个点
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
x, y = make_blobs(n_samples=100, centers=4,
random_state=500, cluster_std=1.25)
plt.scatter(x[:,0],x[:,1])

使用无监督算法,可以把这4组数据分成4类,而并不需要标记。

以分类来标识颜色,可以看出,kmean模型完美地把数据按“中心点”分成了四组!

除聚类外,常见的无监督学习方法还是降维,比如PCA,之前的文章也分析过。

02  强化学习

通过模拟一个极简的场景。假设有状态空间5个,动作空间2个(猜正反)。如果随机“瞎猜”,那么100次,大约就是50次准确。

# 定义状态空间,正面=1,背面=0
ssp = [1, 1, 1, 1, 0]
# 定义动作空间, 押正面=1,押背面=0
asp = [1, 0]
def epoch():
tr = 0
for _ in range(100):
# 随机选一个动作
a = np.random.choice(asp)
# 随机选一个状态
s = np.random.choice(ssp)
# 如果选对了,奖励值+1
if a == s:
tr += 1
return tr

而当我们把“观察到”的状态加入动作空间里,奖励值会“显著”提到。

ssp = [1, 1, 1, 1, 0]
def epoch():
tr = 0
asp = [0, 1]
for _ in range(100):
a = np.random.choice(asp)
s = np.random.choice(ssp)
if a == s:
tr += 1
asp.append(s) # 加上这一句,把观察到的状态加到动作空间。
return tr

03 监督学习

从最小二乘法开始。

定义一个多项式函数 y= f(x) = 2* x(平方), - 1/3*x(立方)

绘出曲线图如下:

通过线性方程的解析解,y= ax + b,可以计算a,b的值。

这就是我们通过见到的“线性回归”。

而通过np内置的polyfit函数,可以拟合高阶多项式:

plt.figure(figsize=(10, 6))
plt.plot(x, y, 'ro', label='sample data')
for deg in [1, 2, 3]:
# 多项式函数拟合
reg = np.polyfit(x, y, deg=deg)
# reg是多项式 参数
y_ = np.polyval(reg, x)
MSE = ((y - y_) ** 2).mean()
print(f'deg={deg} | MSE={MSE:.5f}')
plt.plot(x, np.polyval(reg, x), label=f'deg={deg}')
plt.legend();

当阶数=3时,曲线得到完美的拟合!

使用sklearn的多层感知机,三个隐层,神经元的数量为256个每层,迭代5000次,完美拟合出了我们的多项式。——深度神经网络可以拟合任意函数。所以深度学习+强化学习 是数据驱动的金融投资的基础!

keras的代码由于环境问题待补充。

(代码+数据 以及可运行的notebook 请到星球下载)

小结:

机器学习+数据驱动的投资:监督学习、无监督学习与强化学习,用简单的代码把三种类型过了一下,给大家建立直观的印象。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多