def sign(x):
"""
输入:
x: 浮点数字
输出:
整型数值
"""
if x > 0:
return 1
elif x < 0:
return -1
else:
return 0
# 利用 numpy 对符号函数进行向量化
vec_sign = np.vectorize(sign)
# 定义 LASSO 回归损失函数
def l1_loss(X, y, w, b, alpha):
"""
输入
:param X: 输入变量矩阵
:param y: 输出标签向量
:param w: 变量参数权重矩阵
:param b: 偏置
:param alpha: 正则化系数
"""
# 训练样本量
num_train = X.shape[0]
# 训练特征数
num_features = X.shape[1]
# 回归模型预测输出
y_hat = np.dot(X, w) + b
# L1 损失函数
loss = np.sum((y_hat - y) ** 2) / num_train + np.sum(alpha*abs(w))
# 基于向量化符号函数的参数梯度计算
dw = np.dot(X.T, (y_hat - y)) / num_train + alpha * vec_sign(w)
db = np.sum((y_hat - y)) / num_train
"""
y_hat: 线性模型预测输出
loss: 均方损失值
dw: 权重系数一阶偏导
db: 偏置一阶偏导
"""
return y_hat, loss, dw, db
def initialize_params(dims):
"""
输入
:param dims: 训练数据变量维度
"""
# 初始化权重系数为零向量
w = np.zeros((dims, 1))
# 初始化偏置参数为零
b = 0
"""
w: 初始化权重系数值
b: 初始化偏置参数值
"""
return w, b
# 定义 LASSO 回归模型的训练过程
def lasso_train(X, y, learning_rate=0.01, epochs=1000):
"""
输入:
:param X: 输入变量矩阵
:param y: 输出标签向量
:param learning_rate: 学习率
:param epochs: 训练迭代次数
"""
# 记录训练损失的空列表
loss_his = []
# 初始化模型参数
w, b = initialize_params(dims=X.shape[1])
params, grads = {}, {}
# 迭代训练
for i in range(1, epochs):
# 计算当前迭代的预测值, 损失和梯度
y_hat, loss, dw, db = l1_loss(X=X, y=y, w=w, b=b, alpha=0.1)
# 基于梯度下降法的参数更新
w += (-learning_rate * dw)
b += (-learning_rate * db)
# 记录当前迭代的损失
loss_his.append(loss)
# 每 50 次迭代打印当前损失信息
if 0 == (i % 50):
print(f'epoch: {i}, loss: {loss}.')
# 将当前迭代步优化吼的参数保存到字典中
params = {
'w': w,
'b': b
}
# 将当前迭代步的梯度保存到字典中
grads = {
'dw': dw,
'db': db
}
return loss_his, params, grads
量化交易之机器学习篇 - 实现LASSO回归模型
原创
©著作权归作者所有:来自51CTO博客作者ErwinSmith的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
量化交易开发之基本语法(三)
本教程则是以量化的情景从零讲解python编程,所以将更适合想学做量化策略的人。
数据 变量名 python -
量化交易开发之函数API(四)
我们讲解一下python中的函数知识
API 数据 python -
量化交易开发之初识量化(一)
本系列课程将开启手把手保姆级实战课程,开发属于你自己的量化策略!!!
量化交易 策略因子 实战教学 -
量化交易之机器学习篇 - 实现Ridge回归模型
【代码】量化交易之机器学习篇 - 实现Ridge回归模型。
机器学习 回归 人工智能 迭代 初始化 -
量化交易之机器学习篇 - 实现逻辑回归模型的两种方式
【代码】量化交易之机器学习篇 - 实现逻辑回归模型的两种方式。
机器学习 逻辑回归 人工智能 权重 随机数 -
量化交易之机器学习篇 - 实现线性回归模型的两种方式
【代码】量化交易之机器学习篇 - 实现线性回归模型的两种方式。
机器学习 线性回归 python 迭代 权重 -
量化交易之机器学习篇 - 实现LDA模型的两种方式
【代码】量化交易之机器学习篇 - 实现LDA模型的两种方式。
机器学习 python 人工智能 数据 拟合 -
量化交易之机器学习篇 - 实现K近邻模型的两种方式
【代码】量化交易之机器学习篇 - 实现K近邻模型的两种方式。
机器学习 人工智能 深度学习 ci 初始化 -
量化交易之机器学习篇 - k近邻算法demo
K近邻算法
机器学习 近邻算法 人工智能 -
机器学习笔记之线性回归、岭回归、Lasso回归
机器学习 线性回归 岭回归 Lasso回归
岭回归 线性回归 损失函数 -
量化交易之QT篇 - IController
【代码】量化交易之QT篇 - IController。
qt ui 开发语言 linux #include -
量化交易之QT篇 - TQZMainController
【代码】量化交易之QT篇 - TQZMainController。
c++ 开发语言 linux qt #include -
量化交易之QT篇 - TQZMessageController
【代码】量化交易之QT篇 - TQZMessageController。
qt linux c++ Text #include