




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、准备预测建模(1)Ø 模型1. 模型:模型可以是和我们能够观察和测量的数量值的一些方程,也可以是一套规则。2. 由于输入中具有噪声,这使得更复杂的模型的精度增加失去了意义,采用简单模型的另外一种情况是,在应用中我们根本不需要更复杂的模型。第三种情况是,更复杂的模型涉及我们无法测量的数值。最后,如果因为复杂度的关系,模型会需要太长时间进行训练或预测,我们也不会使用更复杂的模型。3. 我们要学习的模型具有两个本质的特征:(1):预测分析学是根据数据来构建模型的;(2):在根据某些数据创建模型来描述特定现象的过程中,我们必然会遇到某些随机性的来源,我们称之为模型的随机性成分(stochas
2、tic)或不确定性成分(nondeterministic component)。有时我们要尝试建模的系统本身并没有任何内在的随机性,而是数据包含了随机成分。数据的随机性的一个来源就是测量误差。不包含随机成分的模型成为确定性模型。随机模型则是假设在建模的过程中含有内在的随机源的模型。有时候这些随机源的来源是来自这样一个事实:对最有可能影响系统的所有变量都进行测量是不可能的,因而我们只能利用概率来对其进行建模。4R中预装了很多常被引用的数据集,使用命令data()可以查看。5自变量(independent variable)=特征(feature)=属性(attribute)=预测因子(predi
3、ctor)=维度(dimension)6因变量(dependent variable)=输出(output)=目标(target)7误差可以分为:可化简误差(reducible)和不可化简误差(irreducible)。可化简误差本质上是预测建模者能够通过选择模型结构来使之最小化的误差。一个不可简化的误差的示例是当我们尝试根据不充分的特征集来创建模型时产生的。8给一个模型加入更多特征的一些潜在的实际后果包括:增加训练模型所需要的时间,增大收敛到最终解决方案的难度,以及在特定情况下(例如特征值是高度相关的)实际上会降低模型的精度。最后另外一个我们必须接受的不可化简的误差来源是数据本身就是有噪声的
4、。Ø 模型的核心组成部分;1、 带有需要调优参数的一组方程;2、 代表我们建模所针对系统或过程的一些数据;3、 描述该模型拟合优度的一个概念;4、 更新参数以改善该模型拟合优度的一个方法。Ø 第一个模型:k阶近邻模型(k-nearest neighbor, kNN)这种简单的方法实际上会避免构建一个明确的模型来表示数据的特征如何组合从而产生一个目标函数。相反,它依赖于一个概念,也就是我们对之前没有见过的一个数据点进行预测,就要在原始训练数据中查找k个和新数据点最相似的的观测数据,然后就可以针对已知的这k个邻居的目标函数值,利用某种求均值的技术来计算出一个预测值。下面利用ir
5、is数据集来说明:Ø R语言中预装了很多常被引用的数据集,例如鸢尾花数据集R(iris data set)。Ø 使用data()命令可以查看R中预装数据集的列表清单。要修改某一数据集中的数据,可以把待分析的数据集名作为输入参数提供给data()命令:> data("iris")> head(iris, n=3) Sepal.Length Sepal.Width Petal.Length Petal.Width Species1 5.1 3.5 1.4 0.2 setosa2 4.9 3.0 1.4 0.2 setosa3 4.7 3.2 1.
6、3 0.2 setosa假设我们收集了一份未识别的新鸢尾花的样本,它具有如下的观测值:> new_sample=c(4.8,2.9,3.7,1.7)>names(new_sample)=c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width")> new_sampleSepal.Length Sepal.Width Petal.Length Petal.Width 4.8 2.9 3.7 1.7我们打算用kNN算法来预测应该用鸢尾花的哪
7、种样本来标识新样本。第一步:确定新样本的k个最邻近样本。为此要定义观测数据的相似性,常用的方法是计算特征空间里两条观测数据之间的数量化距离,要在特征空间里计算两条观测数据的距离,经常利用欧几里得距离(Euclidean distance),它是两点之间的直线长度。首先,对鸢尾花数据构造子集,它只包括我们需要的特征,即去除品种列,而这一列正是我们想要预测的;然后定义一个函数来构造欧几里得距离;下一步,调用apply()函数,运用自定义函数来对数据框里的鸢尾花观测数据进行计算;最后调用sort()函数,并设定index.return参数为TURE,这样就可以把每个计算的距离和它在鸢尾花数据框里的行
8、号索引对应起来。> iris_features=iris1:4> distance_eucl=function(x1,x2) sqrt(sum(x1-x2)2)> distances=apply(iris_features,1,function(x) distance_eucl(x,new_sample)> distances_sorted=sort(distances,index.return=T)> str(distances_sorted)List of 2 $ x : num 1:150 0.574 0.9 0.9 0.949 0.954 . $ ix:
9、int 1:150 60 65 107 90 58 89 85 94 95 99 .> ?applyApply Functions Over Array MarginsDescriptionReturns a vector or array or list of values obtained by applying a function to margins of an array or matrix.Usageapply(X, MARGIN, FUN, .)ArgumentsXan array, including a matrix.MARGINa vector giving the
10、 subscripts which the function will be applied over. E.g., for a matrix 1 indicates rows, 2 indicates columns, c(1, 2) indicates rows and columns. Where X has named dimnames, it can be a character vector selecting dimension names.FUNthe function to be applied: see Details. In the case of functions l
11、ike +, %*%, etc., the function name must be backquoted or quoted.$x属性包含了鸢尾花新样本和鸢尾花数据框里的数据之间计算的距离的实际值;$ix 属性包含了对应观测数据的行号。如果要找出距离最近的五个邻居,我们就可以把$ix属性中的前5个数据项作为行号,对原始的鸢尾花数据框划分子集:> nn_5=irisdistances_sorted$ix1:5,> nn_5 Sepal.Length Sepal.Width Petal.Length Petal.Width Species60 5.2 2.7 3.9 1.4 ver
12、sicolor65 5.6 2.9 3.6 1.3 versicolor107 4.9 2.5 4.5 1.7 virginica90 5.5 2.5 4.0 1.3 versicolor58 4.9 2.4 3.3 1.0 versicolor于是可以发现新样本为versicolor品种的。注意:在该过程中,我们根本没有尝试说明这4个特征是如何与输出相关联的。因此,我们经常把kNN模型称为一种惰性学习方法,因为实际上它只是记住了训练的数据,并在预测过程中直接使用它。Ø 模型的分类Ø 有监督(supervised)、无监督(unsupervised)、半监督(semi-su
13、pervised)和强化学习(reinforcement learning)模型1、 有监督学习:在训练数据中包含了所有观测数据的输出变量值。kNN模型就是一个有监督的模型,因为该模型对于一个输入点的预测是通过组合该点的的一小批邻近点的输出变量值来进行的。2、 无监督学习:输出变量不明确,可以查看数据并根据它们之间的相似程度给观测数据分组。这个过程称为聚类(clustering)。聚类的一个好处是我们可以在数据中发现数据点的自然分组。3、 半监督模型:利用一部分(通常很少)包含输出变量值而其他部分完全无标签的数据来创建的。很多这类模型会首先利用数据集中有标签的部分来粗略地训练数据,然后引入无标
14、签数据,用训练的模型对其产生预测的标签。4、 在强化学习的环境里无法获得输出变量,但是提供了其他和输出变量有直接关联的信息。l 参数化(parametric)和非参数模型1:参数化模型的一个特点是它们往往会定义一个函数形式。这就意味着它们把所有可能的函数中选择目标函数的问题化简为一个具体的函数族,这个函数族就构成了一个参数集合。选择能定义函数的特征函数,实质上就是为这些参数选择确切的值。2:非参数化模型一般对输出函数的具体形式不作任何假设。构建一个没有参数的目标函数有不同的方式,样条(spline)是非参数化模型的常见示例。样条背后的核心思想是,对于形式未知的输出函数,我们设想它是准确定义于训
15、练数据的所有观测数据对应的点上。在这些点之间,可以利用平滑多项式函数对输出函数进行局部插值。实质上输出函数是以分片方式在训练数据的点之间的空间构建的。不像大部分场景那样,样条可以对训练数据确保百分之百的精确度,然而,在训练数据中存在某些误差是正常的,另外一个非参数化的模型就是kNN模型。l 回归模型和分类模型l 实时(real time)和批处理机器学习模型l 预测建模的过程1:定义模型的目标2:收集数据3:选取模型例如在分类任务中采用朴素贝叶斯模型或逻辑回归模型,在回归的情况下选择线性模型。4:数据的预处理探索性数据分析(exploratory data analysis)。一个很好的实践就
16、是对数据框调用R语言中的summary()函数。另外一个对数据框里的特征进行概括的有用函数是psych包中的describe()函数。它返回有关每个特征的偏斜程度,以及针对位置(例如均值和中位数)和分布情况(例如标准差)的常规衡量指标。Ø 特征比例缩放的三种方法:1:Z评分归一化(Z-score normalization)即常用的标准化方法;2:按比例缩放所有的特征和输出,让他们处于单个区间内,典型的是区间0,1:Xunit-interval=X-min(X)maxX-min(X)3:博克斯考克斯变换(Box-Cox transformation)。这种变换通常运用在输入特征呈现高
17、度偏斜(不对称)而我们的模型要求输入特征符合正态分布或者至少是对称分布的情况:XBox-Cox=X-1因为在分母上,所有它必须非零。该变换实际上对值为0的是有定义的:在本例中,它就是输入特征的自然对数,即ln(x):当无限地接近于0时:X-1=eln(x)-11+lnX+122lnX+-1=lnx注意这是一种参数化的变化,因而需要给指定一个具体的值。有多重方式可以根据数据的本身给估算一个适当的值。一种进行这种估算的技术是交叉验证(cross-validation)。Ø 为了直观地感受这些变换在实践中的应,我们将在iris数据集的Sepal.Length特征上进行尝试。在此之前,我们将
18、介绍运用一个R包caret。Ø caret包是一个具备多种用途的非常有用的组件。它提供了预测建模过程中的一组常用的辅助函数。覆盖了从数据预处理和可视化到特征选择和再抽样技术。它的特性还包括:具有针对很多预测模型函数的统一接口,并提供了并行处理的功能。Ø 当对用来训练模型的数据进行输入特征的变换时,必须记住,对于在与测试要用到的后续输入,也需要对其中的特征运用同样的变换。Ø 因此利用caret包对数据的变换是分两步完成的。第一步调用preProcess()函数保存要运用到数据上的变换参数,然后在第二步,调用predict()函数对变换进行实际的计算。我们往往只调用一
19、次preProcess()函数,然后在每次需要对数据进行同样的变换时就调用predict()函数。preProcess()函数会将一个带有某些数量值的某些数据框作为它的第一个输入,我们也会给method参数指定一个包含要运用的的变换名的向量,然后predict()函数就会一并读入前面的函数输入和我们要变换的数据对于训练数据的本身,它很可能是同一个数据框。> library(caret)> data(iris)> iris_numeric=iris1:4> pp_unit=preProcess(iris_numeric,method=c('range')&
20、gt; iris_numeric_unit=predict(pp_unit,iris_numeric)> pp_zscore=preProcess(iris_numeric,method=c('center','scale')> iris_numeric_zscore=predict(pp_zscore,iris_numeric)> pp_boxcox=preProcess(iris_numeric,method=c('BoxCox')Error in requireNamespaceQuietStop("e1071&
21、quot;) : package e1071 is required> install.packages("e1071")> library(e1071)> pp_boxcox=preProcess(iris_numeric,method=c('BoxCox')> iris_numeric_boxcox=predict(pp_boxcox,iris_numeric)>p1=ggplot(iris_numeric,aes(x=Sepal.Length)+geom_density(color="black",fi
22、ll="black",alpha=0.4)+ ggtitle("Unnormalized")> p1>p2=ggplot(iris_numeric_unit,aes(x=Sepal.Length)+geom_density(color="black",fill="black",alpha=0.4)+ggtitle("Unit Interval Transformation ")> p2>p3=ggplot(iris_numeric_zscore,aes(x=Sepal.L
23、ength)+geom_density(color="black",fill="black",alpha=0.4)+ ggtitle("Z-Score Transformation")> p3>p4=ggplot(iris_numeric_boxcox,aes(x=Sepal.Length)+ geom_density(color="black",fill="black",alpha=0.4)+ggtitle("Box Cox Transformation")&g
24、t; p4Ø 类别特征的编码(使用dummy variable)Ø 缺失数据在决定如何处理缺失数据之前,尤其是当我们的方法是直接丢弃带有缺失值的观测数据时,我们必须认识到具体缺失的值可能会符合某个模式,具体而言,我们经常要区分不同的所谓缺失值机制。在理想的随机完全缺失(Missing Completely At Random,CAR)情况下,缺失值的出现是独立于它们所属的特征以及其他特征的真实值的。随机缺失(Missing At Random, MAR)情况就更不那么理想了,在这种情况下,某个缺失值是独立于其所属特征值的真实值的,但可能会和其他特征有关。在问题最多的非随机性
25、缺失(Missing Not At Random,MNAR)情况里,存在某种模式能够解释缺失值会根据该特征本身的真实值出现。例如在测量非常小的花瓣长度是遇到困难因而产生一些缺失值,那么在这种情况下丢弃不完全样本,就可能只得到花瓣长度较大的观测样本,因而使数据产生偏误。Ø 离群值(outlier)Ø 丢弃有问题的特征一个常见的示例是两个或多个特征之间高度相关的情况,在R里可以轻松的使用cor()函数轻松地对某个数据框计算其中的每一对特征数的相关系数。> cor(iris_numeric) Sepal.Length Sepal.Width Petal.Length Pet
26、al.WidthSepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000在这里可以看到Petal.Length和Petal.Width是高度相关的。caret组件提供了findCorrelation()函数,它把一个相关系数矩阵作为
27、输入,还可以选用为特征配对的相关系数的绝对值指定一个阈值的cutoff参数。它会返回一个(有可能长度为0的)向量,该向量会显示由于相关性而需要从该数据框里删除的列。cutoff的默认设置是0.9。> iris_cor=cor(iris_numeric)> findCorrelation(iris_cor)1 3> findCorrelation(iris_cor,cutoff=0.99)integer(0)> findCorrelation(iris_cor,cutoff=0.80)1 3 4消除相关性的另一种方法是对整个特征空间进行完全的变换,例如在很多降维(dime
28、nsionality reduction)方法里面采用的技术,比如主成分分析法(Principle Component Analysis, PCA)和奇异值分解(Singular Value Decomposition, SVD)。类似的,还要删除相互为线性组合(linear combinations)的特征。为了查看caret如何处理这些特征,我们要创建一个新的鸢尾花数据框,在它里面增加两个列,分别名为Cmb和Cmb.N,如下所示:> new_iris=iris_numeric> new_iris$Cmb=6.7*iris$Sepal.Length-0.9*iris$Petal.
29、Width> set.seed(68)> new_iris$Cmb.N=new_iris$Cmb+rnorm(nrow(new_iris),sd=0.1)> options(digits = 4)> head(new_iris,3) Sepal.Length Sepal.Width Petal.Length Petal.Width Cmb Cmb.N1 5.1 3.5 1.4 0.2 33.99 34.132 4.9 3.0 1.4 0.2 32.65 32.633 4.7 3.2 1.3 0.2 31.31 31.27Cmb.N是Cmb加上一个标准差非常小的高斯噪声的特征。例如findLinearCombos()函数,caret包能够检测出严格的特征线性组合,不过当这些特征有噪声时就检测不到了:> findLinearCombos(new_iris)$linearCombos$linearCombos11 5 1 4$remove1 5该函数只建议我们删除第五个特征,因为它是第1、4个特征的一个严格线
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿色食品连锁店租赁合同终止与供应链安全协议
- 离婚协议书样本-女方债务承担及财产分割协议
- 离婚协议书补充:共同债务清偿及房产处置
- 离婚协议书样本60张图片素材版权转让合同
- 基于民族习惯法的离婚协议书起草与审查合同
- 创新型企业会计出纳人员劳动合同及创新激励协议
- 离婚协议书:子女抚养权明确及共同财产分割协议
- 直播项目合作协议书5篇
- 口巴咬合与颞下颌关节功能整合性研究-洞察及研究
- 利用大数据技术提高异常检测的准确性和效率-洞察及研究
- 医院药学相关法规课件
- 有机肥采购合同书
- 团建活动申请书
- 2025年度加油站油品储存安全协议范本
- GB/T 29912-2024城市物流配送汽车选型技术要求
- 纺织品产品召回流程指南
- 化验取样工安全操作规程(2篇)
- 2018岭南版美术六年级上册全册教案
- 《基本医疗保险门诊特殊慢性病药品目录(2023 年)》
- 安全保障服务方案及承诺
- 结核病营养支持
评论
0/150
提交评论