【机器学习与R语言】1-机器学习简介
1.基本概念
- 机器学习:发明算法将数据转化为智能行为
- 数据挖掘 VS 机器学习:前者侧重寻找有价值的信息,后者侧重执行已知的任务。后者是前者的先期准备
- 过程:数据——>抽象化——>一般化。或者:收集数据——推理数据——归纳数据——发现规律
抽象化: - 训练:用一个特定模型来拟合数据集的过程
- 用方程来拟合观测的数据:观测现象——数据呈现——模型建立。通过不同的格式来把信息概念化
一般化: - 一般化:将抽象化的知识转换成可用于行动的形式
- 采用启发式算法(利用相近原理和其他一些经验法则)来划分概念集合,但不能保证找到对数据建模的最优概念集,有时会导致错误结论
- 算法偏差:算法的结论是系统性的不准确。偏差是任何机器学习任务的抽象化和一般化这两个过程相联系的不可避免的谬误,一般化的最后一步就是在存在偏差的情况下判断模型的成功性。由于数据中的噪声或无法解释的波动导致模型不能完美的一般化
- 过拟合问题的基础:试图用模型拟合噪声(噪声无法解释,解释就会出错)
- 过拟合:一个模型训练时表现好,测试时很差。过度拟合了训练集,即不能很好地一般化
2.选择机器学习算法
- 机器学习步骤:
收集数据——探索和准备数据(80%时间)——训练模型——评价模型性能——改进模型性能 - 没有免费午餐定理:没有一种机器学习方法对所有环境都是最好的
- 输入数据:案例example,特征feature。一般行为案例,列为特征(与基因表达数据相反)
- 算法分类:监督学习算法(用于预测模型),非监督学习(用于描述模型)
- 有监督学习:监督不是人为干预,而是让目标值监督,告诉学习任务。分类变量可用于分类(类可能有多个水平),数值型数据可建立回归模型预测
- 无监督学习:没有一个明确的学习目标(属性无轻重之分),在数据挖掘中更常用。如购物商品之间联系的购物篮分析(捆绑销售)。描述性模型把数据同类型分组称之聚类。
- 常见有监督学习算法:
分类:K近邻,朴素贝叶斯,决策树,分类器
数值预测:线性回归,回归树,模型树
分类和数值预测:神经网络,支持向量机 - 常见无监督学习算法:
模式识别:关联规则
聚类:K均值聚类 - 模型的选择是带有随机性的。当预测准确性是主要考虑因素时,需要测试多个模型,然后选择一个最好的。
3.使用R进行机器学习
- CRAN收录的机器学习R包:https://cran.r-project.org/web/views/MachineLearning.html
- RWeka包:基于Java平台的R使用机器学习算法的函数集合
install.packages("RWeka")
library(RWeka)

- R管理数据
save(x,y,z,file='mydata.RData')
load('mydata.RData')
save.image() #立刻结束当前R绘画,写入.RData文件中
- 探索和理解数据
str(data)
summary()
mean()
median()
IQR() #四分位距,Q1与Q3之差,体现数据分散程度
quantile() #返回5数
quantile(data$price, probs=c(0.01,0.99)) #第1和第99百分位数
quantile(data$price, seq(from=0, to=1, by=0.2))
#可视化
boxplot()
hist()
- 均值比中位值对极端值(异常值)更敏感
- 偏度(skew):比如,右偏是右边比左边更为分散(不要理解反了)
- 均匀分布:所有值等可能发生。并非所有随机事件都服从均匀分布
- 衡量数据分散程度:方差var或标准差sd(方差平方根),var越大表在均值附近越分散,sd平均来看每个值和均值相差多少
var()
sd()
- 68-95-99.7规则(经验法则):正态分布中68%的值落在均值左右1个标准差的范围内,而95%和99.7%的值各自落在均值左右2个和3个标准差的范围内。数值落在均值的3个标准差以外是极端罕见事件。

- 分类变量探索:
table()
prop.table()
- 变量间关系探索
plot(x,y)
# 并非所有关联都成直线
二元指示变量(哑变量):如汽车有9种颜色分为2组,一组保守色,一组非保守色,指示变量可分别设为1和0
双向交叉表/列联表:
library(gmodels)
CrossTable(x,y) #chisq = TRUE获取卡方检验结果,概率值越小,说明两个变量相关越大
CrossTable的输出示例:

机器学习与R语言系列推文汇总:
【机器学习与R语言】1-机器学习简介
【机器学习与R语言】2-K近邻(kNN)
【机器学习与R语言】3-朴素贝叶斯(NB)
【机器学习与R语言】4-决策树
【机器学习与R语言】5-规则学习
【机器学习与R语言】6-线性回归
【机器学习与R语言】7-回归树和模型树
【机器学习与R语言】8-神经网络
【机器学习与R语言】9-支持向量机
【机器学习与R语言】10-关联规则
【机器学习与R语言】11-Kmeans聚类
【机器学习与R语言】12-如何评估模型的性能?
【机器学习与R语言】13-如何提高模型的性能?
【机器学习与R语言】1-机器学习简介的更多相关文章
- 【机器学习与R语言】13- 如何提高模型的性能?
目录 1.调整模型参数来提高性能 1.1 创建简单的调整模型 2.2 定制调整参数 2.使用元学习来提高性能 2.1 集成学习(元学习)概述 2.2 bagging 2.3 boosting 2.4 ...
- 【机器学习与R语言】12- 如何评估模型的性能?
目录 1.评估分类方法的性能 1.1 混淆矩阵 1.2 其他评价指标 1)Kappa统计量 2)灵敏度与特异性 3)精确度与回溯精确度 4)F度量 1.3 性能权衡可视化(ROC曲线) 2.评估未来的 ...
- 【机器学习与R语言】11- Kmeans聚类
目录 1.理解Kmeans聚类 1)基本概念 2)kmeans运作的基本原理 2.Kmeans聚类应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解Km ...
- 【机器学习与R语言】10- 关联规则
目录 1.理解关联规则 1)基本认识 2)Apriori算法 2.关联规则应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解关联规则 1)基本认识 购物 ...
- 【机器学习与R语言】9- 支持向量机
目录 1.理解支持向量机(SVM) 1)SVM特点 2)用超平面分类 3)对非线性空间使用核函数 2. 支持向量机应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 ...
- 【机器学习与R语言】8- 神经网络
目录 1.理解神经网络 1)基本概念 2)激活函数 3)网络拓扑 4)训练算法 2.神经网络应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高性能 1.理解神经网络 1) ...
- 【机器学习与R语言】7-回归树和模型树
目录 1.理解回归树和模型树 2.回归树和模型树应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理解回归树和模型树 决策树用于数值预测: 回归树:基于到达 ...
- 【机器学习与R语言】6-线性回归
目录 1.理解回归 1)简单线性回归 2)普通最小二乘估计 3)相关系数 4)多元线性回归 2.线性回归应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理 ...
- 【机器学习与R语言】5-规则学习算法
目录 1.分类规则原理 1.1 1R单规则算法 1.2 RIPPER算法 2. 规则学习应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估性能 5)提高性能 6)选择决策树中的分类规则 ...
随机推荐
- AIApe问答机器人Scrum Meeting 4.29
Scrum Meeting 4 日期:2021年4月29日 会议主要内容概述:汇报两日工作,讨论任务优先级. 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作中遇到的困难 李明 ...
- [对对子队]会议记录5.24(Scrum Meeting10)
今天已完成的工作 梁河览 工作内容:修改第一关的新手引导 相关issue:优化初步导出版本 相关签入:fix:改进第一关的新手引导 何瑞 工作内容:为加速按钮添加锚点 相关issu ...
- sonar-project.propertie分析参数
SonarScanner 是当您的构建系统没有特定扫描仪时使用的扫描仪. 配置您的项目 在你的项目根目录中创建一个名为的配置文件 sonar-project.properties # must be ...
- 密码学基础:AES加密算法
[原创]密码学基础:AES加密算法-密码应用-看雪论坛-安全社区|安全招聘|bbs.pediy.com 目录 基础部分概述: 第一节:AES算法简介 第二节:AES算法相关数学知识 素域简介 扩展域简 ...
- Jquery校验中国身份证号码是否正确
在项目中使用表单时经常会涉及到身份证号码是否正确的校验,下面看看应该中国二代身份证号码应该怎么用Jquery校验呢? 二代身份证校验码的计算方法 二代身份证由17位数字和一位校验码组成,那么校验方法是 ...
- cf Make It Nondeterministic (简单贪心)
有N个人.每个人都有两个名字. 给出这N个人的一个排列.p[1]...p[N]. 现在让每个人挑自己丙个名字中的一个名字.问是否存在一种方案,使得挑出来的N个名字按字典序排完以后正好是p[1]...p ...
- 你们不要再吵了! Java只有值传递..
写在前边 上次聊到Java8新特性 lambda时,有小伙伴在评论区提及到了lambda对于局部变量的引用,补充着博客的时候,知识点一发散就有了这篇对于值传递还是引用传递的思考.关于这个问题为何会有如 ...
- Swift进阶-内存管理
本文的主要目的是探索 RefCount 的内存结构及强/弱引用计数管理 Swift 中也是采用 ARC 编译器自动内存管理机制. Swift 对象的内存结构是 HeapObject, 有两个属性 Me ...
- Redis源码分析(adlist)
源码版本:redis-4.0.1 源码位置: adlist.h : listNode.list数据结构定义. adlist.c:函数功能实现. 一.adlist简介 Redis中的链表叫adlist( ...
- 《手把手教你》系列技巧篇(四十二)-java+ selenium自动化测试 - 处理iframe -下篇(详解教程)
1.简介 经过宏哥长时间的查找,终于找到了一个含有iframe的网页.所以今天这一篇的主要内容就是用这个网页的iframe,宏哥给小伙伴或者童鞋们演示一下,在处理过程中遇到的问题以及宏哥是如何解决的. ...