给R包加上一个shinyapp是一个不错的想法,可以将shiny交互方式作为R包的usage instructions的补充,user在使用前能先了解下这个R包能做的事。。。。
比如shinyjs的作者Dean Attali就给这个R包做了一个shiny网页,如:https://daattali.com/shiny/shinyjs-demo/
给R包加上一个shinyapp是一个不错的想法,可以将shiny交互方式作为R包的usage instructions的补充,user在使用前能先了解下这个R包能做的事。。。。
比如shinyjs的作者Dean Attali就给这个R包做了一个shiny网页,如:https://daattali.com/shiny/shinyjs-demo/
继续整理shiny的几个用法
在shiny用法整理(三)中,提到对于多个文件的下载,可在downloadHandler
中将多个输出文件进行压缩后作为单个文件进行下载,比如我有100个文件要生成:
最近看到一篇文献Sex-specific transcriptional signatures in human depression,其中提到了用Rank-rank hypergeometric overlap (RRHO)方法来寻找不同类型样本之间的overlap基因
文章研究在Major depressive disorder(MMD)下,对6个brain regions(vmPFC, OFC, dlPFC, aINS, NAc, vSUB)进行转录组测序,研究不同性别下与MMD相关的6个brain regions的一些表达特征;通过RRHO来寻找brain regions的overlapping patterns,相当于找一些有共同影响作用的基因
Jupyter Notebook平时接触倒是不少,一些machine learning course以及Git hub上的代码都会用Jupyter notebook来展示;因此打算用Jupyter notebook将之前Python实现Statistical learning method书中的算法简单整理一下
最近看Kaggel的时候,发现一个machine learning的micro-course,其以简洁易懂的方法让我们初步了解什么是机器学习以及如何运用机器学习的算法来解决问题。对于每一小节都配套exercise,在Kernals(Kernels:Explore and run machine learning code with Kaggle Kernels, a cloud computational environment that enables reproducible and collaborative analysis)上练习,模板是Jupyter notebooks,互动性很好,蛮好玩的
ROC和AUC平时用的比较多,但是其真正的原理和计算过程却了解的不多,因此做个整理
照抄自网上的一个例子,加深下理解:
比方说在一个10000个人的数据集中,有100个人得了某种病症,你的任务是来预测哪些人得了这种病症。你预测出了200人得了癌症,其中: * TN,True Negative:没有得癌症并且你也预测对没有得癌症的有9760人 * TP,True Positive:得了癌症而且你也预测出来的病人有60人 * FN,False Negative:得了癌症但是你没有预测出来的病人有40人 * FP,False Positive:没有的癌症但是你预测得了癌症的有140人
那么:
EM算法是一种迭代算法,由E步(求期望)和M步(求极值)两步组成,因此EM算法全称为期望极大算法(Expectation Maximum algorithm)。由于其是基础算法,因此在其他机器学习方法中常会用到,比如HMM
AdaBoost算法和SVM算法曾被当做两大最好的监督学习分类算法,现在可能要再加上神经网络了(以上均为听说。。。)
AdaBoost是adaptive boosting的缩写(自适应增强学习),是基于Boosting思想的机器学习算法,是集成学习中的一种,其基本原理就是将多个弱分类器(弱分类器一般选用单层决策树,也叫决策树桩)进行线性组合,使其成为一个强分类器,从而提高分类性能
支持向量机(support vector machines, SVM)是一种二类分类模型,其很好的解决了感知机中模型有多解的问题,其基本模型是定义在特征空间上的间隔最大的线性模型
从历史上来讲SVM可谓是无人不知,但我第一次了解其是在一篇用SVM来在血液RNA表达数据中寻找生物标志物的文献(尴尬。。。),当时由于一连串看不懂的SVM术语,使我放弃了那篇文献方法部分的阅读。。。由于最近想从头开始了解下机器学习的一点知识,所以决定好好梳理下SVM实现的基本思路,了解其使用条件以及应用场景,不然可能连基本的调参都看不懂。。。下面是我摘抄的笔记(主要结合《统计学习方法》以及各个博客文章),不涉及公式推导(可参照网上大神们的资料),最后以代码形式整理下SVM的思路
逻辑斯蒂回归(logistic regression)是一个非常常见的统计学分类方法,虽然其名字中带有回归两个字,但是其主要还是用于解决二分类的问题;至于逻辑斯蒂这个绕口的名字,则是来源于逻辑斯蒂分布
决策树(decision tree)是一种基本的分类与回归方法;其分类决策模型是一种对类进行分类的树形结构,由节点和有向边组成;节点除了根节点外,又分为内部节点和叶节点,前者表示一个特征,后者表示一个类
朴素贝叶斯属于生成模型,属于贝叶斯分类的算法,以贝叶斯定理为基础,因此如需看懂其公式推导方式,则需要了解什么是先验概率、条件概率以及后验概率;同时了解什么是条件概率公式,什么是全概率公式,进而可以推导出什么是贝叶斯公式
Consensus Clustering(一致性聚类),无监督聚类方法,是一种常见的癌症亚型分类研究方法(如乳腺癌中的PAM50),可根据不同组学数据集将样本区分成几个亚型,从而发现新的疾病亚型或者对不同亚型进行比较分析(Justification for using consensus clustering(wiki))
之前看到一个公众号文章分享了Github上的一个资源玩游戏一样学 Git 分支,这个 GitHub 热门别再错过了,才发现自己对于Git的理解只停留在:其是一个仓库,然后pull and push,over;因此正好借助着这个闯关学习Git资源,就试着玩玩,从头了解下如何用Git进行版本控制
k近邻(KNN)算法是一种简单易于实现的监督机器学习方法,可用于解决分类和回归问题(这里取决于KNN算法最后返回值的处理方法)
Python从设计之初就已经是一门面向对象的语言;面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
感知机(perceptron)是二类分类的线性分类模型,属于判别模型,是支持向量机(SVM)的基础,两者都是属于监督学习的一种分类器,而后者在生物信息学处理分类问题中应用非常广泛(尤其是在生物标记物biomarker研究以及癌症预后等研究中)
FCM(Fuzzy C-Means)算法是一个模糊聚类算法,是对早期硬K-means聚类的一种改性,克服了硬聚类的非此即彼的分类缺点。
FCM属于软聚类,它允许一个数据点可以属于多个类,FCM的价值函数跟K-means非常相似,但其引入了隶属度的概念,使得每个数据点用值在[0,1]的隶属度来确定其属于各个组的程度,其结果是每个数据点对聚类中心的隶属程度(membership),取值在0-1之间,并进行归一化使得总和等于1;因此FCM的思想是使得被划分到同一组下的数据点之间相似性最大,而不同组之间的相似度最小
最近在看到CNV的时候,发现一些检测CNV的分析方法都是基于隐马尔可夫模型(HMM),而HMM在生物信息学中也应用广泛。如早期的DNA序列分析(对一家族序列建立HMM模型),还有预测DNA编码区域(对已知或者指定序列进行训练从而构建HMM模型),以及CNV分析(在Segmentation中利用HMM模型预估CNV数目,确定相应区域的拷贝数)等等
HMM是生物信息学中比较流行的机器学习和模式识别方法,它具有对模型中的一些隐性参数进行识别和优化的能力,使得这种模型具有很强的鲁棒性,并且可以随着训练深入进一步提高识别精度,同时这种自适应的模型能够有效地实现检测过程中的参数优化
因此整理下<<统计学习方法>>的隐马尔可夫模型和一些网上资料
最近看了一些Galaxy的一些官方文档,学习下如何在Galaxy这个开源生信云平台上构建一些分析工具,最后不是太令人满意;整体上Galaxy还是很好的一个平台工具,其开源平台再加上开发者们提供的开源分析流程能很好的搭建一些生信分析流程,其也设定好了一个前段-后端的框架,用户可以通过注册并登陆,以及保存数据集以及分析的输入/输出文件,也可以通过html文件设定登陆界面等等