精华内容
下载资源
问答
  • 相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的...但是如果是两个表格(多对多组数据,两两比较,就需要相关度表 correlation matr...
    相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。

    有时候多组数据需要分析其关联性(是否有正向/反向线性关联关系),这个时候就可以借助关联性分析了。如果只是两组线性数据比较,那只要比出来一个关联度就好了。但是如果是两个表格(多对多组数据,两两比较,就需要相关度表 correlation matrix了。

    关联分析可以用pearson、spearman或者kendall三种关联分析方法,一般比较常用的是pearson,这个会考虑具体数值大小。在这里因为数据差异比较大,所以我选用了spearman方法来进行相关性分析。

    关于相关性分析的三个算法区分可以参考这篇文章:相关性分析

    correlation的数值越接近1 或 -1,说明两组数据之间正向 或 反向 线性关联越强,但correlation总是要结合p-value一同考虑,才有意义。

    6ebae65cf415f8a5b811099c15553009.png
    样本点越接近虚线,关联性越好,correlation不因data scale而改变

    84113b857309c04421191edb49fe6f68.png
    同样的关联度,样本量增加,偶然性越低,p-value越小,才更有可信度

    PS: 协方差corvariant 也是计算两组数据线性关系的,但由于协方差受data scale 影响很大,所以只看结果的符号来判断正向或反向关系。相关性correlation由corvariant计算得到,同时考虑了data scale,所以结果的数值大小和符号都可以作为参考,可以运用correlation和X来预测Y,但效果一般般。 所以,又引入了R2(R平方,R=pearson相关系数),一个能更好表达用X来预测Y的度量标准,同时还能用于非线性关系,R=0.9时,R2=0.81,说明81%的预测结果可以由Y/X关系来解析。此处不深入讲了。

    7844e4cfab2aae7631cc2e189ef98030.png

    以R来实现

    关于相关系数散点图(一对一) ,注意,如果数据是RNA reads counts,需要先转换成log(TPM) 再进行画图,因为1)基因reads数基于基因长度进行标准化是最基础的,否则无法进行比较; 2)log之后的数据画图会更好看,log不改变数据间关系。

    a=log((rowMeans(tmp1))+1)
    b=rowMeans(tmp2)
    data=as.data.frame(cbind(a,b))
    colnames(data)=c("valueA","valueB")
    head(data)
    
    library(ggplot2)
    library(dplyr)
    cor(a,b,method="pearson")
    ggplot(data,aes(x=valueA,y=valueB))+ geom_point(size=1,shape=15)+geom_smooth(method=lm)

    9471667d30bc74046366778811b3f4c3.png
    前7列是read count,需要处理成log(TMP+1)

    2da7f11cfda007f8e9453a5198ec7906.png
    中间蓝线为拟合的lm

    TPM、RPKM、CPM计算方法:https://zhuanlan.zhihu.com/p/150300801

    关于相关系数矩阵(多对多),先读入矩阵数据,注意读入是numeric 类型

    1918397d3e19e069ba0cb64c8dfcbd1e.png
    这里我用两组不同的数据算关联度,记作data1和data2
    #install.packages("corrplot")
    library(corrplot)
    #matrix <- cor(data,method="spearman",use="everything")
    matrix <- cor(data1,data2,method="spearman",use="complete.obs")
    dim(matrix)
    matrix[1:5,]
    #correlation matrix
    write.csv(matrix,file="data/spearman_correlation.csv",quote=F,row.names=T)
    
    #correlation plot
    png(file="corr_plot.png",width=3000,height=3000)
    #数据少,半边的图
    corrplot(matrix, type = "lower", order = "original", tl.col = "black", tl.srt = 45,cl.lim = c(0, 1))
    #数据多,完整的图
    #corrplot(matrix,title = "Correlation Plot",method = "color",outline = T, addgrid.col = "white", order="hclust", mar = c(0,0,1,0), addrect = 4, rect.col = "grey", rect.lwd = 1,cl.pos = "b", tl.col = "indianred4", tl.cex = 1, cl.cex = 3)
    dev.off()

    这里png( , weight=, height= ) 的参数可以按需更改的。数据比较大的画数值设置大一点,出来的图片清晰度会大很多。因为屏幕大小有限,特征数多,图比较大的时候直接用jupyter notebook 或者rstudio看到的图片清晰度很低,所以一般打印出来看。

    corrplot包的使用这一篇讲得很好,可以按需调整自己的代码:R语言绘制热图(其实是相关系数图)实践(二)corrplot包

    dd952abd997c66dbd6b98edf1e2420b9.png
    一组数据内部两两比较,x=data,y=NULL

    4c92eb43c5cf7ddc7126db98949ec81a.png
    两组数据分别取一组数据出来两两比较,X=data1,Y=data2

    其实correlation matrix就是数据两两比较,算出一个相关性数值,在根据数值的大小和正负方向来画热图,把数据可视化。

    其实出了相关性结果数值,应该还有一个p-value的(即相关性结果数值随即得到的概率有多大),严谨一点的实验需要连同p-value一起考虑。接下来如果你想查看有多少是正相关,有多少是负相关的,可以用以下代码稍稍分析以下。

    cor_JC<-as.numeric(matrix)
    #如果是组内数据两两比较,会出现很多自己和自己比然后完全相关,结果=1的数值,记得移除(但不要移走其他1)
    #cor_JC[1:5]
    #rm=which(cor_JC==1)  #remove cor 1
    #cor_JC=cor_JC[-rm]
    #cor_JC[1:5]
    cor_JC[cor_JC >0.95]
    sum(cor_JC >0.95)
    cor_JC[cor_JC < -0.95]
    sum(cor_JC < -0.95)

    按照相关性的说法,取 |0.95| 为阈值。

    正相关:如果x,y变化的方向一致,如身高与体重的关系,r>0;一般地,
    |r|>0.95 存在显著性相关;
    |r|≥0.8 高度相关;
    0.5≤|r|<0.8 中度相关;
    0.3≤|r|<0.5 低度相关;
    |r|<0.3 关系极弱,认为不相关

    如果是一组数据,内部亮亮比对画图,则会看见对角线是一条全为1的线(自己跟自己比相关性)

    b0ca4c4f3e15b0feea86ee4db7e11a8b.png

    另,如果需要参考特征值+年龄+性别等的影响,也可以用线性回归来做,y=a*age+b*gender+c*x+d,这样算出来会有一个R^2和p-value。可以用R^2来替代相关系数。

    上文代码主要是用于作图,如果要查看生成关联度的具体数值分布并筛选出高关联度的几组数据,可以使用以下代码。(表内元素两两关联,不重复比对)

    #INPUT DATA
    metagenomics[1:2,]
    
    #COORELATION
    cor <- 0
    d<-c("0","0","0")
    end=dim(metagenomics)[2]-1
    for (i in 1:end) {
        x = metagenomics[,i]
        s=i+1
        for (j in s:dim(metagenomics)[2]) {
            cor_n <- cor(x, y = metagenomics[,j], method = "pearson")
            cor<-append(cor,cor_n)
            if(as.numeric(as.character(cor_n))>0.9){
                metab1<-colnames(metagenomics)[i]
                metab2<-colnames(metagenomics)[j]
                re<-c(metab1,metab2,cor_n)
                d<-rbind(d,re)
            }
        }
    }
    
    d<-as.data.frame(d)
    colnames(d)<-c("metab1","metab2","pearson_cor")
    d<-d[-1,]
    d[1:5,]
    
    cor<-cor[-1]
    summary(cor)
    length(cor[cor >0.8])
    length(cor[cor >0.9])
    #frequency
    hist(cor,breaks=100,xlim=c(-1,1))
    abline(v = 0.9, col = "red")

    3b5fc7a0d046939747d78337e24926e9.png

    1e4925d1f8a82bcedbdc379f31da1050.png

    置换检验 permutation test

    置换检验(Permutation Test)​www.bioinfo-scrounger.com
    Permutation test 置换检验是Fisher于20世纪30年代提出的一种基于大量计算(computationally intensive),利用样本数据的全(或随机)排列,进行统计推断的方法,因其对总体分布自由,应用较为广泛,特别适用于总体分布未知的小样本资料,以及某些难以用常规方法分析资料的假设检验问题。在具体使用上它和Bootstrap Methods类似,通过对样本进行顺序上的置换,重新计算统计检验量,构造经验分布,然后在此基础上求出P-value进行推断。

    简单来说,就是假设x1和x2两列数据求相关性(正常来说x1和x2的样本ID顺序需要一致),那我们如何知道,按这个顺序求出来的相关性是偶然间得到的,还是数据特别但却得到了这个结果呢?就要做置换检验。打乱其中一组的顺序,看得到的相关系数的范围是否与原来结果相近,如果相近,则证明随便乱来的数据计算结果也能与真实数据的结果相近,x1和x2的相关性比较无意义。

    0b76099a44842a792bd73d79f2b77b0e.png
    原来结果(上)和后来的随机结果(下3),数值范围都在-0.6 ~ 0.4附近,说明随便乱来一些数,都有很高可能能得到这个范围内的结果,原来计算结果无说服力。
    data<-as.data.frame(read.table("data/metabolomics_metagenomics_34JC.csv",sep=",",header=T,row.names=1,stringsAsFactors=F))
    data<-t(data[-c(1,2),])
    metagenomics<-data[,1:169]
    metabolites<-data[,170:295]
    
    #shuffles label in one group
    j = sample(1:nrow(metabolites),1*nrow(metabolites)) 
    #metabolites = metabolites[j,] 
    #metagenomics = metagenomics[j,]
    
    #metagenomics[1:2,]
    #metabolites[1:2,]
    
    cor <- numeric(dim(metagenomics)[2])
    for (i in 1:dim(metagenomics)[2]) {
    cor[i] <- cor(x = metabolites[,1], y = metagenomics[,i], use = "everything", method = "spearman")
    }
    #med
    hist(cor,breaks=100)
    #inter <- quantile(med, c(0.025,0.975))
    #inter
    

    如果置换检验(多试几次)得到原来结果和随机结果的覆盖范围不一致,则不重叠的部分数据有意义,可以继续进行分析。

    展开全文
  • 数据挖掘者和统计学家之间的一个差别是,数据挖掘者时常面对足够大量的数据,没有必要去考虑那些归因于偶然性事件的概率计算技巧。p值一般常用p值给出原假设为真的概率。当原假设为真是,表示真的没有发生什么,因为...

    Occam剃刀

    越简单越好

    原假设

    原假设是假定在观测中的不同只归因于偶然性。

    数据挖掘者和统计学家之间的一个差别是,数据挖掘者时常面对足够大量的数据,没有必要去考虑那些归因于偶然性事件的概率计算技巧。

    p值

    一般常用p值给出原假设为真的概率。当原假设为真是,表示真的没有发生什么,因为差异归因于偶然性。置信度,又是称为q值,是p值的反面。通常的目标是追求至少90%的置信层次,如果达不到95%或者更多的话。

    观察数据

    观察离散数值

    • 直方图
    • 时间序列
    • 标准值
    • 从标准化值到概率(双尾状分布、单尾状分布)
    • 交叉表

    观察连续变量

    • 连续变量的统计学度量(变动范围、均值、中值、众数)
    • 离差和标准差

    另一对统计概念

    • 相关性
    • 回归

    测定响应

    比例标准误差

    d941c480ed65f289808bea47ec28760d.png

    使用置信界限比较结果

    a353e7547e9cc8fecc5e6a297f4bb0e2.png

    使用比例差值比较结果

    96850ee448003b8ce21fd76d38b08c9b.png
    be9cf4c845a1b9cc998378c5b08bf1d1.png

    样本大小

    bfd2fef5fa11a963956a4e88a516e158.png

    置信区间的真正含义

    实验的测试群组和对照群组大小

    多重比较

    多重比较下的置信层次

    置信层次只是基于单一比较。当有多重比较时,前提条件就不正确,因此前面所计算的置信都就不太充分了。

    Bonferroni修正

    按照做出比较的数据分配期望的p值界限,一遍得到所有比较的1-p的置信度。

    卡方检验

    特别为多重测试且至少有两个离散结果的情形设计的。卡方检验是决策树最初形式之一的基础。

    期望值

    d9ea95f08c0453743f6b724e39b38379.png

    卡方值

    e2633a43fd034309d369060f73ca7f61.png

    使用卡方检验的步骤

    • 计算期望值
    • 计算偏离期望值的离差
    • 计算卡方
    • 对表格的全部卡方值求和
    • 计算观测值归因于偶然性的概率

    自由度:

    1190abca1d1d6d4dc8faa5b19c340477.png

    卡方于比例差值的比较

    e99cbf8c0dd556471f32155e8c881523.png

    数据挖掘和统计学异同

    • 数据挖掘者倾向于忽略原始数据中的测量误差
    • 数据挖掘者假定有足够多的数据和足够强的处理能力
    • 数据挖掘假定时时处处具有相关性
    • 在商业界设计试验可能很困难
    • 数据已被截取或者审查
    展开全文
  • Datawhale作者:王瑞楠、吴忠强、徐韬、...数据分析探索性数据分析(Exploratory Data Analysis,EDA)是指对已有数据在尽量少的先验假设下通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据...

     Datawhale 

    作者:王瑞楠、吴忠强、徐韬、田杨军

    摘要:入门数据挖掘,必须理论结合实践。本文梳理了数据挖掘知识体系,帮助大家了解和提升在实际场景中的数据分析、特征工程、建模调参和模型融合等技能。

    数据分析

    探索性数据分析(Exploratory Data Analysis,EDA)是指对已有数据在尽量少的先验假设下通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。

    396c8e10052dd2787671f33698d850f8.png

    常用的第三方库

    数据科学库

    • pandas:用于分组、过滤和组合数据,还提供了时间序列功能。

    • numpy:处理大型的多维数组和矩阵

    • scipy:用于解决线性代数、概率论、积分计算等任务

    数据可视化库

    • matplotlib:构建各种图表,从直方图和散点图到非笛卡尔坐标图等

    • seaborn:提供了丰富的可视化图库,包括时间序列、联合图和小提琴图等复杂的类型。

    常用函数

    数据简略观测

    • head():观察数据读取是否准确,常读取前5行数据。

    • shape:读取数据集的维度。

    数据总览

    • describe():包含每列的统计量,个数、平均值、方差、最小值、中位数、最大值等。

    • 数据类型info():了解数据每列的type,了解是否存在除了nan以外的特殊符号异常。

    数据检测

    缺失值检测

    • 查看每列的存在nan情况

    • 排序函数sort_values():将数据集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定行的

    • 可视化nan值与缺失值

    异常值检测

    • 3σ原则:拉依达准则,该准则具体来说,就是先假设一组检测数据只含有随机误差,对原始数据进行计算处理得到标准差,然后按一定的概率确定一个区间,认为误差超过这个区间的就属于异常值。

    • 箱线图:依据实际数据绘制,真实、直观地表现出了数据分布的本来面貌,且没有对数据作任何限制性要求(3σ原则要求数据服从正态分布或近似服从正态分布),其判断异常值的标准以四分位数和四分位距为基础。

    预测分布

    总体分布概况:

    • 无接触约翰逊分布:

    • 正态分布

    193da5f6fdb8b5e982889cc23824c239.png

    很多模型假设数据服从正态分布,数据整体服从正态分布,样本均值和方差则相互独立。当样本不服从正态分布时,可以做如下转换:

    • 线性变化z-scores:基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x’

    • Boxcox变换:一种广义幂变换方法,是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的情况。

    • yeo-johnson变换:是幂变换(power transformation)的方法之一,通过构建一组单调函数对随机变量进行数据变换。

    查看skeness 和kurtosis

    • skeness:衡量随机变量概率分布的不对称性,是相对于平均值不对称程度的度量,通过对偏度系数的测量,我们能够判定数据分布的不对称程度以及方向。

    • kurtosis:研究数据分布陡峭或平滑的统计量,通过对峰度系数的测量,我们能够判定数据相对于正态分布而言是更陡峭/平缓。

    d7fc7a25d6e3e05726aa726737937f89.png

    预测值的具体频数

    当某范围预测值很少时,可将其当作异常值处理填充或删除。若频数很失常,需对数据进行处理,例如进行log变换,使数据分布较均匀,可据处理后的数据进行预测,这也是预测问题常用的技巧。

    特征分析

    数字特征

    • 相关性分析:对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素之间的相关密切程度。

    • 特征的偏度和峰度

    • 数字特征分布可视化

      • pd.melt():处理数据,透视表格,可将宽数据转化为长数据,以便于后续分析。形成的数据即为,键:各特征名称,值:特征对应的值

      • sns.FacetGrid() :先sns.FacetGrid()画出轮廓,再map()填充内容

      • sns.pairplot():展示变量两两之间的关系(线性或非线性,有无较为明显的相关关系)。

    类别特征

    • unique分布:对于一维数组或者列表,unique函数去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组或者列表。

    • 可视化:

      • 箱型图可视化:直观识别数据中的离群点,判断数据离散分布情况,了解数据分布状态。

      • 小提琴图可视化:用于显示数据分布及概率密度,这种图表结合了箱形图和密度图的特征,主要用来显示数据的分布形状

      • 柱形图可视化类别

      • 每个类别频数可视化

    数据清洗

    数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。俗话说:garbage in, garbage out。分析完数据后,特征工程前,必不可少的步骤是对数据进行清洗。

    数据清洗作用是利用有关技术如数理统计、数据挖掘或预定义的清理规则将脏数据转化为满足数据质量要求的数据。主要包括缺失值处理、异常值处理、数据分桶、特征归一化/标准化等流程。

    92b458bc642c079ba7e92a72182cdd34.png

    缺失值处理

    关于缺失值处理的方式, 有几种情况:

    • 不处理:针对xgboost等树模型,有些模型有处理缺失的机制,所以可以不处理;

    • 如果缺失的太多,可以考虑删除该列;

    • 插值补全(均值,中位数,众数,建模预测,多重插补等);

    • 分箱处理,缺失值一个箱。

    异常值处理

    常用的异常值处理操作包括BOX-COX转换(处理有偏分布),箱线图分析删除异常值, 长尾截断等方式, 当然这些操作一般都是处理数值型的数据。

    • BOX-COX转换:用于连续的变量不满足正态的时候,在做线性回归的过程中,一般需要做线性模型假定。

    • 箱线图分析:依据实际数据绘制,真实、直观地表现出了数据分布的本来面貌,其判断异常值的标准以四分位数和四分位距为基础。

    数据分桶

    连续值经常离散化或者分离成“箱子”进行分析, 为什么要做数据分桶呢?

    • 离散后稀疏向量内积乘法运算速度更快,计算结果也方便存储,容易扩展;

    • 离散后的特征对异常值更具鲁棒性,如 age>30 为 1 否则为 0,对于年龄为 200 的也不会对模型造成很大的干扰;

    • LR 属于广义线性模型,表达能力有限,经过离散化后,每个变量有单独的权重,这相当于引入了非线性,能够提升模型的表达能力,加大拟合;

    • 离散后特征可以进行特征交叉,提升表达能力,由 M+N 个变量编程 M*N 个变量,进一步引入非线形,提升了表达能力;

    • 特征离散后模型更稳定,如用户年龄区间,不会因为用户年龄长了一岁就变化

    当然还有很多原因,LightGBM 在改进 XGBoost 时就增加了数据分桶,增强了模型的泛化性。现在介绍数据分桶的方式有:

    • 等频分桶:区间的边界值要经过选择,使得每个区间包含大致相等的实例数量。比如说 N=10 ,每个区间应该包含大约10%的实例。

    • 等距分桶:从最小值到最大值之间,均分为 N 等份;

    • Best-KS分桶:类似利用基尼指数进行二分类;

    • 卡方分桶:自底向上的(即基于合并的)数据离散化方法。它依赖于卡方检验:具有最小卡方值的相邻区间合并在一起,直到满足确定的停止准则。

    数据转换

    数据转换的方式有:

    • 数据归一化(MinMaxScaler);

    • 标准化(StandardScaler);

    • 对数变换(log1p);

    • 转换数据类型(astype);

    • 独热编码(OneHotEncoder);

    • 标签编码(LabelEncoder);

    • 修复偏斜特征(boxcox1p)等。

    特征工程

    特征工程指的是把原始数据转变为模型训练数据的过程,目的是获取更好的训练数据特征。特征工程能使得模型的性能得到提升,有时甚至在简单的模型上也能取得不错的效果。

    8502070f942d4a2ce15a4a742209edac.png

    特征构造

    特征构造的时候需要考虑数值特征,类别特征,时间特征。

    • 数值特征,一般会尝试一些它们之间的加减组合(当然不要乱来,根据特征表达的含义)或者提取一些统计特征

    • 类别特征,我们一般会尝试之间的交叉组合,embedding也是一种思路

    • 时间特征,这一块又可以作为一个大专题来学习,在时间序列的预测中这一块非常重要,也会非常复杂,需要就尽可能多的挖掘时间信息,会有不同的方式技巧。

    特征选择

    特征选择主要有两个功能:

    • 减少特征数量、降维,使模型泛化能力更强,减少过拟合

    • 增强对特征和特征值之间的理解

    通常来说,从两个方面考虑来选择特征:

    • 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。

    • 特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。

    根据特征选择的形式又可以将特征选择方法分为3种:

    • 过滤法(Filter):按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。

    • 包装法(Wrapper):根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。

    • 嵌入法(Embedded):先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。

    降维

    数据特征维度太高,首先会导致计算很麻烦,其次增加了问题的复杂程度,分析起来也不方便。但盲目减少数据的特征会损失掉数据包含的关键信息,容易产生错误的结论,对分析不利。

    PCA降维方法,既可以减少需要分析的指标,而且尽可能多的保持了原来数据的信息。

    但要注意一点, 特征选择是从已存在的特征中选取携带信息最多的,选完之后的特征依然具有可解释性,而PCA,将已存在的特征压缩,降维完毕后不是原来特征的任何一个,也就是PCA降维之后的特征我们根本不知道什么含义了。

    建模调参

    特征工程也好,数据清洗也罢,都是为最终的模型来服务的,模型的建立和调参决定了最终的结果。模型的选择决定结果的上限, 如何更好的去达到模型上限取决于模型的调参。

    建模的过程需要我们对常见的线性模型、非线性模型有基础的了解。模型构建完成后,需要掌握一定的模型性能验证的方法和技巧。同时,还需要掌握贪心调参、网格调参、贝叶斯调参等调参方法。

    97ac85b07d2b1c3c71b72991c070cc12.png

    回归分析

    回归分析是一种统计学上分析数据的方法,目的在于了解两个或多个变量间是否相关、相关方向与强度,并建立数学模型。以便通过观察特定变量(自变量),来预测研究者感兴趣的变量(因变量)

    长尾分布

    这种分布会使得采样不准,估值不准,因为尾部占了很大部分。另一方面,尾部的数据少,人们对它的了解就少,那么如果它是有害的,那么它的破坏力就非常大,因为人们对它的预防措施和经验比较少。

    欠拟合与过拟合

    欠拟合:训练的模型在训练集上面的表现很差,在验证集上面的表现也很差。即训练误差和泛化误差都很大。原因

    • 模型没有很好或足够数量的训练训练集

    • 模型的训练特征过于简单

    过拟合:模型的训练误差远小于它在测试数据集上的误差。即训练误差不错,但是泛化误差比训练误差相差太多。原因

    • 模型没有很好或足够数量的训练训练集

    • 训练数据和测试数据有偏差

    • 模型的训练过度,过于复杂,没有学到主要的特征

    由此引出模型复杂度概念模型中的参数,一个简单的二元线性的函数只有两个权重,而多元的复杂的函数的权重可能会什么上百上千个。

    2bb7f8dd4d194c9356add39d6d4a492e.png

    模型复杂度太低(参数过少),模型学习得太少,就难以训练出有效的模型,便会出现欠拟合。模型复杂度太高(参数很多),即模型可训练空间很大,容易学习过度,甚至于也将噪声数据学习了,便会出现过拟合。

    正则化

    损失函数后面会添加一个额外项,称作 L1正则化 和 L2正则化,或者 L1范数和 L2范数。

    L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)。

    正则化说明

    • L1正则化是指权值向量中各个元素的绝对值之和,通常表示为
    • L2正则化是指权值向量中各个元素的平方和然后再求平方根(可以看到Ridge回归的L2正则化项有平方符号)

    正则化作用

    • L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择

    • L2正则化可以防止模型过拟合(overfitting)

    调参方法

    贪心调参 (坐标下降) 坐标下降法是一类优化算法,其最大的优势在于不用计算待优化的目标函数的梯度。与坐标下降法不同的是,不循环使用各个参数进行调整,而是贪心地选取了对整体模型性能影响最大的参数。参数对整体模型性能的影响力是动态变化的,故每一轮坐标选取的过程中,这种方法在对每个坐标的下降方向进行一次直线搜索(line search) 网格调参GridSearchCV 作用是在指定的范围内可以自动调参,只需将参数输入即可得到最优化的结果和参数。相对于人工调参更省时省力,相对于for循环方法更简洁灵活,不易出错。 贝叶斯调参 贝叶斯优化通过基于目标函数的过去评估结果建立替代函数(概率模型),来找到最小化目标函数的值。贝叶斯方法与随机或网格搜索的不同之处在于,它在尝试下一组超参数时,会参考之前的评估结果,因此可以省去很多无用功。

    超参数的评估代价很大,因为它要求使用待评估的超参数训练一遍模型,而许多深度学习模型动则几个小时几天才能完成训练,并评估模型,因此耗费巨大。贝叶斯调参发使用不断更新的概率模型,通过推断过去的结果来“集中”有希望的超参数。

    这里给出一个模型可调参数及范围选取的参考:

    12a704f86b9e06a048be47d2f8bf8194.png

    模型融合

    通过融合多个不同的模型,可能提升机器学习的性能。这一方法在各种机器学习比赛中广泛应用, 也是在比赛的攻坚时刻冲刺Top的关键。而融合模型往往又可以从模型结果,模型自身,样本集等不同的角度进行融合。

    21a824bef09a49b40278f7a5a47b7d84.png

    模型融合是比赛后期一个重要的环节,大体来说有如下的类型方式

    1. 简单加权融合:

    • 回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);

    • 分类:投票(Voting);

    • 综合:排序融合(Rank averaging),log融合。

    2. stacking/blending:

    • 构建多层模型,并利用预测结果再拟合预测。

    3. boosting/bagging:

    • 多树的提升方法,在xgboost,Adaboost,GBDT中已经用到。

    简单算术平均法

    Averaging方法就多个模型预测的结果进行平均。这种方法既可以用于回归问题,也可以用于对分类问题的概率进行平均。

    加权算术平均法

    这种方法是平均法的扩展。考虑不同模型的能力不同,对最终结果的贡献也有差异,需要用权重来表征不同模型的重要性importance。

    投票法

    假设对于一个二分类问题,有3个基础模型,现在我们可以在这些基学习器的基础上得到一个投票的分类器,把票数最多的类作为我们要预测的类别。

    • 硬投票:对多个模型直接进行投票,不区分模型结果的相对重要度,最终投票数最多的类为最终被预测的类。

      • 绝对多数投票法:最终结果必须在投票中占一半以上。

      • 相对多数投票法:最终结果在投票中票数最多。

    c721a55923f8625a78e7a9913adac315.png

    • 软投票:增加了设置权重的功能,可以为不同模型设置不同权重,进而区别模型不同的重要度。

    99db025a04a2f79ba430306cf80b62c2.png

    堆叠法(Stacking)

    stacking 就是当用初始训练数据学习出若干个基学习器后,将这几个学习器的预测结果作为新的训练集,来学习一个新的学习器。对不同模型预测的结果再进行建模。

    49acf1e27f5b4d28b4987e566936bfdc.png

    混合法(Blending)

    Blending采用了和stacking同样的方法,不过只从训练集中选择一个fold的结果,再和原始特征进行concat作为元学习器meta learner的特征,测试集上进行同样的操作。

    把原始的训练集先分成两部分,比如70%的数据作为新的训练集,剩下30%的数据作为测试集。

    • 第一层,我们在这70%的数据上训练多个模型,然后去预测那30%数据的label,同时也预测test集的label。

    • 在第二层,我们就直接用这30%数据在第一层预测的结果做为新特征继续训练,然后用test集第一层预测的label做特征,用第二层训练的模型做进一步预测。

    Bagging

    Bagging基于bootstrap(自采样),也就是有放回的采样。训练子集的大小和原始数据集的大小相同。Bagging的技术使用子集来了解整个样本集的分布,通过bagging采样的子集的大小要小于原始集合。

    • 采用bootstrap的方法基于原始数据集产生大量的子集

    • 基于这些子集训练弱模型base model

    • 模型是并行训练并且相互独立的

    • 最终的预测结果取决于多个模型的预测结果

    Boosting

    Boosting是一种串行的工作机制,即个体学习器的训练存在依赖关系,必须一步一步序列化进行。Boosting是一个序列化的过程,后续模型会矫正之前模型的预测结果。也就是说,之后的模型依赖于之前的模型。

    其基本思想是:增加前一个基学习器在训练训练过程中预测错误样本的权重,使得后续基学习器更加关注这些打标错误的训练样本,尽可能纠正这些错误,一直向下串行直至产生需要的T个基学习器,Boosting最终对这T个学习器进行加权结合,产生学习器委员会。

    下面给出加州大学欧文分校Alex Ihler教授的两页PPT:

    0095507cc03f1b95938d4a0d64f5c67c.png

    ef969f70f3a31b70ec97f52c97d0cee6.png

    延伸阅读

    【1】数据分析:

    https://mp.weixin.qq.com/s/IOlHIEIQhuIaubTeP4o39w

    【2】特征工程:

    https://mp.weixin.qq.com/s/A2vChdNXRqlddyIY0iJ3zQ

    【3】建模调参:

    https://mp.weixin.qq.com/s/cXSRcMk_0t8RxSaKb0sHww

    【4】模型融合:

    https://mp.weixin.qq.com/s/fsT6rzpL5cuzh2usNjzzbA

    【5】完整视频:

    https://www.bilibili.com/video/BV1ye411x7oU

    【6】理论实践:

    https://tianchi.aliyun.com/competition/entrance/231784/information(阿里天池-零基础入门数据挖掘)

    ee22ba79240ad24c5e402b224b430787.png

    往期精彩回顾

    适合初学者入门人工智能的路线及资料下载

    机器学习在线手册

    深度学习在线手册

    AI基础下载(pdf更新到25集)

    本站qq群1003271085,加入微信群请回复“加群

    获取一折本站知识星球优惠券,复制链接直接打开:

    https://t.zsxq.com/yFQV7am

    喜欢文章,点个在看a973d733f40e95cbf6a5cc41e8811a67.png

    展开全文
  • 因此,在数据集成过程中要考虑以下几个问题:(1)数据来源可能为数据库、数据立方体、excel 表格、txt 文件等,或者为这些数据不同数据源格式的混合来源。 本章研究的目的是将其应用在实际工程中(具体工程项目将在...

    数据集成的的目的是把多个数据存储器(数据库)的数据集中合并在一个数据存储器(数据库)中。因此,在数据集成过程中要考虑以下几个问题:

    (1)数据来源可能为数据库、数据立方体、excel 表格、txt 文件等,或者为这些数据不同数据源格式的混合来源。 本章研究的目的是将其应用在实际工程中(具体工程项目将在第 5章中详细阐述),应当根据实际情况,因地制宜。由于所研究的实际问题的数据来源都存在各个工控机的数据库中,因此其来源格式单一,读取方式简单,我们在对这些不同来源的数据进行合并时只需考虑把所需要的数据按照时间相近的关系进行合并,同时对这些合并后的数据进行重新编号(重新定义主键);对于采集频率不同的数据我们仅需将其按照最高频率的数据项进行合并。

    (2)数据集成时还要注意检查是否存在数据的值冲突的现象,即有可能同一个数值在单位的表述方式不同而已。 对于该种情况,我们在进行数据合成时要对数据的语义进行适当的分析,确保合成后的数据不存在数据的值冲突的现象。

    (3)由(1)中可以看出,数据来源多样,这也不可避免的出现数据冗余的问题,即如果 A 属性可以由另外一个或几个属性推导出,则 A 属性为冗余属性,应该删除。 为了进行数据在集成时对冗余的属性进行删除,在这里引入相关分析(Correlation Analysis)的概念。

    1. Pearson属性约简法

    相关性分析是英国统计学家 Pearson(皮尔逊)提出的,该分析方法也称为积差相关或积矩相关。 假定在数据集成时有 A 和 B 两个属性,则这两个属性的相关度为:

    8595606bcc077f5688688a45ed4aa79a.png

    (1)

    180b24693775ec3cb7ac689ff45465b4.png

    a343ef90ad63255756aaa6ca22a53b3e.png

    图.1 相关系数示意图

    相关性可以表示输入与输出之间的相关度,也可以表示输入与输出、输出与输出的相关度,根据计算相关度的方式不同,其取舍也截然相反。 如果计算的是输入与输入、输出与输出的相关度,则相关度越高,说明这两者属于冗余属性,应当舍弃一个;如果计算的是输入与输出的相关度,则相关度越高,说明两者紧密相关,应当保留,在实际情况中应当根据分析的对象合理选取。 另外,除了皮尔逊分析法外,邻域粗糙集属性约简算法也可进行相关度分析。与皮尔逊方法相比,邻域粗糙集属性约简算法有个优势,即:皮尔逊分析法一次只能进行两个属性(一个输入属性与一个输出属性、一个输入属性与一个输入属性或者一个输出与一个输出属性)分析,而领域粗糙集可以同时对多个属性(多个输入属性与一个决策属性)进行分析,下面对邻域粗糙集属性约简算法进行简单阐述。

    2. 邻域粗糙集属性约简算法

    5ea880dc017ff2102de043f1043f1d3f.png

    e35695fe63b06f5e1b5f0235dd6e56a0.png

    d31247b0a717ee8a5b09926da8f6940e.png

    cbca33e8fee2c526fc73db8043874f26.png

    1f7e03847e510753f9cfc5fb22b02c45.png

    6156e979aff4cfb2dceeb4d89f6d1c16.png

    b39542bdab9bb81952a4ec1201ea6bba.png

    16488b6a12ad94cc8aae6bd9b33ec394.png

    fd6c0c086c06788f5817c42b3bdb0b1f.png

    102f45fde6fdc557d40cdbf6c02fa2c5.png

    adb9dea503d51fa884029d79fb544268.png

    a0a274d69dbd5ed3283c7fa9ea11fc6e.png

    5167a182214bbc71fdbdd071049390d8.png

    同理得,决策系统的边界、邻域决策系统的正域和负域分别为式 3.13~式 3.15。

    1f936d04547bccd2f9b8470e4f78bde8.png

    决策 D 对条件 B 依赖度:

    37bab6d6903b3de8758418517dcc2b66.png

    5149cac1749e0ecb61ad0ba8aa15cdde.png

    875bb981e62fa978371eaecce73a3b24.png

    图 1 前向贪心约简算法

    该算法用在属性约简上比较有效,这一结论已在文献[35]中给出,其验证数据来源于 UCI 数据集(表1),其属性简约后的结果见表2。

    表 1 数据集描述

    504e62e805fd397b181d9ee525a81dbc.png

    表 2 约简后属性数与分类性能比较

    fded32312c1113b9c5078184f744ec16.png

    《来源于科技文献,经本人分析整理,以技术会友,广交天下朋友》

    石显:数据挖掘中海量数据的预处理——数据的降噪​zhuanlan.zhihu.com
    石显:数据挖掘中海量数据的预处理——数据归一化​zhuanlan.zhihu.com
    展开全文
  • 面板数据分析步骤及流程-R语言

    万次阅读 多人点赞 2016-08-16 16:49:55
    面板数据模型选择及分析步骤;附R语言代码
  • 汽车销售数据相关性分析

    千次阅读 2020-02-16 21:48:54
    数据展示: 券代码 日期 传统汽车销量 国内生产总值当季值(亿元)x1 汽油价格(元/吨)x2 人民币贷款基准利率%x3 汽车总产量(万辆)x4 公路里程数 汽车整车股票指数 消费者信心指数 ...
  • 正态分布、正态性检验与相关性分析1 正态分布2 正态性检验2.1 直方图初判2.2 QQ图2.3 K-S检验2.3.1推导过程2.3.2 直接一行代码调用3 相关性分析3.1 图示初判3.2 Pearson相关系数3.2.1 计算推导3.2.2 代码一步到位3.3...
  • 统计数据相关性与因果关系

    千次阅读 2008-10-19 01:23:00
    在去年10月份的数学文化...于是和Wind牛跑去二教309,听了一场叫做《从数据中挖掘因果关系》的讲座。这个题目是很有趣的:数据本身并不说谎,难就难在我们如何从中挖掘出正确的信息。当我们讨论数据时,我们讲的最多的
  • Python数据相关性和标准化

    千次阅读 2019-03-21 20:37:39
    1、相关性分析 协方差:Cov(X,Y)=E(XY)-E(X)E(Y) 或cov(X, Y) = E(X-EX)(Y-EY),表示两个变量总体误差的期望,范围在负无穷到正无穷。协方差为0时,两者独立。协方差绝对值越大,两者对彼此的影响越大,反之越小 ...
  • 【地理空间数据挖掘】相关性分析

    千次阅读 2015-07-28 18:24:49
    主要从普通的相关性和空间...时间序列之间也存在空间相关性,对其进行探索性分析可考察空间数据(栅格)的时间联动性。1普通相关性分析就是分析变量之间的相关性,包括以下5个方面 1. Pearson相关系数探索连续变量相关
  • SPSS(五)SPSS之相关分析与线性回归模型(图文+数据集) 在讲解线性回归模型之前,先来学习相关分析的知识点,因为相关分析与回归有着密切的联系 相关分析 任意多个变量都可以考虑相关问题,不单单局限于两个...
  • 一、变量的相关性 ㈠变量间的关系 常见变量之间的关系有两类:一类是函数关系,比如\(y=ax+b\),是确定性关系; 另一类是相关关系,比如\(\hat{y}=\hat{b}x+\hat{a}\),是非确定性关系; ㈡正相关和负相关 角度...
  • 相关性分析笔记

    千次阅读 2020-07-06 01:10:04
    相关性分析笔记
  • 相关性分析用于评估两个或多个变量之间的关联。...注意,仅当数据呈正态分布时,才可以使用相关性分析。可以使用Shapiro-Wilk test进行检查。请参看第六讲小编将描述几种相关性分析的方法,并提供示例。1. 相关...
  • SPSS(Statistical Product and Service Solutions),“统计产品与服务解决方案”软件,为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称,有Windows和Mac ...
  • Visualization of seaborn  seaborn[1]是一个建立在matplot之上,可用于制作丰富和非常具有吸引力统计图形的Python库。Seaborn库旨在将可视化作为探索和理解数据的核心部分,有助于帮人们更近距离了解所研究的数据...
  • 【知识图谱】知识图谱的基础概念与构建流程

    千次阅读 多人点赞 2019-11-09 18:46:49
    此外,一些网页表格中包含有上下位关系信息,例如在带有表头的表格中,表头行的文本是其它行的上位词。 3) 语义类生成 该模块包括聚类和语义类标定两个子模块。聚类的结果决定了要生成哪些语义类以及每个语义...
  • 在概率和统计方法中,经常需要绘制图表从而直观地展现数据。下面简介几种常用统计图表绘图函数.
  • 毕业大半年了,现在还清晰的记得当时毕业论文不会用SPSS的痛苦,每天挣扎把度娘、知乎、知网、优酷、某宝等各大网站都逛了个遍,依然没有...从一个完全是SPSS小白到基本能完整分析一份问卷数据(当然也仅仅是单因...
  • 数学建模-多元线性回归(Stata实现)

    万次阅读 多人点赞 2019-09-24 17:31:53
    回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的任务就是, 通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y...
  • 实验名称: 研究数据相关性对机器学习的影响 实验目的:   1 熟练coursera上NG所学机器学习课程所学习的算法 2 如果将PCA理解为是通过减少数据的线性相关性来达到降维目的的话,本实验...
  • 我总结出了一个微信公众号周报和月报,年报的模板,每周/月只需要轻松下载数据,得到好看实用数据可视化展示。 在数据分析这一块,其实通过批量的数据分析对比,造假很容易看出数据异常的,这就是我最近系统整理...
  • 统计数据的陷阱

    2021-01-14 16:41:26
    统计数据打的交道多了,什么见鬼的事情都能遇上。统计数据显示,在铀矿工作的工人居然与其他人的寿命相当,有时甚至更长!难道统计结果表明在铀矿工作对身体无害么?当然不是!其实,统计数据本身并...
  • 产品提交了一个方案,要做一个以我们的表和职位表为基础,统计计算每个职位、地区、薪资区间、工作年限、学历的数据数量,并计算平均薪资,和总数占比的统计信息产品。逻辑并不复杂,比较困难的地方在于,这两张表都...
  • 分析两组数量不大的数据时,可以用图表法,常见的图表法有以下两种: 折线(时间维度):双坐标折线图 散点图 图表可以清晰的展现相关关系,但无法准确度量,且缺乏说服力。 协方差 协方差公公式如下: x和y分别...
  • 统计学之三大相关性系数 由于统计使用到相关系数比较频繁,先简单介绍一下这些系数。 相关系数:考察两个事物(在数据里我们称之为变量)之间的相关程度。 如果有两个变量:X、Y,最终计算出的相关系数的含义可以有...
  • 在Python中pandas库用于数据处理 ,我们从1787页的pandas官网文档中总结出最常用的36个函数,通过这些函数介绍如何通过python完成数据生成和导入,数据清洗,预处理,以及最常见的数据分类,数据筛选,分类 汇总,...
  • 拿到一张报表,怎样做出让老板眼前一亮的分析?是简单分析一下每个数据项的占比?...“绝大多数数据分析问题,都可以归纳为一个问题:相关性问题”。相关分析是研究两个或两个以上处于同等地位的随机变量间的相...
  • 从日志统计到大数据分析

    万次阅读 2016-12-22 16:44:46
    桑文锋,神策数据创始人&CEO,前百度大数据部技术经理。2007年浙大研究生毕业后加入百度,从2008年开始从事数据方向,从零构建了百度的用户日志大数据处理平台。2015年4月从百度离职,创建神策数据,帮助客户实现...
  • pandas的基本使用

    千次阅读 2019-08-27 20:00:00
    下载 下载pandas在命令行中输入 conda install pandas ...Pandas DataFrames是一个有行标签和列标签的两维数据结构,有点像Excel表格的结构。 建立一个DataFrame,需要先建立一个Pandas Series的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,605
精华内容 3,042
关键字:

表格统计数据相关性