
一种admix计算器E11结果的拟合方法----基于神经网络算法的遗传学族群分类拟合(E11T15)
思路
我们首先以每个人只有一种成分为例,这个时候则相当于将整个问题看成了分类问题。我们可以发现之前的算法大多都是基于无监督学习而实现分类的,而无监督学习的特点则是没有标签数据,而是算法本身实现分类。这也是无监督学习的缺点之一,因为没有标签数据同时带来的就是数据可读性会变差,需要进一步分析才能得出结论。
因此我们摒弃之前的无监督学习算法的思路,尝试使用监督学习。所以我们使用目前准确度比较高的神经网络模型进行分类。当每个人混合族群数为1个时,输出层概率最高的节点(成分)则为结果。当每个人混合族群为多个时,我们则先简单的认为概率等于成分。
模型构建
1. 数据集
2. 特征工程
· 部分样本的主成分分析情况
通过使用python sklearn库的PCA进行降维,并使用seaborn中的scatterplot函数将降维后的数据生成散点图,从而实现数据可视化。见下图:
上图例中Han代表未确定地域的汉族,CHB为北京汉族的简写,Han_NChina表示北方汉族。首先从散点图整体来看,样本内E11数据整体聚为4类:西南少数民族簇、汉族回族及南部少数民族簇、北部少数民族簇以及日本簇。
观察每簇细节,通过观察汉族及南方少数民族簇可以发现汉族整体与苗族整体重合,与回族簇大部分重叠,且回族与少部分蒙古族重叠。傣族与整个汉族簇有一定差别,但相较于簇与簇间的差距并不大。接着过观察北部少数民族簇,发现本簇中大部分样本相较于汉族回族及南部少数民族簇的散点图分布总体都较为零散,且簇内部族群都会有一定的重合,值得注意的是在此簇中雅库特人(一个在俄罗斯西伯利亚地区的民族)与簇内其他族群有一定的差异。再观察西南少数民族簇,簇内藏族样本明显聚类效果较好,并且土族整体与藏族较为接近,其他族群样本则较为分散。最后观察日本簇,可知整体距离我国族群较远,而簇内部整体分为两小簇,综合两特征(PC1、PC2)来看其中距离汉族回族及南部少数民族簇较近的一簇应当是受到我国沿海地区成分影响而造成的。
从语言文化角度来看,我国主要有汉语语族、藏缅语族、蒙古语族、壮侗语族突厥语族等,而一个民族中往往又会有方言区分。与上面E11数据的主成分分析(主要体现遗传因素)相比,我们发现了几个比较有意思的现象。首先就是两或多族群间,语族的划分(语言的同源性)并不一定与遗传学族群的同源性相关。以土族与蒙古族为例,两族群的语言均属于蒙古语族,但两族群间的遗传距离并没有土族与藏族间的遗传距离近。在针对这样两个或多个族群时我们应当明确我们的目标是为遗传学族群分类,所以这种情况下两族群应合并成一个大族群。其次,同一族群的E11数据主成分分析结果较为分散或族群簇跨度极大时,要酌情根据族群内部的文化差异划分类别,以达到细化分类的目的。例如蒙古族的样本较为分散,因为东部和西部的方言有差异,且东部和西部所重合的民族不同,根据遗传因素优先考虑的原则,则会将东西部样本划分开,并与相近的其他族群组合成一个类别。
超参数确定
通过使用Matlab的可优化神经网络,使用贝叶斯优化器的方法来找参数。确定隐藏层为20个节点,输出层为14个节点,并确定隐藏层与输出层l2正则化数均为1.9261e-06,隐藏层与输出层的激活函数分别为sigmoid函数和softmax函数。使用神经网络可视化工具得到的示意图如下:
模型训练
神经网络模型的训练过程,我们在服务器上采用了python中的keras库进行训练。我们根据以上超参数确定的部分的数据来进行设置,并迭代100次,发现准确度在97%-98%之间。
结果处理
基本本处理方法目的是为了简化结果,而在很多admix计算器中的痛点是因为各项指标不够直接(一般是通过数值大小判断)而导致判断不准或过于主观。因此解决此问题的关键则是根据相对于人群平均值来看用户的某项指标是否显著。因此我们使用z得分来处理。若z得分的值大于0,则用户含该成分的概率显著大于人群平均。最终只取显著成分,并重新计算占比。
模型优化
在模型内测的时候我们发现,由于标杆设置的范围并不是全球,导致部分国外样本在跑模型时会出现比较诡异的结果,比如:韩国样本跑出了50%北汉和南汉,新加坡马来样本跑出了11%鄂伦春,44%的回族和41%的拉祜族。所以在标杆上,又加入韩国以兼容部分国外样本。
最终成分设置
北汉,南汉,岭南汉,达翰尔-鄂伦春-赫哲,东部蒙古族-锡伯族,回族,日本,韩国,拉祜,纳西-彝族,藏族-土族,维吾尔族,西部蒙古族-哈萨克族,雅库特人以及壮族-傣族。
如何跑?
emmmm因为这次成本相对来说比较大(服务器和软件加起来大概花了接近1500),而且模型对性能要求也比较高的原因,所以采用支付宝付款+邮箱发数据的方式。价钱是5块/次,差不多一桶泡面的价钱(比国外的祖源里面10刀一次那种便宜很多了)。付款后把记录和e11结果发到我的邮箱,一般会在3天之内给到结果。(如果你实在不会跑e11结果的话,把原始数据邮箱发给我也行,我免费帮你跑一下e11)
「更新」
2023.8.12 由于申请API成功,本服务将暂停使用,预计将在10月新网站投入使用。之前通过邮件发送的样本仍会发送结果。
我们首先以每个人只有一种成分为例,这个时候则相当于将整个问题看成了分类问题。我们可以发现之前的算法大多都是基于无监督学习而实现分类的,而无监督学习的特点则是没有标签数据,而是算法本身实现分类。这也是无监督学习的缺点之一,因为没有标签数据同时带来的就是数据可读性会变差,需要进一步分析才能得出结论。
因此我们摒弃之前的无监督学习算法的思路,尝试使用监督学习。所以我们使用目前准确度比较高的神经网络模型进行分类。当每个人混合族群数为1个时,输出层概率最高的节点(成分)则为结果。当每个人混合族群为多个时,我们则先简单的认为概率等于成分。
模型构建
1. 数据集
2. 特征工程
· 部分样本的主成分分析情况
通过使用python sklearn库的PCA进行降维,并使用seaborn中的scatterplot函数将降维后的数据生成散点图,从而实现数据可视化。见下图:
上图例中Han代表未确定地域的汉族,CHB为北京汉族的简写,Han_NChina表示北方汉族。首先从散点图整体来看,样本内E11数据整体聚为4类:西南少数民族簇、汉族回族及南部少数民族簇、北部少数民族簇以及日本簇。
观察每簇细节,通过观察汉族及南方少数民族簇可以发现汉族整体与苗族整体重合,与回族簇大部分重叠,且回族与少部分蒙古族重叠。傣族与整个汉族簇有一定差别,但相较于簇与簇间的差距并不大。接着过观察北部少数民族簇,发现本簇中大部分样本相较于汉族回族及南部少数民族簇的散点图分布总体都较为零散,且簇内部族群都会有一定的重合,值得注意的是在此簇中雅库特人(一个在俄罗斯西伯利亚地区的民族)与簇内其他族群有一定的差异。再观察西南少数民族簇,簇内藏族样本明显聚类效果较好,并且土族整体与藏族较为接近,其他族群样本则较为分散。最后观察日本簇,可知整体距离我国族群较远,而簇内部整体分为两小簇,综合两特征(PC1、PC2)来看其中距离汉族回族及南部少数民族簇较近的一簇应当是受到我国沿海地区成分影响而造成的。
从语言文化角度来看,我国主要有汉语语族、藏缅语族、蒙古语族、壮侗语族突厥语族等,而一个民族中往往又会有方言区分。与上面E11数据的主成分分析(主要体现遗传因素)相比,我们发现了几个比较有意思的现象。首先就是两或多族群间,语族的划分(语言的同源性)并不一定与遗传学族群的同源性相关。以土族与蒙古族为例,两族群的语言均属于蒙古语族,但两族群间的遗传距离并没有土族与藏族间的遗传距离近。在针对这样两个或多个族群时我们应当明确我们的目标是为遗传学族群分类,所以这种情况下两族群应合并成一个大族群。其次,同一族群的E11数据主成分分析结果较为分散或族群簇跨度极大时,要酌情根据族群内部的文化差异划分类别,以达到细化分类的目的。例如蒙古族的样本较为分散,因为东部和西部的方言有差异,且东部和西部所重合的民族不同,根据遗传因素优先考虑的原则,则会将东西部样本划分开,并与相近的其他族群组合成一个类别。
超参数确定
通过使用Matlab的可优化神经网络,使用贝叶斯优化器的方法来找参数。确定隐藏层为20个节点,输出层为14个节点,并确定隐藏层与输出层l2正则化数均为1.9261e-06,隐藏层与输出层的激活函数分别为sigmoid函数和softmax函数。使用神经网络可视化工具得到的示意图如下:
模型训练
神经网络模型的训练过程,我们在服务器上采用了python中的keras库进行训练。我们根据以上超参数确定的部分的数据来进行设置,并迭代100次,发现准确度在97%-98%之间。
结果处理
基本本处理方法目的是为了简化结果,而在很多admix计算器中的痛点是因为各项指标不够直接(一般是通过数值大小判断)而导致判断不准或过于主观。因此解决此问题的关键则是根据相对于人群平均值来看用户的某项指标是否显著。因此我们使用z得分来处理。若z得分的值大于0,则用户含该成分的概率显著大于人群平均。最终只取显著成分,并重新计算占比。
模型优化
在模型内测的时候我们发现,由于标杆设置的范围并不是全球,导致部分国外样本在跑模型时会出现比较诡异的结果,比如:韩国样本跑出了50%北汉和南汉,新加坡马来样本跑出了11%鄂伦春,44%的回族和41%的拉祜族。所以在标杆上,又加入韩国以兼容部分国外样本。
最终成分设置
北汉,南汉,岭南汉,达翰尔-鄂伦春-赫哲,东部蒙古族-锡伯族,回族,日本,韩国,拉祜,纳西-彝族,藏族-土族,维吾尔族,西部蒙古族-哈萨克族,雅库特人以及壮族-傣族。
如何跑?
emmmm因为这次成本相对来说比较大(服务器和软件加起来大概花了接近1500),而且模型对性能要求也比较高的原因,所以采用支付宝付款+邮箱发数据的方式。价钱是5块/次,差不多一桶泡面的价钱(比国外的祖源里面10刀一次那种便宜很多了)。付款后把记录和e11结果发到我的邮箱,一般会在3天之内给到结果。(如果你实在不会跑e11结果的话,把原始数据邮箱发给我也行,我免费帮你跑一下e11)
「更新」
2023.8.12 由于申请API成功,本服务将暂停使用,预计将在10月新网站投入使用。之前通过邮件发送的样本仍会发送结果。
7 个回复
赞同来自: 基因心片海鹏奏
赞同来自: 基因心片海鹏奏
岭南汉 12.59%
壮傣 87.41%
赞同来自:
赞同来自:
赞同来自:
赞同来自:
赞同来自:
要回复问题请先登录或注册