机器学习就是让电脑"学习"历史,预测未来。但它不是"水晶球",而是"望远镜"——能看到更远,但看不清楚。给模型"喂"什么数据,它就学什么,特征工程是关键。
一、机器学习在投资中的应用边界
1.1 机器学习的优势
- 处理复杂模式:非线性关系、高维数据
- 自动化特征学习:减少人工特征工程
- 大数据处理:处理海量历史数据
1.2 机器学习的局限
投资领域的特殊挑战:
| 挑战 | 说明 |
|---|---|
| 信噪比低 | 市场噪音大,信号微弱 |
| 非平稳性 | 市场规律会变化 |
| 过拟合风险 | 容易拟合历史噪音 |
| 黑盒问题 | 模型难以解释 |
1.3 适用场景
适合:
- 特征工程(数据预处理)
- 模式识别(趋势、形态)
- 分类问题(涨跌预测)
- 聚类分析(股票分组)
不适合:
- 精确价格预测
- 长期趋势预测
- 黑天鹅事件预测
二、线性回归模型
2.1 什么是线性回归?
用线性关系拟合输入(特征)和输出(目标)。
公式:
y = w1*x1 + w2*x2 + ... + wn*xn + b2.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中:
- 导入特征重要性数据
- 插入柱状图
- 一眼看出哪些因子最重要
四、特征工程基础
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 回归问题指标
| 指标 | 说明 | 优秀标准 |
|---|---|---|
| R² | 解释方差比例 | >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 模型监控
跟踪模型表现:
| 日期 | R² | 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 下一步行动
- 今天就做:安装Python和scikit-learn
- 本周完成:用线性回归预测股票收益,导出结果到Excel
- 本月目标:尝试随机森林,比较特征重要性
7.3 一个提醒
机器学习不是魔法:
- Garbage in, garbage out(垃圾进,垃圾出)
- 模型需要持续监控和更新
- 预测只是参考,不是决策依据
建议:
- 从简单模型开始
- 重视特征工程
- 严格区分训练集和测试集
- 不要过度优化
机器学习是工具,投资智慧才是核心。
标签:机器学习 | Python | 线性回归 | 随机森林 | 股价预测 | 特征工程 | scikit-learn
字数:约2600字
推荐阅读:
- 上一篇:《量化因子投资——多因子模型Excel构建》
- 下一篇:《交易日志分析——用Excel复盘提升交易水平》