因子分析

OO第一单元作业总结

喜你入骨 提交于 2020-03-19 13:24:41
第一单元小结 基于度量分析自己的程序结构(工具:DesigniteJava、MetricsReloader) 总的分析:unit1的作业的代码的质量不是很高,主要有以下几点原因: 类与类之间耦合程度过高,可扩展性差 部分类内部实现过于复杂,不利于调试和维护 没有使用对象构造中的工厂模式进行因子、项等的创建 部分类内部方法的实现不够聚合,会与其他类的一些方法有较大联系 圈复杂度:和类内部实现的复杂度相关,循环条件判断等复杂的逻辑组合相关 类之间的依赖关系 UML图如下: 分析:在这次的设计过程中,类的划分上是存在一定的问题的,例如对于不同因子的求导的过程,求导应该交给对应的类自己去完成,在内部实现求导功能,返回一个统一的类型,而不是交由外部进行判断然后求出求出对应的结果,因此应当在之后的设计中尽可能降低类与类之间的耦合程度,增加类内部的聚合度,从而实现功能的专一性(职责明确),DIT为1。 优点:使用到了类的继承的设计结构,抽象方法的复写 缺点:方法的功能上不是很专一,方法与方法之间的耦合度比较高,有些方法的实现过于复杂,不便于调试和维护 Metrics分析: 分析:在这一单元的构造中,部分的代码架构不是很好,不太容易维护,其中最主要的原因是大量的使用到了if-else的逻辑判断的语句,同时存在者多层的嵌套结构,导致代码的可维护性和可扩展性大大降低; 解决的办法

OO第一次博客作业

前提是你 提交于 2020-03-18 17:02:36
面向对象程序设计第一单元博客作业 程序结构分析 第一次作业 第一次作业较为简单,根据 多项式由多个项构成 的描述,可以抽象出两个类——多项式、项。多项式的求导结果便是其各个项的求导结果之和。 项类持有两个 BigInteger 对象(项的系数和指数)。项类实现 Comparable 接口,从而可以根据两个项的比较结果判定两个项是否为同类项(可合并)。项类配备求导方法,返回一个新的项。 多项式类持有一个 List 对象,存储其各个项。多项式类配备求导方法,返回一个新的多项式。 第一次作业读入处理:使用正则表达式直接提取各个项。 类图: 代码行数: 方法复杂度: 第二次作业 第二次作业出现了三角函数因子,理论上可以抽象出因子类的概念,但考虑到第二次作业存在优化问题,以及一个项的一般形式可以表示为 a*x**b*sin(x)**c*cos(x)**d ,故使用一个四元组来构成一个项。考虑到两个项是否可合并取决于两个项的指数部分是否对应相等,故将指数部分封装成类,覆写其 hashCode 与 equals 方法。 项类持有一个 BigInteger 对象(项的系数)和一个指数类对象。项类配备求导方法,返回一个项表。 表达式类持有一个 HashMap 对象,以指数类对象为键,以持有此指数类对象的项类对象为值,实现读入项合并。表达式类配备求导方法,返回一个表达式。 第二次作业读入处理

R语言3.11 因子分析因子旋转

两盒软妹~` 提交于 2020-03-12 03:51:06
因子旋转 目的 寻找每个主因子的实际意义 如果各主因子的典型代表变量不突出,就需要进行旋转 使因子载荷矩阵中载荷的绝对值向0和1两个方向分化 方法 正交旋转Varimax(最大方差正交旋转) 斜交旋转Promax Fa2=factanal(X,3,rotation="varimax") Fa2$loadings 因子得分计算方法:回归估计法(方差一致),Bartlett估计法 Fa1$scores(旋转前因子得分) Fa2$scores(旋转后因子得分) plot(Fa2$scores,asp=1) abline(h=0,v=0,lty=3) text(Fa2$scores,labels = rownames(X)) biplot(Fa2$scores,Fa2$loadings) abline(h=0,v=0,lty=3) Fa1$ranks(排名) 因子分析的基本步骤 1.确认数据是否适合作因子分析 一般用KMO与Bartlett’s进行检验 判断标准:KMO>0.9非常适合,0.8~0.9适合,0.7 ~ 0.8一般,0.6 ~0.7不太合适,0.5 ~0.6不合适,<0.5极不合适。 2.构造因子变量 3.旋转因子使其更具解释性 4.计算因子得分并做因子图 R语言因子分析过程 一、因子计算 1.是否适合做因子分析:KMO 2.计算因子分析的对象:factanal(极大似然)

L1-006. 连续因子

懵懂的女人 提交于 2020-03-11 10:25:42
L1-006. 连续因子 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3*5*6*7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。 输入格式: 输入在一行中给出一个正整数N(1<N<2 31 )。 输出格式: 首先在第1行输出最长连续因子的个数;然后在第2行中按“因子1*因子2*……*因子k”的格式输出最小的连续因子序列,其中因子按递增顺序输出,1不算在内。 输入样例: 630 输出样例: 3 5*6*7分析:题目告诉我们N小于2的31次方,联想到阶乘,使用我们可以确定最大的因子个数不会超过12个,且所有因子的大小肯定不会超过sqrt(N),所以我们就假设最大因子长度为12,11,10.......,1的时候从2到sqrt(N),看看最后得到出来的阶乘数字是不是N的因子,如果是,那么我们就找到啦,我觉得我没有说清楚,我也不知道大家有疑惑的话可以看看我的代码ps:找到的最长因子序列的乘积一定是N的因子当N为素数的时候,最长因子序列长度为1,序列为其本身这是两个需要注意的地方具体请参考这个小姐姐的博客:http://blog.csdn.net/liuchuo/article

L1-006 连续因子

走远了吗. 提交于 2020-03-11 10:13:03
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3 ×5 ×6 ×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。 输入格式: 输入在一行中给出一个正整数 N( 1)。 输出格式: 首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。 输入样例: 630 输出样例: 3 5*6*7分析:因为12!<2^31<13!,所以最长连续因子长度不超过12。从12这个长度开始递减,如果能找到符合条件的,则一定是最长的。因子从2开始,到sqrt(n)+1结束。如果有符合条件的则输出,没有则输出自身。代码: 1 #include <stdio.h> 2 #include <iostream> 3 #include <math.h> 4 using namespace std; 5 int main() 6 { 7 int n,f=0,i,j; 8 cin>>n; 9 int m=sqrt(n)+1; 10 for(i=12;i>=1;i--) 11 { 12 for(j=2;j<=m;j++) 13 { 14 long long s=1; 15 for(int k=j,l=0;l<i

[Scikit-learn] 2.5 Dimensionality reduction - ICA

丶灬走出姿态 提交于 2020-03-07 09:59:16
写在前面 数据降维的几种形式 数据降维的几种方法,包括 PCA 、 LDA 、 ICA 等,另外还有一种常用的降维方法就是 因子分析 。 关于这几种方法的各自的优劣,有必要之后跟进一下。 概率图角度理解 打开prml and mlapp发现这部分目录编排有点小不同,但神奇的是章节序号竟然都为“十二”。 prml:pca --> ppca --> fa mlapp:fa --> pca --> ppca 这背后又有怎样的隐情?不可告人的秘密又会隐藏多久? 基于先来后到原则,走prml路线。 首先,这部分内容,尤其是pca,都是老掉牙且稳定的技术,既然是统计机器学习,这次的目的就是借概率图来缕一遍思路,以及模型间的内在联系。 PPCA's PGM 我们要建立的是一套完整的知识体系,而非“拿来一用,用完就扔”的态度。 有菜鸡问了,为何你总是强调“体系”? 因为我是马刺队球迷。 首先,我希望大家重视prml的第12章开章这段话: " 本章中,我们⾸先介绍标准的、⾮概率的PCA⽅法,然后我们会说明,当求解线性⾼斯潜在变量模型的 ⼀种特别形式的最⼤似然解 时, PCA如何 ⾃然地产⽣ 。这种概率形式的表⽰⽅法会带来很多好处,例如在参数估计时可以使⽤EM算法,对混合PCA模型的推广以及主成分的数量可以从数据中⾃动确定的贝叶斯公式。最后,我们简短地讨论潜在变量概念的几个推广

大数据在实时因子中的应用

江枫思渺然 提交于 2020-03-01 09:08:15
在生活中每个人都会存在N个标签,比如性别、年龄、喜欢吃什么、喜欢做什么等等的标签分类,这种我们可以叫做他为因子,又何为实时因子呢?,就是在你主体不断的变化下,其因子的属性值也在不断的更新,这种就叫做实时因子,通过大数据分析的方式 来确定因子分类,通过可配置的方式实现因子的配置,得出不同的因子值,我们组合在一起就可以称作客户群或者策略的用户群,通过这样的用户群,我们就可以做一些营销策略或者主动外呼等功能。 自动化因子通过groovy敏捷动态语言,在DRDS数据库中直接配置因子信息,spark分布式处理可直接动态完成因子更改、变换,无需重启服务,节省了操作时间,优化了处理效率,直接生成所需要的业务号码对应因子的数据;该因子分为既定因子标签与服务因子标签,在使用时可实现配置因子标签,通过配置后的因子标签进行组合,通过spark、kafka进行业务号码的实时数据抽取,最后形成因子的用户群数据,用户群数据可用于以后的短信、微信、支付宝触点的营销活动;通过监听源头数据kafka中完成订单数据,进行因子的实时处理;实现我们想要的结果。 因子标签丰富,业务数据实时、准确,为精准营销维系奠定基础。可独立管理产品活动及渠道触点,支持复用及灵活组合,依托于天宫平台,满足互联网高并发、高频次、实时交互需求,可提供实时及异步营销推荐方式,基于全面精准的客户、用户信息,结合业务系统产商品、活动数据与管理能力

如何开展量化投资研究

丶灬走出姿态 提交于 2020-02-29 13:50:46
参考:https://uqer.datayes.com/v3/community/share/5b6197d86bc62701e4bf52f9 目录: 需要哪些数据? ---- 巧妇难为无米之炊 怎样测量策略的性能? ----- 搭建回测系统 怎样衡量量化策略的好坏? ---- 箩筐统计指标 开始挣钱! ---- 从回测到实盘 1、需要哪些数据? ---- 巧妇难为无米之炊   首先,讲下可能用到的数据类型有哪些 历史日行情数据:即提供历史上每天每只股票的高开低收等价格信息以及成交量相关的信息,这也是量化中最基础的数据。通常能提供历史日行情数据的,几乎都能在当天交易日收盘之后提供更新的数据,因此也是实时更新的日行情数据。 历史日内行情数据:即能提供历史上每一天中间更为详细的价量信息,通常为5分钟一个数据点,也有一分钟甚至是半秒频率的数据。每个数据点的形式一般为该数据点代表时间段内的一个价量综合统计,包括高开低收和成交量信息。 历史分笔数据:即历史上每一笔交易的明细,每一个数据点是一笔交易,记录了每一笔成交的价格、数量、时间等信息,是记录实际成交信息最为细致的数据。 历史限价委托薄数据:记录了历史上每一个时刻限价委托薄的快照,每一个数据点代表一个时刻,每个数据点之间的间隔通常较小,比如0.5秒。每个数据点包含该时刻十档(或者五档)报价和挂单量等数据

利用因子分析建立信用风险评价体系

蓝咒 提交于 2020-02-27 14:15:46
多维数据在建模过程中,会出现很多问题,在 基于logit模型的客户信用风险预测 一文中,有谈到关于变量降维的几种方法:(1)基于经验,简单但主观性很强;(2)基于变量的统计显著性,模型上可靠但未必实务上可用;(3)变量规约,即用因子分析、主成分分析等方法将多个变量分解或合成为少数几个聚合因子。 之前用的是(1)和(2),这篇文章讨论第三种:主成分分析与因子分析。首先解决两个问题。 什么是主成分分析与因子分析 同:都是统计降维方法,将多个变量浓缩为少数几个新变量(主成分或因子) 异:浓缩方法不同,主成分分析是将原变量进行聚合,新变量(主成分)表示为原变量的线性组合;因子分析是将原变量进行结构,原变量表示为新变量(因子)的线性组合。 主成分分析与因子分析有什么用? (1)对解释变量进行降维处理,输出值作为下一步的输入值,作为其它建模过程的准备部分。 (2)直接作为建模主体,构建指标评价体系。 下面通过一个案例加以说明。 背景与上一篇文章相似,我们依然希望通过一些变量和数据建立起客户(银行)的风险评估体系,具体分为这几个步骤:(1)变量选择;(2)源数据与预处理;(3)数据探索;(4)因子分析;(5)结论。 (一)变量的选择、指标体系的构建 根据指标选取原则,同时参考银行行业规范,考虑从资本充足性、资产质量、流动性、盈利性和成长性5个方面来建立指标体系,具体如表1-1所示: (二

平衡二叉树(AVL)

喜夏-厌秋 提交于 2020-02-22 18:53:11
文章目录 AVL 平衡二叉树的概念 AVL树的实现原理 AVL树节点的定义 AVL树的插入 AVL树的旋转 AVL树性能分析 AVL 平衡二叉树的概念 平衡二叉树(Self-Balancing Binary Search Tree 或 Height-Balanced Binary Search Tree),是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1. 二叉排序树虽可以缩短查找的效率,但如果 数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下 。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年 发明了一种解决上述问题的方法: 当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高度,从而减少平均搜索长度 。 一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树: 它的左右子树都是AVL树 左右子树高度之差(简称平衡因子BF)的绝对值不超过1(-1/0/1) 如果一棵二叉搜索树是高度平衡的,它就是AVL树。如果它有n个结点,其高度可保持在 O ( l o g 2 n ) O(log_2 n) O ( l o g 2 ​ n ) ,搜索时间复杂度O( l o g 2 n log_2 n l o g 2 ​ n