机器学习就是让电脑"学习"历史,预测未来。但它不是"水晶球",而是"望远镜"——能看到更远,但看不清楚。给模型"喂"什么数据,它就学什么,特征工程是关键。

一、机器学习在投资中的应用边界

1.1 机器学习的优势

  • 处理复杂模式:非线性关系、高维数据
  • 自动化特征学习:减少人工特征工程
  • 大数据处理:处理海量历史数据

1.2 机器学习的局限

投资领域的特殊挑战

挑战 说明
信噪比低 市场噪音大,信号微弱
非平稳性 市场规律会变化
过拟合风险 容易拟合历史噪音
黑盒问题 模型难以解释

1.3 适用场景

适合

  • 特征工程(数据预处理)
  • 模式识别(趋势、形态)
  • 分类问题(涨跌预测)
  • 聚类分析(股票分组)

不适合

  • 精确价格预测
  • 长期趋势预测
  • 黑天鹅事件预测

二、线性回归模型

2.1 什么是线性回归?

用线性关系拟合输入(特征)和输出(目标)。

公式

y = w1*x1 + w2*x2 + ... + wn*xn + b

2.2 Python实现

import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score, mean_squared_error

# 读取数据
data = pd.read_excel('stock_data.xlsx')

# 特征和目标
X = data[['PE', 'PB', 'ROE', '动量']]  # 特征
y = data['未来收益']  # 目标

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估
print(f'R²: {r2_score(y_test, y_pred)}')
print(f'RMSE: {mean_squared_error(y_test, y_pred, squared=False)}')

# 导出系数到Excel
coefficients = pd.DataFrame({
    '特征': X.columns,
    '系数': model.coef_
})
coefficients.to_excel('model_coefficients.xlsx', index=False)

2.3 结果导入Excel

# 预测结果导出
test_results = pd.DataFrame({
    '实际值': y_test,
    '预测值': y_pred,
    '误差': y_test - y_pred
})
test_results.to_excel('prediction_results.xlsx', index=False)

三、随机森林模型

3.1 什么是随机森林?

集成学习方法,构建多棵决策树,投票决定结果。

优势

  • 非线性建模能力强
  • 不易过拟合
  • 可输出特征重要性

3.2 Python实现

from sklearn.ensemble import RandomForestRegressor

# 训练随机森林模型
rf_model = RandomForestRegressor(n_estimators=100, max_depth=5)
rf_model.fit(X_train, y_train)

# 预测
y_pred_rf = rf_model.predict(X_test)

# 特征重要性
importance = pd.DataFrame({
    '特征': X.columns,
    '重要性': rf_model.feature_importances_
}).sort_values('重要性', ascending=False)

importance.to_excel('feature_importance.xlsx', index=False)

3.3 特征重要性可视化

在Excel中:

  1. 导入特征重要性数据
  2. 插入柱状图
  3. 一眼看出哪些因子最重要

四、特征工程基础

4.1 什么是特征工程?

将原始数据转换为模型可用的特征。

重要性

数据和特征决定了机器学习的上限,模型和算法只是逼近这个上限。

4.2 常用特征

价格特征

  • 收益率(日、周、月)
  • 波动率
  • 移动平均线
  • RSI、MACD等技术指标

基本面特征

  • PE、PB、ROE
  • 营收增长率
  • 净利润增长率

宏观特征

  • 市场指数收益
  • 利率水平
  • VIX波动率指数

4.3 特征处理

标准化

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

缺失值处理

# 填充均值
X.fillna(X.mean(), inplace=True)

五、模型评估指标

5.1 回归问题指标

指标 说明 优秀标准
解释方差比例 >0.5
RMSE 均方根误差 越小越好
MAE 平均绝对误差 越小越好

5.2 分类问题指标

指标 说明 优秀标准
准确率 预测正确比例 >60%
精确率 预测为正且正确 >50%
召回率 实际为正且预测正确 >50%
F1分数 精确率和召回率调和平均 >0.5

5.3 Excel可视化评估结果

实际vs预测散点图

  • X轴:实际值
  • Y轴:预测值
  • 理想情况:点分布在Y=X线附近

残差图

  • X轴:预测值
  • Y轴:残差(实际-预测)
  • 理想情况:随机分布,无明显模式

六、模型结果与Excel集成

6.1 预测结果展示

Excel表格

股票代码 实际收益 预测收益 误差 排名
600519 15% 12% 3% 1
000001 -5% -2% -3% 3

条件格式

  • 预测收益前10%:绿色
  • 预测收益后10%:红色

6.2 模型监控

跟踪模型表现

日期 RMSE 备注
2024-01 0.55 0.08 -
2024-02 0.48 0.09 下降
2024-03 0.42 0.10 需重新训练

预警

当R²连续3个月下降,触发模型重训练。


七、总结与行动清单

7.1 核心要点

模型 适用场景 特点
线性回归 简单关系 可解释性强
随机森林 复杂非线性 特征重要性
特征工程 所有模型 决定上限

7.2 下一步行动

  1. 今天就做:安装Python和scikit-learn
  2. 本周完成:用线性回归预测股票收益,导出结果到Excel
  3. 本月目标:尝试随机森林,比较特征重要性

7.3 一个提醒

机器学习不是魔法

  • Garbage in, garbage out(垃圾进,垃圾出)
  • 模型需要持续监控和更新
  • 预测只是参考,不是决策依据

建议

  • 从简单模型开始
  • 重视特征工程
  • 严格区分训练集和测试集
  • 不要过度优化

机器学习是工具,投资智慧才是核心。


标签:机器学习 | Python | 线性回归 | 随机森林 | 股价预测 | 特征工程 | scikit-learn

字数:约2600字

推荐阅读

  • 上一篇:《量化因子投资——多因子模型Excel构建》
  • 下一篇:《交易日志分析——用Excel复盘提升交易水平》

更多推荐