您的位置:首页 > 编程语言 > Python开发

<机器学习笔记-01><scikit-learn 01>机器学习基础

2016-09-05 10:57 411 查看
目的

笔者计划对“机器学习machine learning”进行学习,为了对知识和技能进行及时地梳理和总结,同时也为了能够与同道者交流学习,决心以笔记分享的方式来记录这一过程,也算是对自己的一种鞭策吧。

架构&思路 & 参考资料:

a. 从工程师立场来看,问题的解决往往可以分为两个过程:造积木和搭积木;具体到机器学习的领域,创造新的算法,并对其进行封装,这是造积木的部分,而将不同的算法应用到各种工程实际中,与具体的项目结合起来,就是搭积木的过程。工程师呢,需要知道怎么造积木的原理和方法,但是更重要的是知道,怎么去用这些积木;所以笔记中,会力求掌握算法的原理,并结合实际项目应用之。

b. 非常陡峭的学习曲线往往会让人非常沮丧,而让学习曲线变得平缓起来的方法,就是螺旋上升。一开始呢,学用结合,在实际项目中锻炼成长,边做边学,增强对于复杂理论和概念的理解,培养实际应用机器学习解决实际问题的能力;当项目完成后,再回头看那些复杂的公式,或许会有一种云淡风轻、似曾相识的感觉吧。

c. scikit-learn是Python的机器学习库,支持分类、回归、降维、聚类等算法,包含特征提取、数据处理、模型评估等模块。文档多、上手快,作为上手学习机器学习的工具还是非常不错的。

d. 参考书: 推荐《Mastering Machine Learning With scikit-learn》,CSDN的下载里有中英文(非影印)版,以及源代码和数据

Python和scikit-learn开发环境搭建

强烈推荐Anaconda python集成开发环境,支持windows, Mac OS, Linux等平台;安装后,平台已集成scikit-learn、Numpy、Pandas等库,可以省去配置开发环境的麻烦;

机器学习基础:

a. 机器学习基础是归纳generalize,从已知数据中找未知规律;

b. Tom Mitchell定义“一个程序在完成任务T(task)后获得经验E(experience),其表现为效果P(performance);如果它完成任务T(task)的效果为P(performance),那么就获得经验E(experience)”;

监督学习、无监督学习

a. 监督学习:输入和输出的经验数据已经成对的标记好; 从有正确答案的例子中学习,需要对类似的问题作出正确的反馈;输入变量称为特征,测量的现象作为解释变量;输出结果称为响应值;

b. 无监督学习:输入和输出的经验数据没有标记;需要在这些未标记的数据中发现规律;

c. 增强学习(Reinforcement learning):半监督学习的一个案例;问题可以通过决策获得反馈,但是反馈与决策中没有直接关系;

机器学习任务:

a. 监督学习:分类(classification)和回归(regression);分类需要从若干变量约束条件中预测出新观测值的类型、种类、标签;回归则是预测连续变量的数值;

b. 无监督学习:聚类降维;聚类就是通过一些相似性度量方法把一些观测值分成同一类;降维是发现对响应值影响最大的解释变量的过程;

训练数据和测试数据

a. 训练集(training set):构成监督学习经验的案例集合;

b. 测试集(test set):评估程序效果的案例集合;

c. 验证集(validation set):调整超参数变量的案例集合;超参数变量控制模型如何学习;

d. 监督学习的观测值分成三部分:训练集(50%),测试集(50%),验证集(25%);

e. 过度拟合(over-fitting)vs欠拟合:过度拟合是指能够在训练集上获得较好地拟合的假设,在训练集之外的案例集合却不能很好的拟合数据;原因是存在噪音或者训练数据太少;正则化(regularization)可以减轻过度拟合程度;

f. “放入的是垃圾,出来的也是垃圾”:监督学习需要用有代表性、标签正确的数据集进行训练;多而不好的数据,训练效果不一定比少而好的数据好。

g. 交叉验证:用相同的数据对算法进行多次训练和检验;适用于训练集不够的时候;数据训练集分成N块,算法用N-1块进行训练,再用最后一块进行测试;

效果评估-偏差和方差

a. 监督学习中,两个基本指标评估预测误差偏差(bias)和方差(variance);高方差是过度拟合了训练集数据,高偏差则是拟合不够的表现;

b. 偏差-方差均衡:现在中二者具有背反特征,降低一个指标,另一个指标会增加;

c. 无监督学习:没有预测误差,评估数据结构的一些属性;评估方法针对于具体的任务;

d. 无监督评估举例-恶性肿瘤预测(真阳性TP(true positive)+真阴性TN(true negative)+假阳性FP(false positive )+假阴性FN(false negative)):

准确度评估accuracy=(TP+TN)/(TP+TN+FP+FN);

恶性肿瘤精确度precision=TP/(TP+FP)

召回率recall=TP/(TP+FN)

召回率比其他指标更满足实际要求;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息