托马斯·贝叶斯(Thomas Bayes)是一位伟大的英国数学家,也是一位长老会牧师,后人普遍猜测贝叶斯提出贝叶斯公式的目的是为了从理论上对上帝是否存在进行证明。但贝叶斯的思路大大改变了概率论的发展,成为重要的一个分支。
贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。
贝叶斯公式就一行:
P(Y∣X)=P(X∣Y)P(Y)P(X)
而它是由以下的联合改了公式推导出来的
P(Y,X)=P(Y∣X)P(X)=P(X∣Y)P(Y)
其中 P(Y)叫做先验概率, P(Y∣X)叫做后验概率, P(Y,X)叫做联合概率
贝叶斯方法把计算“具有某特征的条件下属于某类”的概率转换成需要计算“属于某类的条件下具有某特征”的概率,而朴素贝叶斯(Navie Bayes)是什么意思?朴素到哪了?
加上条件独立假设的贝叶斯方法就是朴素贝叶斯方法(Navie Bayes)。navie这个词一般理解就是幼稚、朴素的意思。也就是说我们这个方法还是比较幼稚的,何解呢?朴素贝叶斯失去了词语之间的顺序信息,比如,在条件独立假设的情况下,“我喜欢女神”与“女神喜欢我”被它认作一个意思了,这尼玛能一样么?
不管如何,尝试用贝叶斯分类做一下股票预测。
数据方面,通过Tushare接口,获取2018第一季度的A股财务数据,选取下列十七个特征,包括市盈率、收入、现金流等基本财务指标。
'pe','outstanding','rev','profit','eps','roe','gpr','npr','holders','net_profits','epsg','mbrg','seg','cf_sales','cashflowratio','rateofreturn'
首先准备数据,我们选取5月份的交易数据,和3月底的数据进行对比,涨幅超过10%的我们认为是超优类,涨幅在0到10%之间的我们认为是优秀类,股价下跌的是第三类,我们用贝叶斯分类,试图找出这十七个个财务特征和股票涨跌的关系,并进行预测。
xdf.loc[(xdf['changeration']>10),'Result']=2
xdf.loc[((xdf['changeration']<10) & (xdf['changeration']> 0)),'Result']=1
xdf.loc[(xdf['changeration']<0) ,'Result']=0
因为朴素贝叶斯要求特征之间没有关联关系,相互独立,因此我们需要应用PCA主成因分析,对数据进行预处理,处理成五个独立的因素,具体过程如下:
pcamodel=PCA(n_components=5)
pca_data=pcamodel.fit_transform(X_train)
pca_test=pcamodel.fit_transform(X_test)
然后用降维后的特征数据,训练一个贝叶斯分类器,用分类器进行预测,过程如下:
clf = GaussianNB().fit(pca_data, y_train)
stock_class_predicted = clf.predict(pca_test)
准确率结果如下:
precision recall f1-score support
0.0 0.36 0.22 0.28 259
1.0 0.57 0.24 0.33 398
2.0 0.06 0.92 0.12 24
avg / total 0.47 0.26 0.30 681
整体准确率只有0.47左右,说明简单的分类器对股票预测效果一般。