机器学习横跨计算机科学、工程技术和统计学等多个学科,需要多学科的专业知识。
十大机器学习算法:
C4.5决策树 K-均值(K-mean) 支持向量机(SVM) Apriori 最大期望算法(EM) PageRank算法 AdaBoost算法 K-近邻算法(kNN) 朴素贝叶斯分类(NB) 分类回归树(CART) |
监督学习:需要用户知道目标值,简单地说就是知道在数据中寻找什么。
无监督学习:无需知道用户搜寻的目标,只需要从算法中得到这些数据的共同特征。
监督学习:
1)、分类:按特性进行分类;
2)、回归:预测数值型数据;
无监督学习:
1)、聚类:将数据集合分成由类似的对象组成的多个类的过程称为聚类;
2)、密度估计:寻找描述数据统计值的过程
分类、回归、聚类、降维、推荐
开发机器学习算法一般流程,首先得有训练数据,将这些数据通过机器学习算法进行处理,这个过程是训练;处理的结果被我们用来对新的数据进行预测,这个结果叫模型;对新数据进行预测的过程在机器学习中叫预测。
1)、收集数据
(如:爬虫)
2)、准备输入数据
(一些算法要求目标变量和特征值是字符串类型,而另一些算法可能要求是整数类型)
3)、分析输入数据
(这一步的主要作用是确保数据集中没有垃圾数据。通过一维、二维或三维图形展示也是不错的方法,然而大多数时候我们得到的特征值都不会低于三个,无法一次图形化展示所有特征)
4)、训练数据
(机器学习算法从这一步才真正开始学习,4与5步是机器学习算法的核心。如果使用无监督学习算法,由于不存在目标变量值,不需要进行训练数据,与算法相关的内容都集中在第5步)
5)、测试数据
(为了评估算法,必须测试算法的效果。对于监督学习,必须已知评估算法的目标变量值;对于无监督学习,也必须用其他的评测手段来检验算法的成功率)
6)、使用算法
(将算法转换为应用程序,执行实际的任务,以检验上述步骤在实际环境中是否正常工作)
特征值分为数值型和标称型
数值型是特征值得取值范围是无穷的;
标称值是特征值的取值范围是有穷个不通知,值之间无序
模型、策略、算法
模型:通常分为决策函数或条件概率分布
1.5.1、交叉验证:将给定的数据集切分成训练集合测试集
训练集比例要足够多,一般大于总的数据集的一半
训练集和测试集要均匀抽样
1)、简单交叉验证:
简单交叉验证的方法是这样的,首先随机的将给定的数据分为两部分,一部分用于训练集,另一部分作为测试集(例如,70%的数据集作为训练集,剩下的30%数据集作为测试集),然后用训练集在各个不同条件下(不同的参数,不同的参数个数)训练模型,从而得到不同的模型,然后用测试集估计各个模型的测试误差,选出测试误差最小的模型。
2)、K折交叉验证:
K折交叉验证就是把样本数据随机地分为K个互不相交的大小相同的子集,每个子集均作一次测试集,剩余的作为训练集,重复K次,最后把K次的平均测试误差率作为最终的结果。通常情况下为了提高精度,还需要做多次K折交叉验证。10折交叉验证是K折交叉验证的特殊情况。
3)、留一交叉验证:
K折交叉验证的特殊情况是K=N,N为数据集的样本总数。称为留一交叉验证。意思是每个样本单独作一次测试集,剩余的作为训练集。留一交叉验证往往在数据缺乏的情况下使用。
1.5.2、泛化能力
泛化能力指由学习方法得到的模型对未知数据的预测能力。
概括地说,所谓泛化能力(generalization ability)是指机器学习算法对新样本的适应能力。学习的目的是学到隐含在数据背后的规律,对具有同一规律的学习集(训练数据集)以外的数据,经过训练的算法也能给出合适的输出,该能力称为泛化能力。
通常希望经训练样本训练的模型具有较强的泛化能力,也就是对新输入数据给出合理预测结果的能力。算法的性能主要用它的泛化能力来衡量
1.5.3、过拟合
选择Python语言作为实现机器学习算法的编程语言:
1)、Python语法清晰、易于理解;
2)、易于操作纯文本文件、丰富的函数库(尤其是矩阵操作);
3)、使用广泛,存有大量开发文档,活跃的开发者社区;
SciPy和NumPy等许多科学函数库都实现了向量和矩阵操作。
Python的科学工具可以与绘图工具Matplotlib协同工作。Matplotlib可以绘制2D、3D图形,也可以处理科学研究中经常使用的图形。