关于本站
人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!
经管之家新媒体交易平台
提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】
论文
- 毕业论文 | 写毕业论文
- 毕业论文 | 为毕业论文找思路
- 毕业论文 | 可以有时间好好写 ...
- 毕业论文 | 毕业论文如何选较 ...
- 毕业论文 | 毕业论文选题通过 ...
- 毕业论文 | 还有三人的毕业论 ...
- 毕业论文 | 毕业论文答辩过程 ...
- 毕业论文 | 本科毕业论文,wi ...
考研考博
- 考博 | 南大考博经济类资 ...
- 考博 | 考博英语10000词汇 ...
- 考博 | 如果复旦、南大这 ...
- 考博 | 有谁知道春招秋季 ...
- 考博 | 工作与考博?到底 ...
- 考博 | 考博应该如何选择 ...
- 考博 | 考博失败了
- 考博 | 考博考研英语作文 ...
留学
- 日本留学 | 在日本留学心得
- 日本留学 | 日本留学生活必需 ...
- 日本留学 | 【留学日本】2015 ...
- 日本留学 | 日本海外留学8年来 ...
- 日本留学 | 日本留学费用_日本 ...
- 日本留学 | 求在日本留学的师 ...
- 日本留学 | 日本留学的有没有 ...
- 日本留学 | 日本留学
TOP热门关键词
免费学术公开课,扫码加入![]() |
抽查(Spot checking)机器学习算法是指如何找出最适合于给定数据集的算法模型。
本文中我将介绍八个常用于抽查的机器学习算法,文中还包括各个算法的 R 语言代码,你可以将其保存并运用到下一个机器学习项目中。
你无法在建模前就知道哪个算法最适用于你的数据集。
你必须通过反复试验的方法来寻找出可以解决你的问题的最佳算法,我称这个过程为 spot checking。
我们所遇到的问题不是我应该采用哪个算法来处理我的数据集?,而是我应该抽查哪些算法来处理我的数据集?
抽查哪些算法?
首先,你可以思考哪些算法可能适用于你的数据集。
其次,我建议尽可能地尝试混合算法并观察哪个方法最适用于你的数据集。
- 尝试混合算法(如事件模型和树模型)
- 尝试混合不同的学习算法(如处理相同类型数据的不同算法)
- 尝试混合不同类型的模型(如线性和非线性函数或者参数和非参数模型)
让我们具体看下如何实现这几个想法。下一章中我们将看到如何在 R 语言中实现相应的机器学习算法。
如何在 R 语言中抽查算法?
R 语言中存在数百种可用的机器学习算法。
如果你的项目要求较高的预测精度且你有充足的时间,我建议你可以在实践过程中尽可能多地探索不同的算法。
通常情况下,我们没有太多的时间用于测试,因此我们需要了解一些常用且重要的算法。
本章中你将会接触到一些 R 语言中经常用于抽查处理的线性和非线性算法,但是其中并不包括类似于boosting和bagging的集成算法。
每个算法都会从两个视角进行呈现:
1.常规的训练和预测方法
2.caret包的用法
你需要知道给定算法对应的软件包和函数,同时你还需了解如何利用caret包实现这些常用的算法,从而你可以利用caret包的预处理、算法评估和参数调优的能力高效地评估算法的精度。
本文中将用到两个标准的数据集:
1.回归模型:BHD(Boston Housing Dataset)
2.分类模型: PIDD(Pima Indians Diabetes Dataset)
本文中的算法将被分成两组进行介绍:
1.线性算法:简单、较大的偏倚、运算速度快
2.非线性算法:复杂、较大的方差、高精确度
下文中的所有代码都是完整的,因此你可以将其保存下来并运用到下个机器学习项目中。
线性算法
这类方法对模型的函数形式有严格的假设条件,虽然这些方法的运算速度快,但是其结果偏倚较大。
这类模型的最终结果通常易于解读,因此如果线性模型的结果足够精确,那么你没有必要采用较为复杂的非线性模型。
1.线性回归模型
stat包中的lm()函数可以利用最小二乘估计拟合线性回归模型。
- # load the library
- library(mlbench)
- # load data
- data(BostonHousing)
- # fit model
- fit <- lm(mdev~>, BostonHousing)
- # summarize the fit
- print(fit)
- # make predictions
- predictions <- predict(fit, BostonHousing)
- # summarize accuracy
- mse <- mean((BostonHousing$medv - predictions)^2)
- print(mse)
- # caret
- # load libraries
- library(caret)
- library(mlbench)
- # load dataset
- data(BostonHousing)
- # train
- set.seed(7)
- control <- trainControl(method="cv", number=5)
- fit.lm <- train(medv~., data=BostonHousing, method="lm", metric="RMSE", preProc=c("center", "scale"), trControl=control)
- # summarize fit
- print(fit.lm)
2.罗吉斯回归模型
stat包中glm()函数可以用于拟合广义线性模型。它可以用于拟合处理二元分类问题的罗吉斯回归模型。
- # load the library
- library(mlbench)
- # Load the dataset
- data(PimaIndiansDiabetes)
- # fit model
- fit <- glm(diabetes~., data=PimaIndiansDiabetes, family=binomial(link='logit'))
- # summarize the fit
- print(fit)
- # make predictions
- probabilities <- predict(fit, PimaIndiansDiabetes[,1:8], type='response')
- predictions <- ifelse(probabilities > 0.5,'pos','neg')
- # summarize accuracy
- table(predictions, PimaIndiansDiabetes$diabetes)
- # caret
- # load libraries
- library(caret)
- library(mlbench)
- # Load the dataset
- data(PimaIndiansDiabetes)
- # train
- set.seed(7)
- control <- trainControl(method="cv", number=5)
- fit.glm <- train(diabetes~., data=PimaIndiansDiabetes, method="glm", metric="Accuracy", preProc=c("center", "scale"), trControl=control)
- # summarize fit
- print(fit.glm)
3.线性判别分析
MASS包中的lda()函数可以用于拟合线性判别分析模型。
- # load the libraries
- library(MASS)
- library(mlbench)
- # Load the dataset
- data(PimaIndiansDiabetes)
- # fit model
- fit <- lda(diabetes~., data=PimaIndiansDiabetes)
- # summarize the fit
- print(fit)
- # make predictions
- predictions <- predict(fit, PimaIndiansDiabetes[,1:8])$class
- # summarize accuracy
- table(predictions, PimaIndiansDiabetes$diabetes)
- # caret
- # load libraries
- library(caret)
- library(mlbench)
- # Load the dataset
- data(PimaIndiansDiabetes)
- # train
- set.seed(7)
- control <- trainControl(method="cv", number=5)
- fit.lda <- train(diabetes~., data=PimaIndiansDiabetes, method="lda", metric="Accuracy", preProc=c("center", "scale"), trControl=control)
- # summarize fit
- print(fit.lda)
4.正则化回归
glmnet包中的glmnet()函数可以用于拟合正则化分类或回归模型。
分类模型:
- # load the library
- library(glmnet)
- library(mlbench)
- # load data
- data(PimaIndiansDiabetes)
- x <- as.matrix(PimaIndiansDiabetes[,1:8])
- y <- as.matrix(PimaIndiansDiabetes[,9])
- # fit model
- fit <- glmnet(x, y, family="binomial", alpha=0.5, lambda=0.001)
- # summarize the fit
- print(fit)
- # make predictions
- predictions <- predict(fit, x, type="class")
- # summarize accuracy
- table(predictions, PimaIndiansDiabetes$diabetes)
- # caret
- # load libraries
- library(caret)
- library(mlbench)
- library(glmnet)
- # Load the dataset
- data(PimaIndiansDiabetes)
- # train
- set.seed(7)
- control <- trainControl(method="cv", number=5)
- fit.glmnet <- train(diabetes~., data=PimaIndiansDiabetes, method="glmnet", metric="Accuracy", preProc=c("center", "scale"), trControl=control)
- # summarize fit
- print(fit.glmnet)
回归模型:
- # load the libraries
- library(glmnet)
- library(mlbench)
- # load data
- data(BostonHousing)
- BostonHousing$chas <- as.numeric(as.character(BostonHousing$chas))
- x <- as.matrix(BostonHousing[,1:13])
- y <- as.matrix(BostonHousing[,14])
- # fit model
- fit <- glmnet(x, y, family="gaussian", alpha=0.5, lambda=0.001)
- # summarize the fit
- print(fit)
- # make predictions
- predictions <- predict(fit, x, type="link")
- # summarize accuracy
- mse <- mean((y - predictions)^2)
- print(mse)
- # caret
- # load libraries
- library(caret)
- library(mlbench)
- library(glmnet)
- # Load the dataset
- data(BostonHousing)
- # train
- set.seed(7)
- control <- trainControl(method="cv", number=5)
- fit.glmnet <- train(medv~., data=BostonHousing, method="glmnet", metric="RMSE", preProc=c("center", "scale"), trControl=control)
- # summarize fit
- print(fit.glmnet)
后文将为您介绍其余四种算法 请点击【R】如何确定最适合数据集的机器学习算法(下)
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
![](static/2016/reg/jgewm.png)
您可能感兴趣的文章
本站推荐的文章
- 哲学名言 | 【独家发布】经典哲学名言
- 哲学书籍 | 求推荐一本讲人生目标的哲学书籍 ...
- 哲学书籍 | 20部必读的哲学书籍
- 哲学书籍 | 经济人,开拓你逻辑思维的哲学书 ...
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 经典的哲学书籍
人气文章
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。