作者:小土刀
这里是我学习机器学习时候的一些笔记和总结,文章比较长,但是应该是比较全面的。
基本概念
主要是基本概念的辨析,都是最最基础和常规的
监督学习与非监督学习
监督学习需要标注数据(KNN, NB, SVM, DT, BP, RF, GBRT),这类算法必须知道预测什么,即目标变量的分类信息。对具有标记的训练样本进行学习,以尽可能对训练样本集外的数据进行分类预测。
非监督学习(KMEANS, DL)数据没有类别信息,也不会给定目标值,对未标记的样本进行训练学习,比发现这些样本中的结构知识。将数据集合分成由类似的对象组成的多个类的过程被称为 聚类。
半监督式学习
在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。
强化学习
在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning以及时间差学习(Temporal difference learning)。
离散数据与连续数据
离散数据(标称型)的目标变量结果只在有限目标集中取值,比方说真与假,一般用于 分类。连续数据(数值型)目标变量主要用于 回归 分析,通过给定数据点的最优拟合曲线。
生成方法
生成方法:由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。基本思想是首先建立样本的联合概率概率密度模型P(X,Y),然后再得到后验概率P(Y|X),再利用它进行分类,就像上面说的那样。
生成方法学习联合概率密度分布P(X,Y),所以就可以从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度。但它不关心到底划分各类的那个分类边界在哪。生成方法可以还原出联合概率分布P(Y|X),而判别方法不能。生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快的收敛于真实模型,当存在隐变量时,仍可以用生成方法学习。此时判别方法就不能用。
由生成模型可以得到判别模型,但由判别模型得不到生成模型。
判别方法
由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。典型的判别模型包括k近邻,感知级,决策树,支持向量机等。
判别方法直接学习的是决策函数Y=f(X)或者条件概率分布P(Y|X)。不能反映训练数据本身的特性。但它寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。直接面对预测,往往学习的准确率更高。由于直接学习P(Y|X)或P(X),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。
过拟合
如果一味的去提高训练数据的预测能力,所选模型的复杂度往往会很高,这种现象称为过拟合。所表现的就是模型训练时候的误差很小,但在测试的时候误差很大。
产生原因
泛化能力是指模型对未知数据的预测能力。
线性分类器与非线性分类器
如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是
常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归
常见的非线性分类器:决策树、RF、GBDT、多层感知机
SVM两种都有(看线性核还是高斯核)
线性分类器速度快、编程方便,但是可能拟合效果不会很好
非线性分类器编程复杂,但是效果拟合能力强
特征比数据量还大时,选择什么样的分类器?
线性分类器,因为维度高的时候,数据一般在维度空间里面会比较稀疏,很有可能线性可分。
对于维度很高的特征,你是选择线性还是非线性分类器?
线性分类器,因为维度高的时候,数据一般在维度空间里面会比较稀疏,很有可能线性可分。
对于维度极低的特征,你是选择线性还是非线性分类器?
非线性分类器,因为低维空间可能很多特征都跑到一起了,导致线性不可分。