基于机器学习的公司特有风险预测方法研究

2022-10-21 02:22王传军王郑毅
中国资产评估 2022年6期
关键词:特征选择机器预测

■ 王传军 王郑毅 周 越

(1. 坤元资产评估有限公司,浙江杭州310007;2. 湘财证券股份有限公司,上海200120)

一、项目背景

折现率在企业价值评估中发挥着至关重要的作用,其可能直接影响并购重组的定价,进而影响交易的成败。遗憾的是,对于折现率的重要组成部分——特有风险,国内实证研究成果不甚理想,未能形成被广泛接受的测算方法。基于此,本文尝试多维度地提取样本的有效属性(特征),利用多种独立的模型捕获特征间关系,辅以网格搜索方法和递归特征消除特征法,以期生成一套较为高效、科学的特有风险测算模型。

二、机器学习概述

(一)机器学习简介

机器学习是一种利用计算机就已知数据构建概率统计模型,再运用该模型开展后续数据分析(学习)进而预测未知数据的数学建模方法。机器学习由模型、策略和算法构成,即学习器=模型+策略+算法。

其中,模型指的是某种函数的集合;策略作为从函数的集合中选择最优函数的准则;而算法则是根据策略从模型中选择最优函数的具体计算方法。①李航,统计学习方法. 清华大学出版社,2012.为了便于区分,我们将学习器从数据中学习得到的最优函数称为预测模型。

(二)机器学习的一般流程

机器学习一般包含以下5个步骤:数据收集、数据准备、学习器选择、特征选择、预测模型评估,具体如图1所示。

图1 机器学习的一般流程

(三)机器学习的一般工具

基于Python等各类语言的数据分析和学习库成为当今机器学习的主流之一。其中,(简单高效的学习工具)Scikit-Learn、(科学和工程领域较常用的)SciPy、(用于存储和处理大量矩阵的)Numpy和(常用于金融分析的)Pandas较为常用。①https://blog.csdn.net/a673519020/article/details/112471996用于进行深度学习的TensorFlow、PyTorch、Keras,用于处理自然语言的NLTK,用于机器视觉训练的OpenCV等学习库亦不乏应用场景。

通过将各种机器学习库进行整合和优化,结合大数据技术和用于发布服务的API发布工具,诸如阿里PAI、星环Sophon、百度BML、4Paradigm Sage Studio等全流程、低门槛AI应用开发与上线平台应运而生。这些平台通过可视化的开发界面,使用户通过选择并连接相应组件的方式,实现导入数据、训练模型、发布服务全流程的低代码开发,大大降低了机器学习的应用门槛。

本文基于Jupyter Notebook开发、展示窗口,以及Scikit-Learn开发工具开展研究。其中,开发工具可以通过安装Anaconda3获取,或在安装Python程序后通过“Pip3 install scikit-learn”等命令进行自定义安装。

三、数据收集

本文以通过证监会并购重组委审核的近年128宗案例数据为基础开展研究。数据来源包括交易报告书、审计报告、评估报告及说明、反馈意见、其他公开数据等。通过文献研究、财务评价体系参考、并购重组定价和风险影响因素描述性分析,笔者建立了研究的指标体系,由28项属性构成,涵盖行业、标的公司历史、股权、经营、技术、财务等风险驱动的重要属性。

在Jupyter NoteBook界面,通过“import pandas as;import numpy as;import matplotlib.pyplot as plt;unique_risk=pd.read_csv(‘unique_risk.cvs’);unique_risk[‘审核结果’]=unique_risk[‘审核结果’].map({‘发行股份购买资产获无条件通过’比‘发行股份购买资产获有条件通过’:0});unique_risk.head(5)”等代码导入数据,通过descrbie()函数对各属性进行了统计。结果显示,实践中特别风险的最大取值为5%,最小为0.5%,主要集中于[1.5%,3%]区间内,数据集不存在缺失值,但部分属性离散程度较大。

由于共选择了28个属性进行研究,因此需通过降维的方法进行数据可视化处理。考虑到常用的PCA(Principal Component Analysis)主成分分析算法为线性算法,难以解释属性间的复杂多项式关系,不能将相似数据点放置一起展示,因此笔者选取t-SNE算法进行数据降维。

t-SNE(t-distributed stochastic neighbor embedding,T-分布邻域嵌入算法)是一种用于挖掘高维数据的非线性降维算法,适用于将高维数据降维到二维或三维后进行可视化处理。该算法核心思想是将欧几里得距离转换为服从t分布的条件概率来表达点与点间的相似度,能较好地描述点之间的相似度。

本次研究数据存在异常值,笔者将其定义为离群点(outlier),即远离具有相同分布的内点(inlier)的样本。由于离群点会影响模型拟合的效果,因此需要对其进行检测和剔除。常用的异常值检测方法如表1所示。

表1 异常值检测的常用方法

本次使用Local Outlier Factor和Isolation Forest方法对离群点进行检测。以前者为例,通过“from sklearn.neighbors import LocalOutlierFact or;clf=LocalOutlierFactor(n_neighbors=2);res=clf.fit_transform(unique_risk)”等代码输入,形成Local Outlier Factor及Isolation Forest离群点检测图。结果显示,Local Outlier Factor在离群点的检测上更敏感,可视化后也更符合直观感受,因此,笔者选择其结果作为后续训练的数据集。

四、数据准备

由于原始数据集内存在不可量化数据,且各属性口径存在较大差异,因此需要对数据进行编码和标准化,以增强数据的可用性。此外,为便于对生成的预测模型进行评估,本次将数据分为训练集和测试集两部分。

(一)特征构建

对于“审核结果”属性,原始数据集内表现为“发行股份购买资产获无条件通过”和“发行股份购买资产获有条件通过”两个字符串,鉴于无法直接输入到模型中,考虑到“发行股份购买资产获无条件通过”比“发行股份购买资产获有条件通过”更优,故分别将“发行股份购买资产获有条件通过”“发行股份购买资产获无条件通过”编码为0和1。

(二)数据标准化处理

由于不同变量间的量级存在较大差异,学习器的算法往往会被数值大的属性所主导,因此需对数据进行标准化处理。考虑到原始数据不完全符合正态分布,本次选用Min-Max标准化方法进行数据处理。Min-Max标准化公式如下:

式中:m是新值;x是单元格原始值;xmin及xmax分别是该列的最小和最大值。

标准化后各属性取值位于[0,1]区间内,规避了算法受数据尺度影响的不利情形,结果更为精准。

(三)分离训练集和测试集

由于机器学习的复杂性,预测模型有时会过于紧密或精确地匹配已知数据集,以致缺乏泛化能力,无法很好地预测未来的观察结果,即出现过拟合。因此,笔者将数据集的90%部分用于生成预测模型,其余部分作为测试集,用于后续评估预测模型对于未知数据的预测能力。具体输入代码为“from sklearn.model_selection import train_test_split;train,test=train_test_split(unique_risk,test_size=0.1,random_state=22)”“train_X=train.drop(labels=[“Rc”],axis=1);train_y=train[‘Rc’];test_X=test.train.drop(labels=[“Rc”],axis=1);test_y=test[‘Rc’]”“ss=M inMaxScaler();train_X=ss.fit_transform(train_X);test_X=ss.transform(test_X)”。

五、学习器选择

由于数据集输出数据的连续性,因此特有风险的预测属于机器学习中的回归问题。机器学习的回归模型可以分为广义线性、树、支持向量机、K近邻、Bagging集成、Boosting集成、多层感知机(神经网络)回归等七类模型。此次研究中,我们选择最小化模型在训练集上的R2作为学习策略,使用Scikit-Learn中的算法选择最优模型。

(一)模型介绍

1.岭回归

岭回归在最小二乘法的基础上,利用添加L2范数对系数进行惩罚的方法,对属性间具有完全共线性或高度相关性的情形进行优化。

2. K近邻回归

K近邻回归属于懒惰模型,其并不从训练数据中生成判别函数,而是基于某种距离度量找出训练集中最靠近待预测样本的k个训练样本,将这k个邻居的输出值的平均值标记为待预测样本的预测结果。

3.多层感知机回归

多层感知机回归即按照每层感知机与下一层感知机的全连接,感知机间以不存在同层或者跨层连接的方式构建一个多层前馈神经网络,通过误差逆传播算法不断调整感知机之间的权值,最终获得一个复杂的非线性预测模型。

4. Boosting类回归

Boosting类回归的核心思想是通过增大错误样本的权重,将多个弱预测模型组合成一个强预测模型进而实现回归。其中比较常用的模型有AdaBoost(Adaptive Boosting,自适应增强模型)、XGBoost(eXtreme Gradient Boosting,极限梯度提升模型)、LGBM(Light Gradient Boosting Machine,轻量级的高效梯度提升模型),其主要区别在于如何识别模型和权重的调整方法上。

前述模型的优劣势可以通过表2进行描述。

表2 各类回归模型对比

(二) 模型超参数选择

机器学习中,超参数系在学习开始之前需要为模型设置值的参数。与之对应,其他参数的值是通过训练得出的。实际应用中,Scikit-Learn中各模型默认的超参数组合(详见表3)往往并不适合训练集的数据模式,需要进行优化。

表3 各模型普通参数和超参数对比

参数网格搜索是一项超参数优化技术,常用于三个及以下超参数的优化,其本质属穷举法范畴。对于每个超参数,使用者创建一个较小的有限集合,作为该超参数的备选项。然后,从各项超参数备选项的笛卡尔乘积中得到若干组不同的超参数组合。网格搜索使用每组超参数训练模型,挑选验证集误差最小的超参数组合作为模型最好的超参数组合。

由于样本容量较小,按照常规70%的训练集,20%验证集和10%测试集的样本划分方法,从数据集中取出20%的验证集对超参数进行选择的话,会存在训练集样本容量和验证集样本容量都不够大的问题。而通过交叉验证的方法对训练集上的数据进行循环使用,可以使预测模型在训练集的多个而非单个子数据集上实现优异表现,增强预测模型的泛化能力。由此,笔者选择了10折交叉验证后各预测模型在验证集上R2的平均值对模型进行评价,并作为该模型的基础性能。

K折交叉验证(K-fold cross validation)的核心思想是把训练数据D分为K份,其中(K-1)份用于训练模型,剩余1份用于评估预测模型的准确率。前述过程在K份数据依次循环,最终得到K个评估结果。①周志华,机器学习. 清华大学出版社,2016.

通过“from sklearn import linear_model;model_LinearRegression=linear_model.LinearRegression()”等代码构建基础的学习器。之后依据相关代码(略)对每个学习器中模型的超参数予以调优,通过“from sklearn.model_selection import cross_val_score”进行交叉验证。

多轮迭代后,各模型在超参数优化前后验证集上的R2平均值如表4所示。

表4 模型在原始测试集上调参前后对比

六、特征选择

(一)特征选择概述

数据集内的各属性对预测结果提供的信息增益各异。鉴于此,往往需要通过特征选择,于给定的所有属性中选取相关属性作为样本的特征,去除掉无关和冗余属性,从而达到降低拟合风险,提高训练速度的目的。②Ozdemir, S. Susarla, D. Feature engineering made easy. Birmingham, UK: Packt Publishing. 2018.

特征选择方法可分为过滤法、包裹法、嵌入法三类。

过滤法运用统计指标来为每个特征打分并筛选特征,其聚焦于数据本身的特点。其优点是计算快,不依赖于具体的模型,缺点是选择的统计指标不是为特定模型定制的,因而最终准确率可能不高。此外,由于采取的是单变量统计检验手段,故未考虑特征间的相互关系。

包裹法使用模型来筛选特征,通过不断地增加或删除特征,在验证集上测试模型的准确率,寻找最优的特征子集。包裹法因为有模型的直接参与,因而准确性较高,但是计算成本高,容易出现过拟合。

嵌入法利用了模型本身的特性,将特征选择嵌入到模型构建过程中。典型的如 Lasso 和树模型等。其准确率较高,计算复杂度介于过滤式和包裹式方法之间,但缺点是仅部分模型适用此方法。①A review of feature selection techniques in bioinformatics[J]. Bioinformatics(19):2507-2517.具体方法如表5列示。

表5 特征选择方法列举

(二)过滤法

过滤法最常用的方法是SelectKBest()。顾名思义,该方法就是根据传入的评分函数,从所有特征中挑选出最好的K个特征组成新的特征集。由于本次研究的问题属于回归问题范畴,因此选择了f-regression方法对各属性进行线性相关分析,并根据得到的F值计算出相应的p值。本次研究结果见表6。

表6 各属性显著性分析

表格显示,前三年承诺覆盖率、成立年限两个指标对特有风险有非常显著的影响;净利润增长率、固定资产周转率、动态市盈率、总资产周转率、归母权益增长率对特有风险有显著影响。但是由于F检验属于线性回归测试,因此存在部分和特有风险呈非线性关系的特征未被选取的可能。

(三)递归式

递归特征消除法(RFE, Recursive feature elimination)是一种常用的包装法特征选择方法。其核心思想系通过不断地迭代训练模型,每次删除若干重要性较低的特征,直到最新删除特征造成总体性能损失时结束。

通过代码调用RFECV函数,对每种模型进行特征选择,根据特征选择结果重新训练模型。

(四)结果对比

对各模型通过10折交叉验证法,生成的预测模型在原始数据验证集及通过不同特征选择方法生成的验证集上的R2的平均值如表7所示。

表7 预测模型在不同特征方法上的表现

由上表显示,除了多层感知机回归和K近邻回归没有权值系数属性(coef或feature_importances)而无法进行迭代外,递归特征消除法相比过滤法在验证集上能有更好的表现。

七、预测模型评估与分析

(一)预测模型评估

根据上述特征选择和超参数调优的结果,笔者选出各模型在10折交叉验证中具有最高R2的特征及超参数组合,在之前分离的90%的训练集上根据选出的特征生成新的训练数据,利用超参数组合输入到模型中,得到最终的预测模型。

然后,将之前分离出的10%的数据集输入到预测模型中,对预测值和实际值进行对比,得到折线图2-1至图2-7。

图2-1 线性回归

图2-2 岭回归

图2-3 AdaBoost回归

图2-4 多层感知机回归

图2-5 XGBoost回归

图2-6 LGBM回归

图2-7 K近邻回归

对比预测模型在10折交叉验证及在测试集上的R2,具体见表8。

表8 预测模型在验证集和测试集表现

其中,每个模型选用的特征如表9所示:

表9 各模型选用的特征

续表

(二)模型结果与分析

从结果上看,模型在训练集和测试集上的多折交叉验证表现有一定差别。通过测试集确定模型的参数,验证集确定模型的超参数后,笔者通过独立的测试集来评估预测模型的最终性能,以决定预测模型的选择结果。

通过配对样本的t检验,笔者对不同预测模型的均方误差(MSE)是否存在显著差异进行了检验。通过检验发现,线性回归预测模型和岭回归预测模型的MSE相比XGBoost预测模型有显著差异;AdaBoost预测模型和LGBM预测模型的MSE相比XGBoost预测模型有一定差异,但并不显著;K近邻回归预测模型和多层感知机预测模型MSE相比XGBoost预测模型几乎不存在差异。

由于模型的复杂度差异,非线性模型预测准确率相对更高。XGBoost回归模型具有最好的表现,但距离对特有风险进行精准定量测算的初衷仍有差距。

此外,应关注到,对于XGBoost回归和多层感知机回归模型而言,我们无法给出明确的解析解来说明预测值生成的原因。当部分预测值存在偏差时,我们只能通过有倾向性地输入新的训练集来纠正偏差。而K近邻回归模型则可以通过构建KD树来明确每个样本的范围,并输出相应用于预测的K个最近邻居,使得模型具有更强的解释性。因此,就实践而言,K近邻回归具有更大的应用价值,表现也更优秀。

在特征选择上,总体来看,各模型使用的频度较高的特征为前三年承诺覆盖率、成立年限、净利润增长率、动态市盈率、固定资产周转率、归母权益增长率等,且该等特征的影响程度逐项递减。

笔者认为,这些特征对于特有风险的确定,确实存在很强的因果关联。

一是,通常来说,前三年承诺覆盖率、净利润增长率、动态市盈率、归母权益增长率越高,则企业特有风险越大。当企业处于高速增长阶段之时,表明其需要更多的资源予以支持,很可能在人员、技术、产能及营运资金等方面存在大量缺口;高速增长期间,企业面临的自身文化、组织结构、外部认同及管理者能力不足问题尤为突出,资金流、人力资源、营销部门及管理能力等往往相对薄弱。另外,不排除部分企业为凸显高速增长的市场形象,进行不恰当的会计估计、会计政策改变甚至财务造假的可能,易造成后续风险的集中爆发。净利润增长率、归母权益增长率为历史静态性特征,而前三年承诺覆盖率、动态市盈率属于预测期动态性特征,均属于增长率范畴,由前文可知,该等指标与特别风险成正比,且动态特征影响力大于静态特征。

二是成立年限越长,企业特有风险越小。企业成立年限越长,表明其极有可能占领市场先机,掌握更为充足的原材料、技术、渠道等关键资源,通过多年的经营和多轮优胜劣汰,拥有更丰富的经验,具备一定的竞争优势,赢得长期的市场优势。另外,企业经营多年,也表明其所处行业存续时间较久,产业普遍较为成熟,行业的不确定性较小。

三是固定资产周转率越高,则企业特有风险越大。这个结论与增长率结论相似。高周转的企业往往处于某一个爆发式发展阶段,但难以长期维持,就像一台高速运转的机器、一根紧绷的弦,需要外部资源的不断支持。而纵观国内外市场和企业发展历程,从中、长期而言,良性的发展大部分是细火慢炖的,符合市场整体发展趋势的周转率更为适宜。

鉴于机器学习方法生成的预测模型往往具有“黑盒”特征,因此,本研究未能生成定量公式。但我们可以将相关数据输入预测模型得出结论,随着数据数量与质量的不断提升,预测数据将更为准确。

八、总结与展望

本文通过回归分析和递归特征消除法,建立了一套涵盖6个主要指标的特有风险评价体系,并在体系基础上利用机器学习方法对特有风险进行了预测。

几种预测模型的表现总体差强人意,R2均不甚理想,笔者认为原因有以下几点:一是本次研究的数据来源于过往实践,鉴于实务中评估专业人员过度依赖主观判断致结果偏差,甚至根据结果导向确定特别风险,因此实证数据质量欠佳;二是样本容量相对较小,无法完全满足机器学习对数据规模的要求。

笔者曾采用传统统计学路径研究了同样的样本数据,生成了回归预测模型,认为资产负债率、研发支出占比、归母权益增长率、净利润增长率、总资产周转率、应收账款周转率及上一年归母净利润与特有风险呈正相关关系;经营性现金流/收入、成立年限呈负相关关系。前次与本次研究结果有一定的共同点,均认为特别风险与归母权益增长率、净利润增长率呈正比,与成立年限成反比,且两次研究分别提及的总资产周转率与固定资产周转率有共通之处。但笔者以为,本研究中多个模型都一致认可了前三年承诺覆盖率、动态市盈率的重要性,这与并购重组定价逻辑及博弈重点不谋而合,具有合理性。从定性角度来看,本次研究结果更具温度。此外,前次研究的拟合优度R2(分别为0.210和0.189)亦较低(略低于本次研究),两次研究均表明自变量对因变量的解释力度不足。

虽然在现有实证数据基础上,特别风险的准确厘定较难实现。但对数据进行特征工程并构建非线性模型的思路,具有一定的借鉴价值。

首先,由于机器学习模型的复杂性,一方面其在处理海量、多属性的数据集时具有不错表现,另一方面也会产生黑盒的可解释性问题。因此,可以从获取数据的数量与质量,以及结论的可解释性需求两个角度综合分析评估是否要引入机器学习。一般而言,当可获取的数据多且全面,能对预测结果给出充分反馈,且无需作出完整解时,则适合引入机器学习方法。

其次,在具体模型的选择上,虽然机器学习构建的非线性模型的预测准确率往往好于线性模型,但没有一个模型能在所有问题上都优于其他模型。如果两模型表现接近,那么选择相对简单的线性回归模型,不失为明智的选择。

再次,需要关注的是,机器学习方法的实质是对变量和因变量的相关性进行数理分析并得出答案。其分析结果只能说明因变量和变量间存在一定的相关性,并不能说明两者间是否存在因果关系。因此,在机器学习的同时,不可忽视专业知识的重要性。

最后,对于本次研究,还可以在特征选择方法上做进一步探索。由于特征选择不是具有贪心选择性质的组合最优化问题,无法在多项式时间内直接计算得到最优解。因此除了通过用如递归特征消除法这种贪心算法得到近似解外,也可以考虑采取诸如模拟退火、遗传算法、蚁群算法等启发式算法予以优化。

猜你喜欢
特征选择机器预测
机器狗
选修2—2期中考试预测卷(B卷)
选修2—2期中考试预测卷(A卷)
机器狗
未来机器城
基于智能优化算法选择特征的网络入侵检测
故障诊断中的数据建模与特征选择
reliefF算法在数据发布隐私保护中的应用研究
一种多特征融合的中文微博评价对象提取方法
《福彩3D中奖公式》:提前一月预测号码的惊人技巧!