全网最快入门———R语言机器学习实战篇3

简介: R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

多元线性回归

项目实操——多元线性回归

当预测变量不止一个时,简单现象回归就变成了多元线性回归,相当于求解多元方程,而且和方程式求解不同的是,这些变量的权重还不一样,有些大 ,有些小,有些或者是没有多大影响,下面我们来看一个案例:


以state.x77这个数据集为例,求解出一个拟合模型,然后可以根据某些指标预测出犯罪率:

首先我们将state.x77这个矩阵数据转化成数据框,因为lm()函数输入数据必须是数据框的格式

这里为了简化问题,我们只取四个指标进行回归分析:population、illiteracy、income、frost

states<-as.data.frame(state.x77[,c("Murder",'Population','Illiteracy','Income',"Frost")])


还是使用一个lm()函数,定义一个fit变量,用于存储模型结果

fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)


使用summary()函数查看模型的详细过程结果

>summary(fit)


我们可以使用coef()函数单独查看各项的系数,根据系数项和截距值就能写出拟合方程

coef(fit)

options(digits=4)

可以通过options()的digits参数设置显示的位数

下面我们来列举一个更复杂的例子,在很多研究中,变量会有交互项,也就是变量相互之间并不是独立的,例如mtcars数据集,汽车的重量与马力之间存在着交互,质量大会影响到马力。交互项就是解释变量之间存在相关性

我们来拟合一下mtcars数据集中,每加仑汽油行驶里程数(mpg)变量与马力(hp)以及车重(wt)之间的关系

fit<-lm(mpg~hp+wt+hp:wt,data=mtcars)
summary(fit)

从结果中可以看见,车重与马力的交互项是非常显著的,这就说明响应变量mpg与其中一个预测变量的关系依赖于另一个预测变量的水平,其实就是说,每加仑汽油行驶里程数域与汽车马力的关系需要依赖汽车的不同而不同。

对于多元线性回归存在的一个问题就是,如果存在多个变量,就需要考虑变量之间的相互影响和回归时的组合关系,也就是如何从众多可能的模型中选择最佳的模型呢?


比如是不是需要包括所有的变量,还是需要去掉一些对模型贡献不显著的变量,是否需要添加多项式或者是交互项来提高拟合度呢?

那么对于以上的问题,我们可以使用AIC()函数来比较模型。

AIC()函数

AIC()函数是An Information Criterion的简称,称为赤池信息准则,这个准则考虑了模型统计拟合度以及用来拟合的参数数目

计算得到的AIC值越小越好,越小说明模型用较少的参数就可以获得足够的拟合度

例如上面拟合犯罪度的案例

Ctrl+UP调出历史代码列表

对比一下两个fit的拟合度

fit1<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
fit2<-lm(Murder~Population+Illiteracy,data=states)
AIC(fit1,fit2)

结果显示,fit2的拟合度更好,但是如果变量数过多,那么组合起来的拟合模型数将是巨大的,再用AIC()两两比较就不太可行了

这个时候,对于变量的选择可以使用逐步回归法和全子集回归法。

逐步回归法中,模型会依次添加或者删除一个变量直到达到某个节点为止,这个节点就是继续添加或者删除变量,模型不再继续变化。如果每次是增加变量,那么就是向前逐步回归,如果每次是删除变量,那么就是向后逐步回归。

全子集回归法是取所有可能的模型,然后从中计算出最佳的模型,很显然全子集回归法要比逐步回归法要好,因为会检测到所有的模型,把可能的模型都纳入考虑之中,但是缺点就是如果变量数太多,会涉及到大量的计算,运算会比较慢。

这两种方法都需要通过R的扩展包来实现,MASS包中的stepAIC()函数可以进行逐步回归法的计算

>library(MASS)
>states<-as.data.frame(state.x77[,c("Murder",'Population','Illiteracy','Income',"Frost")])
>fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
>stepAIC(fit,direction="backward")

Leaps包中的regsubsets()函数可以进行全子集回归的计算

但是拟合效果最佳但没有实际意义的模型是没有用的,所以我们始终要对数据有所了解。


相关文章
|
27天前
|
机器学习/深度学习 人工智能 运维
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(二)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
59 1
|
27天前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(一)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
72 1
|
6天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
19 1
|
16天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【4月更文挑战第9天】本文介绍了使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先,简述了机器学习的基本概念和类型。接着,展示了如何安装Python和Scikit-learn,加载与处理数据,选择模型进行训练,以及评估模型性能。通过本文,读者可了解机器学习入门步骤,并借助Python和Scikit-learn开始实践。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】机器学习简单入门
【机器学习】机器学习简单入门
37 1
|
2月前
|
机器学习/深度学习 数据采集 算法
Python中的机器学习入门:从数据预处理到模型评估
Python中的机器学习入门:从数据预处理到模型评估
195 35
|
2月前
|
机器学习/深度学习 数据挖掘 程序员
深入理解Python协程:提升并发编程效率基于Python的机器学习入门:从理论到实践
本文旨在探讨Python协程(Coroutine)的内部机制及其在并发编程中的应用。区别于传统的线程和进程,协程提供了一种更轻量级、高效的并发编程模式。通过深入分析协程的工作原理,本文将展示如何利用协程优化程序性能,实现高效的异步任务处理。我们将通过实例探讨协程的创建、事件循环的管理、以及与异步IO的集成,为读者提供一套完整的协程应用方案。此外,本文还将对比协程与其他并发模型(如多线程和多进程)的优劣,帮助读者全面理解协程在现代编程中的重要性。 在本文中,我们将深入探讨机器学习的核心概念,并通过Python实现其基础应用。不同于传统的技术文章摘要,我们希望通过一个故事性的引入,让读者感受到
|
3月前
|
机器学习/深度学习 人工智能 算法
机器学习入门知识
机器学习入门知识
150 0
|
1月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
|
21天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)

热门文章

最新文章