1.指标权重建模系列三:白话改进CRITIC法赋权(附Python源码)
2.全面梳理:准确率,评价评精确率,召回率,查准率,查全率,假阳性,真阳性,PRC,ROC,AUC,F1
3."SLOC"缩写在软件开发中具体指什么?
4.指标权重建模系列一:白话熵权法赋权值(赋python源码)
5.Python量化交易之指数增强策略(fmz平台)
6.深度语义匹配模型DSSM及其变体CNN-DSSM, LSTM-DSSM
指标权重建模系列三:白话改进CRITIC法赋权(附Python源码)
上节回顾
前文讲述了CRITIC法赋权重的基本概念,其中涉及波动度与冲突度两个关键点。指标指标波动度指的源码源码是同一指标下数据的标准差,冲突度则衡量了指标间的评价评相关性。
数据模型介绍
在数据集中,指标指标n个样本,源码源码陕西小程序源码价格查询m个指标,评价评数学表达如下:
公式略
对CRITIC方法的指标指标改进
改进CRITIC法需聚焦波动度与冲突度。知友反馈指出公式上的源码源码不足,经文献研究后,评价评重审并提出改进。指标指标
改进波动度计算
为消除量纲影响,源码源码改进公式将标准差除以均值,评价评获得无量纲指标。指标指标
冲突度改进
原冲突度公式只考虑正相关。源码源码改进后,负相关亦视为强相关,调整冲突度计算公式。
改进后权重计算
引入熵权法,通过加权平均,平衡指标重要性与信息量,提升权重准确性与稳定性。
具体实现参考已发布的信息熵介绍文章。
Python代码
提供CRITIC法改进版的Python代码实现,便于实践操作。
参考文献
[1] 韩一鸣,徐鹏飞,宫建锋等.基于改进CRITIC-熵权法的电网发展经营综合评价体系研究[J].机电信息,():1-7+.DOI:./j.cnki.cn-/tm....
[2] 弋若兰.我国上市公司信用风险评估研究——基于改进CRITIC熵权组合赋权-TOPSIS模型[J].投资与创业,,():-.
全面梳理:准确率,精确率,召回率,查准率,查全率,假阳性,真阳性,PRC,ROC,AUC,F1
二分类问题的结果有四种:
逻辑在于,你的预测是positive-1和negative-0,true和false描述你本次预测的对错
true positive-TP:预测为1,预测正确即实际1
false positive-FP:预测为1,预测错误即实际0
true negative-TN:预测为0,预测正确即实际0
false negative-FN:预测为0,预测错误即实际1
混淆矩阵
直观呈现以上四种情况的样本数
准确率accuracy
正确分类的样本/总样本:(TP+TN)/(ALL)
在不平衡分类问题中难以准确度量:比如%的正样本只需全部预测为正即可获得%准确率
精确率查准率precision
TP/(TP+FP):在你预测为1的样本中实际为1的概率
查准率在检索系统中:检出的相关文献与检出的全部文献的百分比,衡量检索的信噪比
召回率查全率recall
TP/(TP+FN):在实际为1的样本中你预测为1的概率
查全率在检索系统中:检出的相关文献与全部相关文献的百分比,衡量检索的覆盖率
实际的二分类中,positive-1标签可以代表健康也可以代表生病,但一般作为positive-1的指标指的是你更关注的样本表现,比如“是垃圾邮件”“是阳性肿瘤”“将要发生地震”。
因此在肿瘤判断和地震预测等场景:
要求模型有更高的召回率recall,是个地震你就都得给我揪出来不能放过
在垃圾邮件判断等场景:
要求模型有更高的精确率precision,你给我放进回收站里的可都得确定是垃圾,千万不能有正常邮件啊
ROC
常被用来评价一个二值分类器的优劣
ROC曲线的横坐标为false positive rate(FPR):FP/(FP+TN)
假阳性率,即实际无病,但根据筛检被判为有病的百分比。
在实际为0的样本中你预测为1的概率
纵坐标为true positive rate(TPR):TP/(TP+FN)
真阳性率,即实际有病,但根据筛检被判为有病的百分比。
在实际为1的样本中你预测为1的概率,此处即召回率查全率recall
接下来我们考虑ROC曲线图中的rac源码四个点和一条线。
第一个点,(0,1),即FPR=0,TPR=1,这意味着无病的没有被误判,有病的都全部检测到,这是一个完美的分类器,它将所有的样本都正确分类。
第二个点,(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。
第三个点,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true positive)=0,没病的没有被误判但有病的全都没被检测到,即全部选0
类似的,第四个点(1,1),分类器实际上预测所有的样本都为1。
经过以上的分析可得到:ROC曲线越接近左上角,该分类器的性能越好。
ROC是如何画出来的
分类器有概率输出,%常被作为阈值点,但基于不同的场景,可以通过控制概率输出的阈值来改变预测的标签,这样不同的阈值会得到不同的FPR和TPR。
从0%-%之间选取任意细度的阈值分别获得FPR和TPR,对应在图中,得到的ROC曲线,阈值的细度控制了曲线的阶梯程度或平滑程度。
一个没有过拟合的二分类器的ROC应该是梯度均匀的,如图紫线
ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。而Precision-Recall曲线会变化剧烈,故ROC经常被使用。
AUC
AUC(Area Under Curve)被定义为ROC曲线下的面积,完全随机的二分类器的AUC为0.5,虽然在不同的阈值下有不同的FPR和TPR,但相对面积更大,更靠近左上角的曲线代表着一个更加稳健的二分类器。
同时针对每一个分类器的ROC曲线,又能找到一个最佳的概率切分点使得自己关注的指标达到最佳水平。
AUC的排序本质
大部分分类器的输出是概率输出,如果要计算准确率,需要先把概率转化成类别,sg源码就需要手动设置一个阈值,而这个超参数的确定会对优化指标的计算产生过于敏感的影响
AUC从Mann–Whitney U statistic的角度来解释:随机从标签为1和标签为0的样本集中分别随机选择两个样本,同时分类器会输出两样本为1的概率,那么我们认为分类器对“标签1样本的预测概率>对标签0样本的预测概率 ”的概率等价于AUC。
因而AUC反应的是分类器对样本的排序能力,这样也可以理解AUC对不平衡样本不敏感的原因了。
作为优化目标的各类指标
最常用的分类器优化及评价指标是AUC和logloss,最主要的原因是:不同于accuracy,precision等,这两个指标不需要将概率输出转化为类别,而是可以直接使用概率进行计算。
顺便贴上logloss的公式
F1
F1兼顾了分类模型的准确率和召回率,可以看作是模型准确率和召回率的调和平均数,最大值是1,最小值是0。
额外补充AUC为优化目标的模型融合手段rank_avg:
在拍拍贷风控比赛中,印象中一个前排队伍基于AUC的排序本质,使用rank_avg融合了最后的几个基础模型。
rank_avg这种融合方法适合排序评估指标,比如auc之类的
其中weight_i为该模型权重,权重为1表示平均融合
rank_i表示样本的升序排名 ,也就是越靠前的样本融合后也越靠前
能较快的利用排名融合多个模型之间的差异,而不用去加权样本的概率值融合
贴一段源码:
M为正类样本的数目,N为负类样本的数目,rank为分类器给出的排名。
可以发现整个计算过程中连直接的概率输出值都不需要,仅关心相对排名,所以只要保证submit的那一组输出的rank是有意义的即可,并不一定需要必须输出概率。
"SLOC"缩写在软件开发中具体指什么?
SLOC,即"Source Lines Of Code"的缩写,中文直译为“源代码行”。它在软件开发领域中广泛使用,用于衡量代码的量度和复杂性。这个英文缩写在编程界中的流行度相当高,达到了次引用。SLOC通常用于计算程序的源代码行数,是评估软件大小和复杂性的重要指标。
在软件工程中,SLOC的分类和应用广泛。例如,每个缺陷的工作量和代码行的关系(Effort per defect)、每模块或组件的缺陷频率(defects per module/component)、按照注入点或时间分析的缺陷(defects by injection point/defects by age),以及代码质量检查工具如PMD(通过计算非注释源代码行数和方法的圈复杂度)和重构技术(如Extract Method)的运用,都是SLOC概念的应用实例。
值得注意的ctpn源码是,像Groovy这样的开源库或平台,因其高效和简洁的特性,往往能用较少的SLOC生成功能完备的应用程序。然而,尽管SLOC是一个重要的度量标准,但它并非衡量代码质量的唯一标准,理解和使用得当才能发挥其价值。
总的来说,SLOC是软件开发过程中不可或缺的概念,它帮助开发者、测试者和维护者理解代码规模和潜在问题。但请记住,虽然SLOC有用,但它并非评价软件质量的绝对标准,实际应用中需要结合其他质量指标进行综合考量。
指标权重建模系列一:白话熵权法赋权值(赋python源码)
熵权法作为客观赋权的综合评价利器,其核心是数据驱动,尤其重视信息量的离散性。统计学家倾向于将高离散性视为信息量大,赋予大权重,信息熵反而小。要深入了解熵权法,还需深入信息论领域,但这里不再详述。 熵权法的实施步骤如下:数据模型构建:假设数据集由n个样本和m个指标组成,数学表达为[公式]。
数据归一化:对指标进行分类处理,正向指标归一化为[公式],负向指标为[公式],中间型指标为[公式],区间型指标为[公式]。对于0值,添加极小值0.以避免计算错误。
信息熵计算:基于概率和信息量定义,信息熵为[公式]。当[公式]时,信息熵最大,标准化后为[公式]。
权重计算:信息熵越大,权重越小。差异系数为[公式],权重则为[公式]。
以下为Python实现的代码片段:# Python代码片段
from scipy.stats import entropy
def entropy_weight(data, n, m):
# 数据处理...
# 计算信息熵...
entropy_values = [calculate_entropy(sample, m) for sample in data]
# 计算差异系数...
difference_coefficients = [1 - entropy_value / max_entropy for entropy_value in entropy_values]
# 计算权重...
weights = [1 / difference_coefficient for difference_coefficient in difference_coefficients]
return weights
# 其他辅助函数...
这段代码展示了如何在Python中应用熵权法来计算指标权重。
Python量化交易之指数增强策略(fmz平台)
指数增强策略原理
策略收益由两部分组成:Beta收益和Alpha收益。Beta收益是指跟随指数获得的市场收益,Alpha收益则是通过量化方式优化投资组合获得的超额收益。
指数增强策略目标是黄站源码在跟踪指数的基础上,调整投资组合以获得更高收益。这涉及到构建评价体系,对评价高的股票增加权重,评价低的股票减少权重。
构建评价体系的手段包括多因子选股、线下打新、日内回转(T0)和择时增强等。其中,多因子选股是获取Alpha的主要策略,通过各种因子筛选优质股票。
指数增强策略步骤
策略包括四个主要步骤:选择跟踪指数,设置股票池,计算调仓指标,以及执行调仓操作。以沪深指数为例,选择成分股权重大于0.%的股票作为股票池,使用MACD和SMA指标来构建评价体系,对评价高的股票增加权重,评价低的股票减少权重。
步骤1和2已使用Pycharm完成,读者需下载沪深指数数据。通过代码实现步骤3和4,最终获得优化后的投资组合。
指数增强策略源代码
实现指数增强策略的代码基于发明者量化交易平台开发,代码可在fmz.cn获取。完成步骤3和4后,代码实现优化后的成分股列表。
策略表现
策略在--至--期间的表现如下:初始净值为,累计收益为.%,年化收益为7.%,夏普比率为0.,年化波动率为1.%,最大回撤为.%。
结语
本文提供学习交流使用的指数增强策略内容,代码仅通过模拟盘回测,未经过实盘检验,风险提示同上。策略代码有改进空间,如设置止盈止损点、替换指标等。欢迎读者参与回测和参数调整,提高策略的适应性。
本文内容仅供参考,不保证百分百正确,欢迎指出错误,一经指出立即改正。如有QMT平台源代码需求,可私戳作者。
深度语义匹配模型DSSM及其变体CNN-DSSM, LSTM-DSSM
在研究推荐和排序算法的过程中,DSSM(深度结构语义模型)是不可或缺的一部分。本文将详细介绍DSSM及其变体CNN-DSSM和LSTM-DSSM。
论文链接:microsoft.com/en-us/res...
源码:github.com/baharefatemi...
简介
现代搜索引擎在检索文章时,通常将文章中的关键字与query中的内容进行比较。然而,这种做法存在一个问题,即文字具有多义性,同样的含义可以用多种表达方式进行表达。因此,我们需要对query和document进行语义上的相似度匹配。
通常,我们会使用隐语义模型LSA、LDA来衡量Query和Document之间的相似性。然而,由于LSA、LDA是无监督学习的模型,这些模型的效果并不符合预期。基于隐语义模型,有两种扩展:第一种是使用BLTM结合DPM来拟合query和document之间的关系,另一种方法是采用深度模型对query和document进行自编码,但这两种方法都是无监督的方法。
本文针对搜索场景,提出了一系列深度网络语义模型(Deep Structured Semantic Models),模型的核心思想是:首先将query和document映射到同一个低维语义空间,然后通过cosine来计算query和document之间的距离。与之前的无监督学习模型不同,DSSM使用document的点击量进行训练,因此DSSM的效果要优于其他无监督模型。
接下来,我们来看看DSSM是如何对query和document进行处理的。
DSSM的结构采用DNN结构,将输入的query和document转换到低维的语义空间,然后计算他们的cosine相似度。
语义特征计算部分,首先使用DNN网络将query和document从高维的空间转换到低维的空间。对输入的query和document假设他们是x,经过转换的向量为y,[公式]表示隐藏层,[公式]分别表示隐藏层的参数和偏置。
最后一层采用tanh函数作为激活函数。最后将query和document映射到低维向量之后,我们采用cosine计算他们的相似度。
为了解决query和document在第一层维度非常大的问题,本文提出了word hashing的方法,来对文本进行降维。做法就是使用n-gram来表示一个词语,例如good,我们把它拆分成trigram:go goo ood od。
为了训练DSSM,我们需要得到query和他们对应的点击的document。作者假设如果用户点击了某个document,那么这个query和document就是相关的。因此,作者认为DSSM的目标是最大化给定query所对应的document的条件似然函数。条件似然函数的计算方式为:[公式]。其中,[公式]是平滑参数,D是针对query的所有可能相关的document集合,[公式]表示和query有关的且用户点击的document。
有了以上的介绍,我们所要最大化的条件似然函数就是[公式]。因此,loss函数就是:[公式]。文中作者采用梯度下降法来最大化loss函数。
作者收集了现实生活中用户搜索的日志作为实验的数据集,这份数据包含条用户query,平均每条query包含条url。每一个(query, document)的相关性分为5档,分别是0~4分,得分是人工评价的。模型的排序效果通过NDCG来衡量,这是推荐系统常见的评价指标,具体就是评价推荐给用户的内容是否是用户感兴趣的,而用户的阅读习惯一般是从上到下,所以我们希望将最相关的内容排在前面,然后以此类推。
实验效果如下,其中:首先我们可以看出DSSM的效果优于其他模型,并且L-WH DNN的效果是最好的。
DSSM是搜索里非常经典的一个算法,在工业界也广泛被使用。而且,根据应用场景的不同,对特征处理也会有一些区别。例如,在推荐召回模块的应用中,我们的输入可能就不再是query和doc的word embedding,而是用户和推荐的物品(例如**,商品)的特征。
本文依然是由DSSM的作者提出,在语义特征计算部分采用CNN网络,网络结构如上图所示。在词向量的表达上依然采用了word hash(不知道为啥作者对word hash这么执着)。
不过,trigram表示不能忽略了文本的上下文信息,因此作者在word trigram的基础上增加了letter trigram。在一定的窗口大小内,对该窗口内的word进行拼接就是letter trigram,例如I have an apple,可以被拼接为 # I have, I have an, ... 以此类推。
然后以上表示经过卷积层,max-pooling,和全连接之后得到query和doc的低维向量。最后计算相似度的时候还是cosine距离。
本文针对CNN-DSSM无法捕捉长文本的上下文信息的缺点,引入了LSTM。同时在LSTM的cell中加入了peehole,LSTM的cell结构如上图所示。
与传统的LSTM不同,作者在遗忘门、输入门、输出门中都考虑了[公式],总体来说考虑的信息更丰富。
SLAM地图评估指标及EVO评估工具安装使用教程
在评估使用ORB-SLAM3构建的地图精度时,首先需要解决地图数据与GPS真值坐标尺度不一致的问题,进行地图数据对齐处理。之后,通过使用EVO工具进行评估,以获取更清晰的评估结果。整理后,以下是关于SLAM地图评估指标和EVO评估工具安装使用教程的详细内容。
一、SLAM评价指标
在评估SLAM/VO算法时,需要从时耗、复杂度、精度等多个角度进行。其中,精度评价是最重要的考量。视觉SLAM通常使用绝对位姿误差(APE)、均方根误差(RMSE)和标准差(STD)等指标来评估运动轨迹的精度,这些指标衡量的是算法估计位姿与真实位姿之间的误差。APE首先对齐真实值和估计值,计算每个值之间的偏差,用于评估轨迹的全局一致性。RMSE衡量整体估计值与真实值的偏差程度,偏差越大,RMSE也越大。
二、EVO安装教程及命令概览
EVO是一个常用的评估工具,用于评估SLAM和VO算法的性能。要安装EVO,请访问其官方源码地址。使用命令行一键安装,可能遇到安装错误,参考相关解决方法以解决可能的问题。EVO提供了多种评估指标和命令,包括评估绝对位姿误差(evo_ape)和相对位姿误差(evo_rpe)等功能。
三、运行EVO
1. evo_traj:主要用于绘制轨迹、输出轨迹文件和转换数据格式等功能。EVO自带示例包括使用自带数据进行轨迹对比和轨迹对齐。对于存在尺度不确定性的单目相机,EVO支持使用-s参数进行Sim(3)上的对齐(旋转、平移与尺度缩放)。
2. 轨迹评估:EVO可以评估两条轨迹的误差,主要命令包括计算绝对位姿误差(evo_ape)和相对位姿误差(evo_rpe)。这些指令支持轨迹对齐和尺度缩放功能,并提供详细的参数说明以指导使用。通过这些命令,可以直观地评估轨迹的全局一致性与局部准确性。
基本面数据
股票的基本面指标,是不少投资者在进入股市之前,都需要明确知道的,因为这些知识都是比较关键的一点。就目前来说,基本面数据指标源码问题,有着不少的,也要来了解一下最重要的情况。品种类型:=FINANCE(3);所属板块:=HYBLOCK;上市天数:=FINANCE();股总市值:=ROUND(FINANCE()/);流通市值:=ROUND(FINANCE()/);股东人数:=FINANCE(8);人均持股:=ROUND(FINANCE(7)/FINANCE(8))。
基本面包括宏观经济运行态势和上市公司基本情况。宏观经济运行态势反映出上市公司整体经营业绩,也为上市公司进一步的发展确定了背景,因此宏观经济与上市公司及相应的股价有密切的关系。上市公司的基本面包括财务状况、盈利状况、市场占有率、经营管理体制、人才构成等各个方面。
投资者对汇市的基本面分析与股市的不同。股市的基本面分析,除了要对宏观的国家经济政策进行评价之外,还需要对企业出台的相关融资策略、鼓励分配政策、经营状况等进行分析才能得出股价变动趋势。由于汇率的变化是两个国家之间整体经济状况变化的结果,所以在对汇市进行分析时,投资者要从整体上即宏观上去分析国家的政治经济局势,而舍弃微观的经济状况分析。
序列化推荐中的GRU与Transformer源码解析之一
GRU4Rec源码(TF版本):github.com/Songweiping/...
Transformer源码:github.com/kang/SASR...
序列化推荐领域中,GRU4Rec成功地将循环神经网络(NLP和时序预测常用)应用至推荐领域,此模型取得了良好效果。紧随其后的是"SASR",基于注意力机制的自适应序列推荐模型,实验表明其性能超越了GRU4Rec。
两篇论文的作者均在源码公开阶段,为研究者提供参考。我们深入剖析源码,后续系列文章将比较GRU4Rec与SASR的差异、联系与优缺点。
GRU4Rec模型结构简洁,采用门限循环神经网络,Embedding层处理item_id的one_hot编码,降低维度,便于优化。
并行化训练数据集优化了模型训练速度,构建了training_batch,便于使用GPU加速矩阵运算。
负采样技术提高了训练频率,利用同一时刻不同session中的item作为负样本。
模型设计了贝叶斯排序和TOP1等pairwise方法计算排序损失,认为pairwise结果优于pointwise。
实验数据集包括RSC和私有VIDEO集,结果表明GRU4Rec模型性能优秀,测试集评价指标包括召回率(recall)和倒序排名得分(mrr)。
深入分析模型的Tensorflow版本代码,主要从main.py和model.py文件开始,重点解析模型定义、损失函数、GRU4Rec核心代码、数据集初始化、模型训练与预测以及评估函数。
GRU4Rec的代码分析暂告一段落,后续将详细梳理SASR代码,目标是通过三篇文章全面探讨两个模型的细节。感谢关注。