所以我意识到我在这里问的问题是大而复杂的。
一个潜在的解决方案的变量的大小
在我通过统计论坛和帖子进行的所有搜索中,我没有找到一种科学合理的方法来考虑我遇到的数据类型,
但我想了一部(小说?)对同一模型中的大数据集和小数据集进行完美说明的潜在解决方案。
提出的方法包括使用遗传算法改变两个数字,定义组成implied strike速率的数据集大小与
将要使用的implied strike的百分比,模型的目标是在以下csv的两列中最大化数字的同源性。(超简化
但希望能证明这一原则)
示例数据

Date,PupilName,Unique class,Achieved rank,x,y,x/y,Average xy
12/12/2012,PupilName1,UniqueClass1,1,3000,9610,0.312174818,0.08527
12/12/2012,PupilName2,UniqueClass1,2,300,961,0.312174818,0.08527
12/12/2012,PupilName3,UniqueClass1,3,1,3,0.333333333,0.08527
13/12/2012,PupilName1,UniqueClass2,1,2,3,0.666666667,0.08527
13/12/2012,PupilName2,UniqueClass2,2,0,1,0,0.08527
13/12/2012,PupilName3,UniqueClass2,3,0,5,0,0.08527
13/12/2012,PupilName4,UniqueClass2,4,0,2,0,0.08527
13/12/2012,PupilName5,UniqueClass2,5,0,17,0,0.08527
14/12/2012,PupilName1,UniqueClass3,1,1,2,0.5,0.08527
14/12/2012,PupilName2,UniqueClass3,2,0,1,0,0.08527
14/12/2012,PupilName3,UniqueClass3,3,0,5,0,0.08527
14/12/2012,PupilName4,UniqueClass3,4,0,6,0,0.08527
14/12/2012,PupilName5,UniqueClass3,5,0,12,0,0.08527
15/12/2012,PupilName1,UniqueClass4,1,0,0,0,0.08527
15/12/2012,PupilName2,UniqueClass4,2,1,25,0.04,0.08527
15/12/2012,PupilName3,UniqueClass4,3,1,29,0.034482759,0.08527
15/12/2012,PupilName4,UniqueClass4,4,1,38,0.026315789,0.08527
16/12/2012,PupilName1,UniqueClass5,1,12,24,0.5,0.08527
16/12/2012,PupilName2,UniqueClass5,2,1,2,0.5,0.08527
16/12/2012,PupilName3,UniqueClass5,3,13,59,0.220338983,0.08527
16/12/2012,PupilName4,UniqueClass5,4,28,359,0.077994429,0.08527
16/12/2012,PupilName5,UniqueClass5,5,0,0,0,0.08527
17/12/2012,PupilName1,UniqueClass6,1,0,0,0,0.08527
17/12/2012,PupilName2,UniqueClass6,2,2,200,0.01,0.08527
17/12/2012,PupilName3,UniqueClass6,3,2,254,0.007874016,0.08527
17/12/2012,PupilName4,UniqueClass6,4,2,278,0.007194245,0.08527
17/12/2012,PupilName5,UniqueClass6,5,1,279,0.003584229,0.08527

所以我创建了一个小型的模型数据集,其中包含了一些很好的例子,说明了我目前的方法在哪里不足,以及我认为遗传算法可以用来解决这个问题。如果我们查看上面的数据集,它包含6个独特的类,算法的最终目标是在调整后的1和第3列中的x/y之间创建尽可能高的对应关系(基于零的引用)。在achieved rank中,我们有两个相同的uniqueclass1值,现在这些值是比较的。如果与平均值进行比较(注意,平均值不是根据该数据集计算得出的),则值较大,但通常认为3000/9610比300/961更重要,因此更可能具有x/yx/y值。因此,我要做的是使用由以下公式定义的对数增长关系,创建一个achieved rank来克服数据集大小的这些差异:
1
其中,adjusted x/y是唯一的动态数
如果我能稍微解释一下我的逻辑,并愿意接受建设性的批评。下图显示了数据集大小与x/y占调整x/y的百分比之间的指数增长关系。从本质上讲,当数据集变大时,adjusted xy = ((1-exp(-y*α)) * x/y)) + ((1-(1-exp(-y*α)))*Average xy)中使用的原始α的百分比会变大。剩下的百分比由平均xy组成。假设300/961为75%x/y和25%adjusted x/y以及3000/9610为95%/5%,这就产生了一个调整后的x/y,这清楚地证明了
为了帮助理解降低x/y会产生以下关系,其中较大的数据集需要达到相同的xy贡献百分比。
相反,增加average xy会产生以下关系,其中较小的数据集需要达到相同的xy贡献百分比。
所以我已经解释了我的逻辑。我也乐于接受代码片段来帮助我克服这个问题。我计划在未来制作大量的遗传/进化算法,并且可以真正使用一个工作示例来挑选和使用,以帮助我理解如何利用Python的这种能力。如果需要更多的细节或进一步澄清问题或方法,请一定要问,我真的希望能够解决这个问题和未来的问题的性质。
因此,在讨论了解决这一问题的方法之后,我得出了这样的结论:最好的方法是迭代α的遗传算法,以使调整后的x/y秩与实现的列秩之间的同源性/相关性最大化。三。如果有人能在那个部门提供帮助,我们将不胜感激。
所以澄清一下,这篇文章不再是关于方法论的讨论
我希望有人能帮助我产生一种遗传算法,使方程结果之间的同源性最大化。
α
其中,α适用于csv的每一行。最大化同源性可以通过最小化adjusted xy = ((1-exp(-y*α)) * x/y)) + ((1-(1-exp(-y*α)))*Average xy)的等级之间的差异来实现(其中等级是每个adjusted xy唯一的)和adjusted xy
最小化这个值将使同源性最大化,并从根本上解决不同大小数据集的问题。如果需要更多的信息,请咨询,我一天检查这篇文章大约20次,所以应该及时回复。非常感谢斯姆纳利。

最佳答案

从一般的角度来看,你所面临的问题对我来说就像是。简而言之,更精确的模型倾向于方差(对单个训练集的变化敏感),更一般的模型倾向于偏差(模型适用于许多训练集)
我建议不要把重点放在遗传算法上,而是看一下实例库学习和高级回归技术。CMU的Andrew Moore页面是一个"Bias Variance Dilemna"
尤其是good entry point
[编辑]
在第二次阅读之后,我的第二个理解是:
您有一组具有两个相关属性x和y的示例数据。
当y很小时,不希望x/y占主导地位(被认为代表性较低)。
因此,您希望“weigth”具有调整值的示例。
您希望调整后的xy与第三个属性r(等级)相关。相关的,例如,每个类,调整后的xy排序为r。
为此,建议将其作为优化问题,搜索给定函数f(x,y,params)=adjusted xy的参数。
在d=距离的约束下(该类的已达到等级,该类的已调整等级)是最小的。
你的问题,至少对我来说,是在属性选择/属性适应领域。(我想数据集稍后将用于监督学习)。
我在你的方法中看到的一个问题(如果理解得很好)是,在最后,等级将与调整后的等级高度相关,因此不会带来有趣的补充信息。
一旦这样说,我想你一定知道GA是如何工作的。你必须
定义染色体的内容:这似乎是您的α参数。
定义适当的健身功能
一个个体的适应度函数可以是数据集所有示例中距离的总和。
在处理实际值时,其他元启发式方法(如进化策略或模拟Anealing)可能比GA更适合。
由于解决优化问题是CPU密集型的,您可能最终考虑C或Java而不是Python。(因为健身至少会被解释,因此花费很大)。
或者,我会考虑使用y作为某个有监督学习算法的权重(如果目标是有监督学习)。

07-25 21:42
查看更多