机器学习系列02——机器学习基础
上一篇文章介绍了机器学习中常常会用到的数学知识,主要是高数、线性代数、概率相关的一些知识点,大家下去自己温习一下即可,如果需要文档,留下QQ邮箱,我看到就会给大家发,谢谢大家支持!
1、摘要
2、机器学习——引入
我相信大家都有跟别人相约,然后等人的经历。现实中不是每个人都那么守时的,于是当你碰到一些爱迟到的人,你的时间不可避免的要浪费。我就碰到过这样的一个例子。
对我的一个朋友小Y而言,他就不是那么守时,最常见的表现是他经常迟到。当有一次我跟他约好3点钟在某个麦当劳见面时,在我出门的那一刻我突然想到一个问题:我现在出发合适么?我会不会又到了地点后,花上30分钟去等他?我决定采取一个策略解决这个问题。
要想解决这个问题,有好几种方法。第一种方法是采用知识:我搜寻能够解决这个问题的知识。但很遗憾,没有人会把如何等人这个问题作为知识传授,因此我不可能找到已有的知识能够解决这个问题。第二种方法是问他人:我去询问他人获得解决这个问题的能力。但是同样的,这个问题没有人能够解答,因为可能没人碰上跟我一样的情况。第三种方法是准则法:我问自己的内心,我有否设立过什么准则去面对这个问题?例如,无论别人如何,我都会守时到达。但我不是个死板的人,我没有设立过这样的规则。
事实上,我相信有种方法比以上三种都合适。我把过往跟小Y相约的经历在脑海中重现一下,看看跟他相约的次数中,迟到占了多大的比例。而我利用这来预测他这次迟到的可能性。如果这个值超出了我心里的某个界限,那我选择等一会再出发。假设我跟小Y约过5次,他迟到的次数是1次,那么他按时到的比例为80%,我心中的阈值为70%,我认为这次小Y应该不会迟到,因此我按时出门。如果小Y在5次迟到的次数中占了4次,也就是他按时到达的比例为20%,由于这个值低于我的阈值,因此我选择推迟出门的时间。这个方法从它的利用层面来看,又称为经验法。在经验法的思考过程中,我事实上利用了以往所有相约的数据。因此也可以称之为依据数据做的判断。
刚才的思考过程我只考虑“频次”这种属性。在真实的机器学习中,这可能都不算是一个应用。一般的机器学习模型至少考虑两个量:一个是因变量,也就是我们希望预测的结果,在这个例子里就是小Y迟到与否的判断。另一个是自变量,也就是用来预测小Y是否迟到的量。假设我把时间作为自变量,譬如我发现小Y所有迟到的日子基本都是星期五,而在非星期五情况下他基本不迟到。于是我可以建立一个模型,来模拟小Y迟到与否跟日子是否是星期五的概率。见下图:这样的图就是一个最简单的机器学习模型,称之为决策树。
当我们考虑的自变量只有一个时,情况较为简单。如果把我们的自变量再增加一个。例如小Y迟到的部分情况时是在他开车过来的时候(你可以理解为他开车水平较臭,或者路较堵)。于是我可以关联考虑这些信息。建立一个更复杂的模型,这个模型包含两个自变量与一个因变量。
再更复杂一点,小Y的迟到跟天气也有一定的原因,例如下雨的时候,这时候我需要考虑三个自变量。
如果我希望能够预测小Y迟到的具体时间,我可以把他每次迟到的时间跟雨量的大小以及前面考虑的自变量统一建立一个模型。于是我的模型可以预测值,例如他大概会迟到几分钟。这样可以帮助我更好的规划我出门的时间。在这样的情况下,决策树就无法很好地支撑了,因为决策树只能预测离散值。我们可以用节2所介绍的线型回归方法建立这个模型。
如果我把这些建立模型的过程交给电脑。比如把所有的自变量和因变量输入,然后让计算机帮我生成一个模型,同时让计算机根据我当前的情况,给出我是否需要迟出门,需要迟几分钟的建议。那么计算机执行这些辅助决策的过程就是机器学习的过程。
机器学习方法是计算机利用已有的数据( 经验),得出了某种 模型(迟到的规律),并利用此模型预测未来(是否迟到)的一种方法。3、机器学习常见算法划分
分类 | KNN,决策树,贝叶斯,LR,SVM,神经网络,adoboost等 |
回归 | 线性回归等 |
聚类 | K-means,层次聚类,谱聚类等 |
降维 | PCA,SVD等 |
推荐 | 关联规则,协同过滤算法等 |
3.1、监督学习
3.2、无监督学习
3.3、半监督学习
4、机器学习中的数据
4.1、向量
4.1.1、定义
4.2、数据表示
4.3、数据类型
4.3.1、数值型
4.3.2、标称型
标称属性具有有穷多个不同值(但可能很多),值之间无序。
如下表,统计了根据某周末的天青状况决定是否出行的数据。4.3.3、数据归一化
通常采用的是数值归一化,比如讲数据归一化到0~1,或者-1~1的范围。下面是到0~1的方法:
Newvalue=(oldvalue-min)/(max-min)
5、机器学习的若干概念
5.1、交叉验证
- n 交叉验证(Cross-validation)主要用于建模应用中,在给定的建模样本中,拿出大部分样本进行建立模型,留一小部分样本用于对刚才建立的模型的评估。目的是为了得到稳定可靠的模型。
- n 交叉验证的基本思想是重复使用数据,把给定的数据进行切分,将切分的数据集组合为训练集与测试集,并在此基础上反复地进行训练、测试以及模型选择。
- n 交叉验证一般要尽量满足:
(1)训练集的比例要足够多,一般大于总的数据集的一半
(2)训练集和测试集要均匀抽样
5.1.1、简单交叉验证
5.1.2、K折交叉验证
5.1.3、留一交叉验证
5.2、泛化能力
泛化能力指由学习方法得到的模型对未知数据的预测能力。
概括地说,所谓泛化能力(generalization ability)是指机器学习算法对新样本的适应能力。学习的目的是学到隐含在数据对背后的规律,对具有同一规律的学习集(训练数据集)以外的数据,经过训练的算法也能给出合适的输出,该能力称为泛化能力。
通常期望经训练样本训练的模型具有较强的泛化能力,也就是对新输入数据给出合理预测结果的能力。算法的性能主要用它的泛化能力来衡量。
5.3、过拟合
模型是我们假设得到的,这样的假设模型会存在很多,我们希望选择或学习一个合适的模型,如果在假设空间中存在“真”模型,那么所选择的模型应该逼近真模型。
如果一味的追求提高对训练数据的预测能力,所选模型的复杂度则往往会比真实模型更高。这种现象称为过拟合。过拟合是指学习时选择的模型所包括的参数过多,以至于出现这一模型对已知数据预测的很好,但对位置数据的预测很差的现象。
即学习得到的模型比真实模型参数多,这样的模型的泛化能力很差,模型选择旨在避免过拟合并提高模型的预测能力。如图红色线给出了多项式次数M=0,M=1,M=3,M=9时的多项式函数拟合的情况。其中绿色曲线为真模型,红色为预测模型,蓝色点是训练数据。
图中,当M=0,1是欠拟合,M=9是过拟合。