一、机器学习与数据建模
学习: 通过接收到的数据,归纳提取相同与不同。
机器学习: 让计算机以数据为基础,进行归纳与总结
模型: 数据解释现象的系统。
-
不管是学习还是机器学习,都是一个过程,经过这个过程我们会得到一个针对数据的反应机制和客体,即一个根据已有数据特点和关系对新接收的数据进行解释与输出的系统,这个系统就是我们提到的模型。
-
模型从实质上来讲,是一个对于数据的函数,这个函数的映射方式,是由大量数据的共性和相应性决定的,所以模型是被数据直接决定的。
-
可以简单地认为机器学习是个过程,而模型是这个过程的产出,可以认为是一个实体
监督学习、非监督学习、半监督学习
-
机器学习根据是否有标注可以分为监督学习、非监督学习、半监督学习。
-
标注,相当于告诉模型,在什么样的输出下应该得到什么样的输出结果,机器学习的任务就是提炼出输入与标注间的关系并进行预测。
-
根据标注是离散值还是连续值,监督学习又分为分类、回归。如果标注是离散值-分类,连续值-回归。
-
如果一个机器学习的过程没有标注,就是非监督学习。非监督学习是完全让数据自己说话,将数据自身的特征,在不同的模型中进行不同的表现。非监督学习常见有聚类、关联。
-
半监督学习中有标注的数据可以作用于无标注的数据,规范与引导聚类或关联的方向,同时无标注数据也可以作用于有标注的数据,时刻获得模型对于整体数据的影响情况和反馈。
二、训练集、验证集、测试集
1.比例:6:2:2
2.作用:
训练集—— 训练与拟合模型(一个模型的参数由训练集决定,训练集的数据量越多,模型相对于整个数据集就越准确,但训练集数量的增多应该是以数据集整体数量的增多来实现的)
验证集—— 当通过训练集训练出多个模型后,使用验证集数据纠偏或比较预测(为了能找到效果最佳的模型,使用各个参数对数据集进行预测,并记录模型的准确率等评价指标,选出效果最佳的模型所对应的参数,作为模型的最终参数。调参的过程是少不了验证集数据的支持的)
测试集—— 模型泛化能力的考量
通过训练集和验证集得出最优模型后,使用测试集进行模型的预测,用来衡量这个模型的性能和分类能力,即可以把测试集当作从不存在的数据集,当已经确定模型的参数后,使用测试集进行模型的泛化能力评价
泛化——模型对未知数据/实际场景的数据时的预测能力
如果一个模型在训练集验证集表现良好,而测试集表现 较差,那么它的泛化能力就比较差,也叫过拟合现象。
- 一份数据集切分为训练集验证集测试集的方法,叫做交叉验证
- 有时候会忽略验证集,通过不断重复的尝试来达到验证目的,这样就只分为训练集和测试集,比例通常4:1
- 为了全面衡量模型的质量,有时也会采取k折叠交叉验证: K-fold交叉验证:将数据集分成k份,每份轮流做一遍测试集,其它作训练集
三、分类-KNN(K-Nearest Neighbors)
(1)铺垫知识:
①距离
之前学会怎么把属性都转换为数值类型,如果属性都成了数值,那么都可以看作是一个维度,
每个对象都是以一个空间中的坐标,则数据表中的对象与对象之间就会有距离.
欧氏距离: 两个点的直线距离
曼哈顿距离: 各个维度的维度长度差的绝对值进行累加
闵可夫斯基距离: 参数p不同距离的衡量也不一样
P=1即曼哈顿距离,P=2即欧氏距离
②KD-Tree
一个空间中有很多点,如何找到随即指定某点的附近K个点?
①首先在一个维度上把所有点分为两部分,尽可能数量一致 ②取其中一部分再进行维度上的切分,又分为两部分
③以此类推,直到不能切分为止,其他部分也是
这样就会分为几个大小不一的格子,每个格子都通过线建立一个树形索引,把线当作中间结点,而把点当作叶子结点,就得到树形结构
通过树形索引可以很快找到指定的点和哪个叶子结点在同一区间内,于是可以计算出距离。但此叶子结点不一定时最近的,所以要以这段距离为半径做一个圆,看相交线,找到中间结点,可快速锁定哪个叶子结点更可能里它更近,然后计算距离。两个距离相比较,得最近结点。
(2)算法思想:一个有标注的数据集,如果找到一个点,它k个最近的邻居的一种标注
大于另一种标注,则认为此点更倾向于与多数点一致。
如下图,k=5,3>2,则黑点认为与红点一致
待更新