机器学习
作者:曹一萌
一、基本简介
网站scikit-learn: machine learning in Python — scikit-learn 1.3.2 documentation
简单有效的数据挖掘和分析工具
可供所有人访问,并在各种环境中重复使用
基于Numpy,Scipy和Matplotlib构造
机器学习是一门从数据中研究算法的科学学科。
机器学习直白来讲,是根据已有的数据,进行算法选择,并基于算法和数据
构建模型,最终对未来进行预测;
二、机器学习分类
1.有监督学习
用已知某种或某些特性的样本作为训练集,以建立一个数学模型,再用已建立的模型来预测未知样本,此种方法被称为有监督学习,是最常用的一种机器学习方法。是从标签化训练数据集中推断出模型的机器学习任务。
2.无监督学习
与监督学习相比,无监督学习的训练集中没有人为的标注的结果,在非监督的学习过程中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。
• 无监督学习试图学习或者提取数据背后的数据特征,或者从数据中抽取出重要的特征信息,常见的算法有聚类、降维、文本处理(特征抽取)等。
• 无监督学习一般是作为有监督学习的前期数据处理,功能是从原始数据中抽取出必要的标签信息。
3.半监督学习
考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题,是有监督学习和无监督学习的结合.主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。
半监督学习对于减少标注代价,提高学习机器性能具有非常重大的实际意义。
• SSL的成立依赖于模型假设,主要分为三大类:平滑假设、聚类假设、流行假设;其中流行假设更具有普片性。
• SSL类型的算法主要分为四大类:半监督分类、半监督回归、半监督聚类、半监督降维。
•缺点:抗干扰能力弱,仅适合于实验室环境,其现实意义还没有体现出来;未 来的发展主要是聚焦于新模型假设的产生。
三、机器学习的开发流程
1.数据的收集
• 数据来源:
• 用户访问行为数据
• 业务数据
• 外部第三方数据
• 数据存储:
• 需要存储的数据:原始数据、预处理后数据、模型结果
• 存储设施:磁盘、mysql、HDFS、HBase、Solr、Elasticsearch、Kafka、Redis等
• 数据收集方式:
• Flume & Kafka
• 在实际工作中,我们可以使用业务数据进行机器学习开发,但是在学习过程
中,没有业务数据,此时可以使用公开的数据集进行开发,常用数据集如下:
• http://archive.ics.uci.edu/ml/datasets.html
• https://aws.amazon.com/cn/public-datasets/
• https://www.kaggle.com/competitions
• http://www.kdnuggets.com/datasets/index.html
• http://www.sogou.com/labs/resource/list_pingce.php
• https://tianchi.aliyun.com/datalab/index.htm
• http://www.pkbigdata.com/common/cmptIndex.html
2.数据的清洗和转换
• 对数据进行初步的预处理,需要将其转换为一种适合机器学习模型的表示形式,而对于许多模型类型来说,这种表示就是包含数值数据的向量或者矩阵
• 将类别数据编码成为对应的数值表示(一般使用1-of-k\哑编码方法)
• 从文本数据中提取有用的数据(一般使用词袋法或者TF-IDF)
• 处理图像或者音频数据(像素、声波、音频、振幅等<傅里叶变换>)
• 对特征进行正则化、标准化,以保证同一模型的不同输入变量的取值范围相同
• 数值数据转换为类别数据以减少变量的值,比如年龄分段
• 对数值数据进行转换,比如对数转换
• 对现有变量进行组合或转换以生成新特征(基于对数据以及对业务的理解),比如平均数 (做虚拟变量),需要不断尝试才可以确定具体使用什么虚拟变量
3.模型训练
模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择。
• 在训练数据集上运行模型(算法)并在测试数据集中测试效果,迭代进行数据模型的修改,这种方式被称为交叉验证(将数据分为训练集和测试集,使用训练集构建模型,并使用测试集评估模型提供修改建议)
• 模型的选择会尽可能多的选择算法进行执行,并比较执行结果
4.模型评价指标
4.1.ROC曲线
4.2.AUC
• AUC的值越大表达模型越好
• AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而AUC作为数值可以直观的评价分类器的好坏,值越大越好。
• AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
• 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
• AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
• AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
4.3. FPN
4.4. 分类算法评估指标
• Precision
• Recall
•F1
• 混淆矩阵
• ROC曲线
•AUC(ROC曲线的面积)
4.5. 回归算法评估指标
•MeanSquareError (MSE,RMSE)
•AbsoluteError (MAE,RAE)
•R2_score
•Explained variance score
5.模型的部署和整合
•当模型构建好后,将训练好的模型进行部署
•方式一:直接使用训练好的模型对数据做一个预测,然后将预测结果保存数据库中。
•方式二:直接将模型持久化为磁盘文件的形式,在需要的代码处从磁盘中恢复模型
对象,然后使用恢复的模型对象对数据做一个预测。
•方式三:直接将模型参数保存到数据库中,然后在需要的代码处直接从数据库把模
型参数加载到代码中,然后根据模型算法原理使用模型参数对数据做一个预测。
•模型需要周期性的进行修改、调优:
•一个月、一周