一、机器学习的概念
1、概念:对于某给定的任务T,在合理的性能度量方案P的前提下,某计算机程序可以自主学习任务T的经验E;
随着提供合适、优质、大量的经验E,该程序对于任务T的性能逐步提高
2、本质:① 旧数据预测未来的数据 ② 机器模拟人的决策的程序
3、方法:根据真实的映射关系f数据,建立模型映射关系g,寻找g≈f。
(1)概念图解:
(2)机器学习开发流程
• 数据收集
• 数据预处理
• 特征提取
• 模型构建
• 模型测试评估
• 投入使用(模型部署与整合)
• 迭代优化
二、特征向量、拟合的概念
1、拟合:构建的算法模型符合给定数据的特征
2、鲁棒性:也就是健壮性、稳健性、强健性,是系统的健壮性;当存在异常数据的时候,算法也会拟合数据(即抗异常数据的能力)
3、过拟合:算法太符合训练样本数据的特征,对于实际生产中的数据特征无法拟合(即拟合了样本过多无用的特征)
4、欠拟合:算法不太符合训练样本的数据特征
特征向量维度的概念:
三、机器学习之常见应用框架
1、scikit-learn:基于python的单机机器学习框架
官网: http://scikit-learn.org/stable/
安装:① pip install scikit-learn==0.18.1(只要求是这个版本以上的即可)
② 利用 anaconda 安装
2、Mahout(Hadoop生态圈基于MapReduce):基于JAVA的分布式机器学习框架
官网: http://mahout.apache.org/
3、Spark MLlib
官网:http://spark.apache.org/
四、scikit-learn框架算法简单导图
五、机器学习、模型分类
机器学习简单分类:
1、有监督学习:是从标签化训练数据集中推断出模型的机器学习任务;用已知某种或某些特性的样本作为训练集,以建立一个
数学模型,再用已建立的模型来预测未知样本,此种方法被称为有监督学习,是最常用的一种机器学习方法
特点:训练数据中存在标签y(离散标签y是分类算法,连续标签y是回归算法)
2、无监督学习:与监督学习相比,无监督学习的训练集中没有人为的标注的结果,在非监督的学习过程中,数据 并不被特别标识,
学习模型是为了推断出数据的一些内在结构
特点:没有标签y,根据数据的特征进行聚类。
3、半监督学习:考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题,是有监督学习和无监督学习的结合
===========================================================================================
训练模型简单分类:
• 分类
• 通过分类模型,将样本数据集中的样本映射到某个给定的类别中(在模型构建之前,类别信息已经确定了。)
• 理解:训练数据包含标签y,但是y是有限的、离散的,y通常是 int 类型。(y连续称作回归模型)
• 聚类
• 通过聚类模型,将样本数据集中的样本分为几个类别,属于同一类别的样本相似性比较大
• 理解:训练数据不包含标签y,根据训练数据相同的特征属性进行聚类。
• 回归
• 反映了样本数据集中样本的属性值的特性,通过函数表达样本映射的关系来发现属性值之间的依赖关系;直 白来讲
就是目标属性Y的数据类型为连续型(浮点数据类型)。
• 理解:训练数据包含标签y,但是y是无限的、连续的,y通常是 float 类型。(y离散称作分类模型)
• 关联规则
• 获取隐藏在数据项之间的关联或相互关系,即可以根据一个数据项的出现推导出其他数据项的出现频率。
• 理解:推荐算法模型;寻找隐藏的映射关系对业务决策(预测)
(1)有监督学习
1、判别式模型(Discriminative Model):直接对条件概率p(y|x)进行建模,常见判别模型 有:Logistic回归、决策树、
支持向量机SVM、k近邻、神经网络等; ------- 判别式模型里面不可能出现联合概率
2、生成式模型(Generative Model):对联合分布概率p(x,y)进行建模,常见生成式模型 有:隐马尔可夫模型HMM、朴素
贝叶斯模型、高斯混合模型GMM、LDA等; ------- 生成模型可以根据贝叶斯公式生成判别式模型,即生成式模型
可以包括条件概率。 -------- 产生式模型通用于自然语言处理
3、特点:生成式模型更普适;判别式模型更直接,目标性更强。
----------------------------------------------------------------------
生成式模型关注数据是如何产生的,寻找的是数据分布模型,其建模的基础为 P(X|Y);
判别式模型关注的数 据的差异性,寻找的是分类面,其建模的基础为 P(Y|X);
----------------------------------------------------------------------
4、由生成式模型可以产生判别式模型,但是由判别式模式没法形成生成式模型
https://blog.csdn.net/asdfsadfasdfsa/article/details/80960315 ----------- 生成式模型和判别式模型
(2)无监督学习
1、无监督学习试图学习或者提取数据背后的数据特征,或者从数据中抽取出重 要的特征信息,常见的算法有聚类、降维、文本
处理(特征抽取)等。
2、无监督学习一般是作为有监督学习的前期数据处理,功能是从原始数据中抽 取出必要的标签信息。
(3)半监督学习(SSL)
1、主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。半 监督学习对于减少标注代价,提高学习
机器性能具有非常重大的实际意义。
2、SSL的成立依赖于模型假设,主要分为三大类:平滑假设、聚类假设、流行假设; 其中流行假设更具有普片性。
3、SSL类型的算法主要分为四大类:半监督分类、半监督回归、半监督聚类、半监督 降维。
4、缺点:抗干扰能力弱,仅适合于实验室环境,其现实意义还没有体现出来;未来的 发展主要是聚焦于新模型假设的产生。
六、机器学习常用算法
七、机器学习流程详解
1、数据收集
• 数据来源:
• 用户访问行为数据
• 业务数据
• 外部第三方数据
• 数据存储:
• 需要存储的数据:原始数据、预处理后数据、模型结果
• 存储设施:磁盘、mysql、HDFS、HBase、Solr、Elasticsearch、Kafka、Redis等
• 数据收集方式: • Flume & Kafka
2、数据清洗
• 对数据进行初步的预处理,需要将其转换为一种适合机器学习模型的表示形 式,对许多模型类型来说,这种表示就是包含数
值数据的向量或者矩阵
• 将类别数据编码成为对应的数值表示(一般使用1-of-k\哑编码方法) -------- 一般对象:str类型 >>> 数字类型,
特点:它针对有限个 str类别对象 数字化
• 从文本数据中提取有用的数据(一般使用词袋法或者TF-IDF) -------- 一般对象:文本str类型
特点:它是针对文本str对象 数字化
• 处理图像或者音频数据(像素、声波、音频、振幅等<傅里叶变换>)
• 对特征进行正则化、标准化,以保证同一模型的不同输入变量的取值范围相同
• 数值数据转换为类别数据以减少变量的值,比如年龄分段
• 对数值数据进行转换,比如对数转换
• 对现有变量进行组合或转换以生成新特征(基于对数据以及对业务的理解),比如平均 数 (做虚拟变量),需要不断尝试
才可以确定具体使用什么虚拟变量。
(1)哑编码(1-of-k)
1、特征属性的概念:特征属性是一个样本不同特征值的名字;例:一个房子的 面积、价格、地址 就是特征属性
2、特征值的概念: 特征值是样本特征属性的具体值;例:一个房子 100平米、700万元、位居上海 就是特征值
1、哑编码功能:将非数值型的特征值转换为数值型的数字
2、哑编码描述:假设变量的取值有 k 个,如果对这些值用 1 到 k 编序,则可用维度为 k 的向量来表示一个变量的值。在这样的向量里,
该取值所对应的序号所在 的元素为1,其他元素均为0
3、哑编码应用场景:样本特征值中有限个str类别的数字化
(2)词袋法 BOW 与 TF-IDF
1、基本思想:
词条的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语 料库中出现的频率成反比下降;也就是说词条在当前
文本中出现的次数越多,表示 该词条对当前文本的重要性越高,词条在所有文本(语料库/训练数据集)中出现的次数越少,说明这个词条
对文本的重要性越高。TF(词频)指某个词条在文本中出现的次 数,一般会将其进行归一化处理(该词条数量/该文档中所有词条数量);
2、作用对象:文本字符串
1、TF:TF(词频)指某个词条在文本中出现的次数,一般会将其进行归一化处理(该词条数量/该文档中所有词条数量);
2、IDF:;IDF(逆向文件频率)指一个词条重要性的度量,一般计算方式为语料库中总文件数目除以包含该词 语的文件数目,再将得到
的商取对数得到。 ------- 由于个别情况逆向文件频率很大而影响判断,我们通常会取IDF的 ln 对数
- 例:ABC.. 是两个文章中某个单词
(3).....
3、特征工程
1、....
4、模型训练
1、模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择。
2、模型训练:交叉验证 ------- 本质:分别用样本不同部分的数据作为训练集、测试集进行训练和测试。
在训练数据集上运行模型(算法)并在测试数据集中测试效果,迭代进行数据模型的修改, 这种方式被称为交叉验证(将数据分
为训练集和测试集,使用训练集构建模型,并使用测试集评估模型提供修改建议)
5、模型测试评估
(1)分类算法模型测试评估
- 分类算法中常见的指标 Accuracy、Recall、Precision、F
1、在分类算法中常见的指标分别是准确率/召回率(覆盖率)/精准率/F值(F1指标):
• 正确率(Accuracy)=提取出的正确样本数/总样本数 ------- 模行预测的准确程度
• 召回率(Recall)(又称覆盖率)=正确的正例样本数/样本中的正例样本数 ------- 模型预测真正例在样本正例中的覆盖程度
• 精准率/准确率(Precision)=正确的正例样本数/预测为正例的样本数 ------- 模型预测真正例在预测正例中的精准程度
• F值=Precision*Recall*2 / (Precision+Recall) (即F值为精确率和召回率的调和平均值)
2、通常情况下:F值越大,我们认为模型越好
3、召回率与精确率在一定程度下成反比,因此定义F作为两者调和平均值
- 分类算法混淆矩阵
- ROC 曲线
1、描述的是分类混淆矩阵中FPR-TPR两个量之间的相对变化情况,ROC曲线的纵轴是 “真正例率(召回率)”(True Positive
Rate 简称TPR),横轴是“假正例率” (False Positive Rate 简称FPR)。
2、本质:当取不同阈值时会得到不同 的混淆矩阵,对应于ROC曲线上的一个点。
那么ROC曲线就反映了FPR与TPR之间权 衡的情况,通俗地来说,即在TPR随着FPR递增的情况下,谁增长得更快,
快多少的 问题
3、ROC曲线:TPR增长得越快,曲线越往上屈,AUC(曲线与x轴积分的面积)就越大,反映了模型的分类性能就越 好。
- AUC值
• AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又 由于ROC曲线一般都处于y=x这条直线的
上方,所以AUC的取值范围在0.5和1之间。使用AUC 值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,
而AUC作 为数值可以直观的评价分类器的好坏,值越大越好。
• AUC的值越大表达模型越好
• AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大 多数预测的场合,不存在完美分类器。
• 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
• AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
• AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
- 分类模型评估总结_分类算法评估方式
(2)回归算法模型测试评估
• 回归结果度量
• explained_varicance_score:可解释方差的回归评分函数
• mean_absolute_error:平均绝对误差 ------- MAE
• mean_squared_error:平均平方误差 ------- MSE
• r2_score: R2/R方
• MSE:均值误差平方和,越趋近于0表示模型越拟合训练数据。
• RMSE:MSE的平方根,作用同MSE
• TSS:总平方和TSS(Total Sum of Squares),表示样本之间的差异情况,是伪方差的m倍
• RSS:残差平方和RSS(Residual Sum of Squares),表示预测值和样本值之间的差异情况,是MSE的m倍
-----------------------------------------------------------------------------------------
• R2:取值范围(负无穷,1],值越大表示模型越拟合训练数据;
①最优解是1;
②当模型预测为随机值的时候,有可能为负;
③若预测值恒为样本期望,R2为0
- sklearn库函数
6、模型部署
• 当模型构建好后,将训练好的模型进行部署
• 方式一:直接使用训练好的模型对数据做一个预测,然后将预测结果保存数据库中。 ------ 跨语言
• 方式二:直接将模型持久化为磁盘文件的形式,在需要的代码处从磁盘中恢复模型 对象,然后使用恢复的模型对象对数据
做一个预测。 ------ 跨语言
• 方式三:直接将模型参数保存到数据库中,然后在需要的代码处直接从数据库把模 型参数加载到代码中,然后根据模型算
法原理使用模型参数对数据做一个预测。 ------ 仅仅基于python语言
• 模型需要周期性的进行修改、调优:
• 一个月、一周
7、迭代优化
1、....
--------------------------------------------------------------------------------------------------------------------
- 常用网站地址
sklearn 官网: https://scikit-learn.org/stable/index.html
python 安装包 :https://pypi.org/
anaconda 官网:https://anaconda.org/
- 机器学习可用公开数据集
• 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