内容概要:机器学习基本概念、机器学习分类、机器学习数据处理流程。
机器学习定义
- 机器学习(Machine Learning(ML))是一门从数据中研究算法的科学学科。
- 根据已有的数据,进行算法选择,并基于算法和数据构建模型,最终对未来进行预测。
- 机器学习就是一个模拟人决策过程的一种程序结构。
机器学习概念
- 拟合:构建的算法模型符合给定数据的特征
- xi:x响亮的第i维度的值
- x(i):表示第i个样本的x向量
- 鲁棒性(robust):系统的健壮性;当存在异常数据的时候,算法也会拟合数据
- 过拟合:表现是在训练模型上效果好,在测试模型上效果差,模型泛化能力弱。原因是把一些样本的特殊性质当成了所有样本一般性质。
- 欠拟合:模型对一般性质尚未学好,导致在训练集和测试集上表现效果都差。原因是模型复杂度过低,或特征量过少。
基本概念
- 输入:x ∈ X (属性值、特征属性)
- 输出:y ∈ Y (目标值)
- 输入数据集:D = {(x1, y1), (x2, y2), … , (xn, yn)}
- 获得一个目标函数(target function):
f : X -> Y (理想公式)
- 最终具有最优性能的假设公式:
g : X -> Y (学习得到的最终公式)
目标函数 f 未知,也无法得到,通过机器学习从数据中获得一个假设的函数 g,使其非常接近目标函数 f 的效果。
美国卡内基梅隆大学(CarnegieMellonUniversity)机器学习研究领域的著名教授TomMitchell对机器学习的经典定义:
•对于某给定的任务T,在合理的性能度量方案P的前提下,某计算机程序可以自主学习任务T的经验E;随着提供合适、优质、大量的经验E,该程序对于任务T的性能逐步提高。
其中重要的机器学习对象:
•任务(Task)T,一个或多个、经验(Experience)E、度量性能(Performance)P
•即:随着任务的不断执行,经验的累积会带来计算机性能的提升。
机器学习常用框架
- scikit-learn Python
- Mahout(Hadoop生态圈) Java
- Spark (Apache) Java
sklearn 算法备忘录
机器学习分类
• **有监督学习 **
• 用已知某种或某些特性的样本作为训练集,以建立一个数学模型,再用已建立的模型来预测未知样本,此种方法被称为有监督学习,是最常用的一种机器学习方法。是从标签化训练数据集中推断出模型的机器学习任务。
• **无监督学习 **
• 与监督学习相比,无监督学习的训练集中没有人为的标注的结果,在非监督的学习过程中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。
• **半监督学习 **
• 考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题,是有监督学习和无监督学习的结合。
有监督学习
• 判别式模型(Discriminative Model):直接对条件概率p(y|x)进行建模,常见判别模型有:Logistic回归、决策树、支持向量机SVM、k近邻、神经网络等;
• 生成式模型(Generative Model):对联合分布概率p(x,y)进行建模,常见生成式模型有:隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、LDA等;
• 生成式模型更普适;判别式模型更直接,目标性更强
• 生成式模型关注数据是如何产生的,寻找的是数据分布模型;判别式模型关注的数据的差异性,寻找的是分类面。
• 由生成式模型可以产生判别式模型,但是由判别式模式没法形成生成式模型。
无监督学习
• 无监督学习试图学习或者提取数据背后的数据特征,或者从数据中抽取出重要的特征信息,常见的算法有聚类、降维、文本处理(特征抽取)等。
• 无监督学习一般是作为有监督学习的前期数据处理,功能是从原始数据中抽取出必要的标签信息。
半监督学习(SSL)
• 主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。
半监督学习对于减少标注代价,提高学习机器性能具有非常重大的实际意义。
• SSL的成立依赖于模型假设,主要分为三大类:平滑假设、聚类假设、流行假设; 其中流行假设更具有普片性。
• SSL类型的算法主要分为四大类:半监督分类、半监督回归、半监督聚类、半监督降维。
• 缺点:抗干扰能力弱,仅适合于实验室环境,其现实意义还没有体现出来;未来的发展主要是聚焦于新模型假设的产生。
机器学习:classification(分类),regression(回归),clustering(聚类),dimensionality reduction(降维)
- 聚类(clustering)无监督学习的结果。聚类的结果将产生一组集合(簇),集合中的对象与同集合中的对象彼此相似,与其他集合中的对象相异。没有标准参考的学生给书本分的类别,表示自己认为这些书可能是同一类别的(具体什么类别不知道,没有标签和目标,即不是判断书的好坏(目标,标签),只能凭借特征而分类)。
- 分类(classification)有监督学习的两大应用之一,产生离散的结果。例如向模型输入人的各种数据的训练样本,产生“输入一个人的数据,判断是否患有癌症”的结果,结果必定是离散的,只有“是”或“否”。(即有目标和标签,能判断目标特征是属于哪一个类型)
- 回归(regression)有监督学习的两大应用之一,产生连续的结果。例如向模型输入人的各种数据的训练样本,产生“输入一个人的数据,判断此人20年后今后的经济能力”的结果,结果是连续的,往往得到一条回归曲线。当输入自变量不同时,输出的因变量非离散分布(不仅仅是一条线性直线,多项曲线也是回归曲线)。
- 降纬(regression)用于将高维数据映射到低维,从而降低分析成本。例如用机器学习去训练数据集的时候,可能会遇到上千甚至上万个特征,随着数据量的增大,所分析出结果的准确度虽然会提高很多,但同时处理起来也会变得十分棘手,此时我们不得不想出一种方法去减少特征将高维的数据转化为低维的数据(降维)。
- 关联规则用于获取隐藏在数据项之间的关联或相互关系,即可以根据一个数据项的出现推导出其他数据项的出现频率。
1,给定一个样本特征 , 我们希望预测其对应的属性值 , 如果是离散的, 那么这就是一个分类问题,反之,如果 是连续的实数, 这就是一个回归问题。
2,给定一组样本特征 , 我们没有对应的属性值 , 而是想发掘这组样本在二维空间的分布, 比如分析哪些样本靠的更近,哪些样本之间离得很远, 这就是属于聚类问题。
3,如果我们想用维数更低的子空间来表示原来高维的特征空间, 那么这就是降维问题。
机器学习之商业场景
一、商业场景概览
- 数据挖掘
- 风控
- CTR、搜索排序、量化投资
- CV(机器视觉)、NLP(自然语言处理)、无人车
二、工业4.0
AI视觉缺陷检测优势:
- 准确率高
- 实时性
- 可对缺陷分类,及时预警设备维护,极大减少停产风险
三、精准营销
营销响应预测
- 数据清洗
- 特征工程
- 模型建立
- 模型评估
- 模型调优
四、买家秀
机器学习 + 深度学习
机器学习、数据分析、数据挖掘区别与联系
• 数据分析:数据分析是指用适当的统计分析方法对收集的大量数据进行分析,并提取有用的信息,以及形成结论,从而对数据进行详细的研究和概括过程。
在实际工作中,数据分析可帮助人们做出判断;数据分析一般而言可以分为统计分析、探索性数据分析和验证性数据分析三大类。
• 数据挖掘:一般指从大量的数据中通过算法搜索隐藏于其中的信息的过程。
通常通过统计、检索、机器学习、模式匹配等诸多方法来实现这个过程。
• 机器学习:是数据分析和数据挖掘的一种比较常用、比较好的手段
• 深度学习是机器学习的子类;深度学习是基于传统的神经网络算法发展到多
隐层的一种算法体现。
• 机器学习是人工智能的一个子类;
机器学习开发流程
- 数据收集
- 数据预处理
- 特征提取
- 模型构建
- 模型测试评估
- 投入使用(模型部署与整合)
- 迭代优化
数据收集与存储
• 数据来源:
• 用户访问行为数据
• 业务数据
• 外部第三方数据
• 数据存储:
• 需要存储的数据:原始数据、预处理后数据、模型结果
• 存储设施:磁盘、mysql、HDFS、HBase、Solr、Elasticsearch、Kafka、Redis等
• 数据收集方式:
• Flume & Kafka
机器学习可用公开数据集
• 在实际工作中,我们可以使用业务数据进行机器学习开发,但是在学习过程中,没有业务数据,此时可以使用公开的数据集进行开发,常用数据集如下:
• http://archive.ics.uci.edu/ml/datasets.php
• 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
• https://www.datafountain.cn/
数据清洗和转换
• 实际生产环境中机器学习比较耗时的一部分
• 大部分的机器学习模型所处理的都是特征,特征通常是输入变量所对应的可用于模型的数值表示
• 大部分情况下 ,收集得到的数据需要经过预处理后才能够为算法所使用,预处理的操作主要包括以下几个部分:
• 数据过滤
• 处理数据缺失
• 处理可能的异常、错误或者异常值
• 合并多个数据源数据
• 数据汇总
• 对数据进行初步的预处理,需要将其转换为一种适合机器学习模型的表示形式,对许多模型类型来说,这种表示就是包含数值数据的向量或者矩阵
• 将类别数据编码成为对应的数值表示(一般使用1-of-k\哑编码方法)
• 从文本数据中提取有用的数据(一般使用词袋法或者TF-IDF)
• 处理图像或者音频数据(像素、声波、音频、振幅等<傅里叶变换>)
• 对特征进行正则化、标准化,以保证同一模型的不同输入变量的取值范围相同
• 数值数据转换为类别数据以减少变量的值,比如年龄分段
• 对数值数据进行转换,比如对数转换
• 对现有变量进行组合或转换以生成新特征(基于对数据以及对业务的理解),比如平均数 (做虚拟变量),需要不断尝试才可以确定具体使用什么虚拟变量。
类型特征之1-of-k(哑编码)
• 功能:将非数值型的特征值转换为数值型的数据
• 描述:假设变量的取值有 k 个,如果对这些值用 1 到 k 编序,则可用维度为k 的向量来表示一个变量的值。在这样的向量里,该取值所对应的序号所在的元素为1,其他元素均为0。
文本数据抽取
• 词袋法:将文本当作一个无序的数据集合,文本特征可以采用文本中的词条/单词T进行体现,那么文本中出现的所有词条及其出现的次数/频率就可以体现文档的特征
• TF-IDF: 词条的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降;也就是说词条在当前文本中出现的次数越多,表示该词条对当前文本的重要性越高,词条在所有文本(语料库/训练数据集)中出现的次数越少,说明这个词条对文本的重要性越高。TF(词频)指某个词条在文本中出现的次数,一般会将其进行归一化处理(该词条数量/该文档中所有词条数量);IDF(逆向文件频率)指一个词条重要性的度量,一般计算方式为语料库中总文件数目除以包含该词语的文件数目,再将得到的商取对数得到。TF-IDF实际上是:TF * IDF
例:
文档1内容:A(2)、B(1)、C(3)、D(9)、E(1)
文档2内容:A(1)、B(5)、C(2)、D(10)
TF(A|文档1)=2/16=1/8
TF(A|文档2)=1/18
IDF(A)=IDF(B)=IDF©=D(D)=2/2=1
IDF(E)=2/1=2
模型训练及测试
• 模型选择:对特定任务最优建模方法的选择或者对特定模型最佳参数的选择。
• 在训练数据集上运行模型(算法)并在测试数据集中测试效果,迭代进行数据模型的修改,这种方式被称为交叉验证(将数据分为训练集和测试集,使用训练集构建模型,并使用测试集评估模型提供修改建议)
当我们在机器学习任务中使用一个模型时,我们通常需要评估其性能。交叉验证是一种常用的评估方法,它将数据集分为训练集和测试集,并多次重复这个过程,以获得更可靠的性能指标。
交叉验证的步骤如下:
- 将数据集划分为k个大小相等的子集(通常为10)。
- 选择一个子集作为测试集,其余的子集作为训练集。
- 在训练集上训练模型,并在测试集上进行评估。
- 重复步骤2和3,直到每个子集都被用作测试集。
- 计算模型在每个测试集上的性能指标的平均值作为最终的性能评估。
交叉验证可以帮助我们评估模型的泛化能力,避免过拟合或欠拟合的情况。它还可以帮助我们选择最佳的超参数设置,例如正则化参数。
• 模型的选择会尽可能多的选择算法进行执行,并比较执行结果
• 模型的测试一般以下几个方面来进行比较,在分类算法中常见的指标分别是**准确率/召回率/精准率/F值(F1指标) **
• 准确率(Accuracy)=提取出的正确样本数/总样本数
• 召回率(Recall)=正确的正例样本数/样本中的正例样本数——覆盖率
• 精准率(Precision)=正确的正例样本数/预测为正例的样本数
• F值=PrecisionRecall2 / (Precision+Recall) (即F值为精准率和召回率的调和平均值)
A和D预测正确,B和C预测错误,测试计算结果为:
A c c u r a y = # ( A ) + # ( B ) # ( A ) + # ( B ) + # ( C ) + # ( D ) Accuray=\frac{\#(A)+\#(B)}{\#(A)+\#(B)+\#(C)+\#(D)} Accuray=#(A)+#(B)+#(C)+#(D)