导图社区 机器学习
机器学习知识图谱,机器学习的种类有监督学习、无监督学习、半监督学习、强化学习、批量学习、增量学习、基于实例的学习和基于模型的学习。
编辑于2023-07-02 18:44:37 陕西机器学习
概述
机器学习的问题
建模问题
评估问题
优化问题
机器学习种类
监督学习、无监督学习、半监督学习、强化学习
批量学习、增量学习
基于实例的学习和基于模型的学习
一般过程
数据处理 数据收集(数据检索、数据挖掘、Hadoop,Hive,爬虫) 数据清洗(剔除异常值) 特征工程 机器学习 选择模型(算法) 训练模型(算法) 评估模型(工具框架、算法、知识) 测试模型 业务运维 应用模型 维护模型
典型应用
股价预测、推荐引擎、自然语言识别、语音识别、图像识别、人脸识别
基本问题
回归问题
分类问题
聚类问题
降维问题
数据预处理
均值移除(标准化)
由于一个样本的不同特征值差异较大,不利于使用现有机器学习算法进行样本处理。均值移除可以让样本矩阵中的每一列的平均值为0,标准差为1。 例如有一列特征值表示年龄: 17, 20, 23 mean = (17 + 20 + 23)/3 = 20 a' = -3 b' = 0 c' = 3 完成! 均值为0 a' = -3 b' = 0 c' = 3 s' = std(a', b', c') [a'/s', b'/s', c'/s']
范围缩放
将样本矩阵中的每一列的最小值和最大值设定为相同的区间,统一各列特征值的范围。一般情况下会把特征值缩放至[0, 1]区间。
归一化
有些情况每个样本的每个特征值具体的值并不重要,但是每个样本特征值的占比更加重要。 所以归一化即是用每个样本的每个特征值除以该样本各个特征值绝对值的总和。变换后的样本矩阵,每个样本的特征值绝对值之和为1。
二值化
有些业务并不需要分析矩阵的详细完整数据(比如图像边缘识别只需要分析出图像边缘即可),可以根据一个事先给定的阈值,用0和1表示特征值不高于或高于阈值。二值化后的数组中每个元素非0即1,达到简化数学模型的目的。
独热编码
为样本特征的每个值建立一个由一个1和若干个0组成的序列,用该序列对所有的特征值进行编码。 适合离散数据,不适合处理连续数据 两个数 三个数 四个数 1 3 2 7 5 4 1 8 6 7 3 9 为每一个数字进行独热编码: 1-10 3-100 2-1000 7-01 5-010 4-0100 8-001 6-0010 9-0001 编码完毕后得到最终经过独热编码后的样本矩阵: 101001000 010100100 100010010 011000001
标签编码
根据字符串形式的特征值在特征序列中的位置,为其指定一个数字标签,用于提供给基于数值算法的学习模型。
回归模型
线性回归
预测函数:y = w0+w1x x: 输入 y: 输出 w0和w1: 模型参数 所谓模型训练,就是根据已知的x和y,找到最佳的模型参数w0 和 w1,尽可能精确地描述出输入和输出的关系。 5.0 = w0 + w1 × 0.5 5.5 = w0 + w1 × 0.6 单样本误差: 根据预测函数求出输入为x时的预测值:y' = w0 + w1x,单样本误差为1/2(y' - y)2。 总样本误差: 把所有单样本误差相加即是总样本误差:1/2 Σ(y' - y)2 损失函数:  所以损失函数就是总样本误差关于模型参数的函数,该函数属于三维数学模型,即需要找到一组w0 w1使得loss取极小值。
岭回归
普通线性回归模型使用基于梯度下降的最小二乘法,在最小化损失函数的前提下,寻找最优模型参数,于此过程中,包括少数异常样本在内的全部训练数据都会对最终模型参数造成程度相等的影响,异常值对模型所带来影响无法在训练过程中被识别出来。为此,岭回归在模型迭代过程所依据的损失函数中增加了正则项,以限制模型参数对异常样本的匹配程度,进而提高模型面对多数正常样本的拟合精度。
多项式回归
若希望回归模型更好的拟合训练样本数据,可以使用多项式回归器。 一元多项式回归  将高次项看做对一次项特征的扩展得到:  那么一元多项式回归即可以看做为多元线性回归,可以使用LinearRegression模型对样本数据进行模型训练。 所以一元多项式回归的实现需要两个步骤: 将一元多项式回归问题转换为多元线性回归问题(只需给出多项式最高次数即可)。 将1步骤得到多项式的结果中 w1 w2 .. 当做样本特征,交给线性回归器训练多元线性模型。
决策树
基本算法原理
核心思想:相似的输入必会产生相似的输出 为了提高搜索效率,使用树形数据结构处理样本数据  首先从训练样本矩阵中选择第一个特征进行子表划分,使每个子表中该特征的值全部相同,然后再在每个子表中选择下一个特征按照同样的规则继续划分更小的子表,不断重复直到所有的特征全部使用完为止,此时便得到叶级子表,其中所有样本的特征值全部相同。对于待预测样本,根据其每一个特征的值,选择对应的子表,逐一匹配,直到找到与之完全匹配的叶级子表,用该子表中样本的输出,通过平均(回归)或者投票(分类)为待预测样本提供输出。 随着子表的划分,信息熵(信息的混乱程度)越来越小,信息越来越纯,数据越来越有序。
工程优化
不必用尽所有的特征,叶级子表中允许混杂不同的特征值,以此降低决策树的层数,在精度牺牲可接受的前提下,提高模型的性能。通常情况下,可以优先选择使信息熵减少量最大的特征作为划分子表的依据。
集合算法
根据多个不同模型给出的预测结果,利用平均(回归)或者投票(分类)的方法,得出最终预测结果。 基于决策树的集合算法,就是按照某种规则,构建多棵彼此不同的决策树模型,分别给出针对未知样本的预测结果,最后通过平均或投票得到相对综合的结论。
正向激励
首先为样本矩阵中的样本随机分配初始权重,由此构建一棵带有权重的决策树,在由该决策树提供预测输出时,通过加权平均或者加权投票的方式产生预测值。将训练样本代入模型,预测其输出,对那些预测值与实际值不同的样本,提高其权重,由此形成第二棵决策树。重复以上过程,构建出不同权重的若干棵决策树。 特征重要性 作为决策树模型训练过程的副产品,根据每个特征划分子表前后的信息熵减少量就标志了该特征的重要程度,此即为该特征重要性指标。训练得到的模型对象提供了属性:feature_importances_来存储每个特征的重要性。
自助聚合
每次从总样本矩阵中以有放回抽样的方式随机抽取部分样本构建决策树,这样形成多棵包含不同训练样本的决策树,以削弱某些强势样本对模型预测结果的影响,提高模型的泛化特性。 规避强势样本对谡结果的影响
随机森林
在自助聚合的基础上,每次构建决策树模型时,不仅随机选择部分样本,而且还随机选择部分特征,这样的集合算法,不仅规避了强势样本对预测结果的影响,而且也削弱了强势特征的影响,使模型的预测能力更加泛化。
分类模型
人工分类
逻辑分类
通过输入的样本数据,基于多元线型回归模型求出线性预测方程。  但通过线型回归方程返回的是连续值,不可以直接用于分类业务模型,所以急需一种方式使得把连续的预测值->离散的预测值。 [-oo, +oo]->{0, 1} 逻辑函数: 该逻辑函数当x>0,y>0.5;当x<0, y<0.5; 可以把样本数据经过线性预测模型求得的值带入逻辑函数的x,即将预测函数的输出看做输入被划分为1类的概率,择概率大的类别作为预测结果,可以根据函数值确定两个分类。这是线性函数非线性化的一种方式。
朴素贝叶斯分类
朴素贝叶斯分类是一种依据统计概率理论而实现的一种分类方式 
数据集划分
对于分类问题训练集和测试集的划分不应该用整个样本空间的特定百分比作为训练数据,而应该在其每一个类别的样本中抽取特定百分比作为训练数据。sklearn模块提供了数据集划分相关方法,可以方便的划分训练集与测试集数据,使用不同数据集训练或测试模型,达到提高分类可信度。
交叉验证
由于数据集的划分有不确定性,若随机划分的样本正好处于某类特殊样本,则得到的训练模型所预测的结果的可信度将受到质疑。所以需要进行多次交叉验证,把样本空间中的所有样本均分成n份,使用不同的训练集训练模型,对不同的测试集进行测试时输出指标得分。 交叉验证指标 精确度(accuracy):分类正确的样本数/总样本数 查准率(precision_weighted):针对每一个类别,预测正确的样本数比上预测出来的样本数 召回率(recall_weighted):针对每一个类别,预测正确的样本数比上实际存在的样本数 f1得分(f1_weighted): 2x查准率x召回率/(查准率+召回率) 在交叉验证过程中,针对每一次交叉验证,计算所有类别的查准率、召回率或者f1得分,然后取各类别相应指标值的平均数,作为这一次交叉验证的评估指标,然后再将所有交叉验证的评估指标以数组的形式返回调用者。
混淆矩阵
每一行和每一列分别对应样本输出中的每一个类别,行表示实际类别,列表示预测类别。  上述矩阵即为理想的混淆矩阵。不理想的混淆矩阵如下:  查准率 = 主对角线上的值 / 该值所在列的和 召回率 = 主对角线上的值 / 该值所在行的和
分类报告
sklearn.metrics提供了分类报告相关API,不仅可以得到混淆矩阵,还可以得到交叉验证查准率、召回率、f1得分的结果,可以方便的分析出哪些样本是异常样本。 # 获取分类报告 import sklearn.metrics as sm cr = sm.classification_report(实际输出, 预测输出)
决策树分类
决策树分类模型会找到与样本特征匹配的叶子节点然后以投票的方式进行分类。在样本文件中统计了小汽车的常见特征信息及小汽车的分类,使用这些数据基于决策树分类算法训练模型预测小汽车等级。  案例:基于决策树分类算法训练模型预测小汽车等级。 读取文本数据,对每列进行标签编码,基于随机森林分类器进行模型训练,进行交叉验证。 自定义测试集,使用已训练的模型对测试集进行测试,输出结果。
验证曲线
学习曲线
支持向量机SVM
支持向量机原理
样本类别均衡化
置信概率
网络搜索
聚类模型
图像量化
KMeans聚类算法可以应用于图像量化领域。通过KMeans算法可以把一张图像所包含的颜色值进行聚类划分,求每一类别的平均值后再重新生成新的图像。可以达到图像降维的目的。这个过程称为图像量化。图像量化可以更好的保留图像的轮廓,降低机器识别图像轮廓的难度。
均值漂移算法
首先假定样本空间中的每个聚类均服从某种已知的概率分布规则,然后用不同的概率密度函数拟合样本中的统计直方图,不断移动密度函数的中心(均值)的位置,直到获得最佳拟合效果为止。这些概率密度函数的峰值点就是聚类的中心,再根据每个样本距离各个中心的距离,选择最近聚类中心所属的类别作为该样本的类别。 均值漂移算法的特点: 聚类数不必事先已知,算法会自动识别出统计直方图的中心数量。 聚类中心不依据于最初假定,聚类划分的结果相对稳定。 样本空间应该服从某种概率分布规则,否则算法的准确性会大打折扣。
轮廓系数
好的聚类:内密外疏,同一个聚类内部的样本要足够密集,不同聚类之间样本要足够疏远。 轮廓系数计算规则:针对样本空间中的一个特定样本,计算它与所在聚类其它样本的平均距离a,以及该样本与距离最近的另一个聚类中所有样本的平均距离b,该样本的轮廓系数为(b-a)/max(a, b),将整个样本空间中所有样本的轮廓系数取算数平均值,作为聚类划分的性能指标s。 轮廓系数的区间为:[-1, 1]。 -1代表分类效果差,1代表分类效果好。0代表聚类重叠,没有很好的划分聚类。
DBSCAN算法
从样本空间中任意选择一个样本,以事先给定的半径做圆,凡被该圆圈中的样本都视为与该样本处于相同的聚类,以这些被圈中的样本为圆心继续做圆,重复以上过程,不断扩大被圈中样本的规模,直到再也没有新的样本加入为止,至此即得到一个聚类。于剩余样本中,重复以上过程,直到耗尽样本空间中的所有样本为止。 DBSCAN算法的特点: 事先给定的半径会影响最后的聚类效果,可以借助轮廓系数选择较优的方案。 根据聚类的形成过程,把样本细分为以下三类: 外周样本:被其它样本聚集到某个聚类中,但无法再引入新样本的样本。 孤立样本:聚类中的样本数低于所设定的下限,则不称其为聚类,反之称其为孤立样本。 核心样本:除了外周样本和孤立样本以外的样本。
推荐引擎
推荐引擎意在把最需要的推荐给用户。 在不同的机器学习场景中通常需要分析相似样本。而统计相似样本的方式可以基于欧氏距离分数,也可基于皮氏距离分数。 欧氏距离分数  计算所得欧氏距离分数区间处于:(0, 1],越趋于0样本间的欧氏距离越远,样本越不相似;越趋于1,样本间的欧氏距离越近,越相似。 构建样本之间的欧氏距离得分矩阵: 
自然语言处理NLP
Siri的工作流程:1. 听 2.懂 3.思考 4.组织语言 5.回答 语音识别 自然语言处理 - 语义分析 逻辑分析 - 结合业务场景与上下文 自然语言处理 - 分析结果生成自然语言文本 语音合成 自然语言处理的常用处理过程: 先针对训练文本进行分词处理(词干提取、原型提取),统计词频,通过词频-逆文档频率算法获得该词对样本语义的贡献,根据每个词的贡献力度,构建有监督分类学习模型。把测试样本交给模型处理,得到测试样本的语义类别。 自然语言工具包 - NLTK
分词处理
文本分词
词干提取
文本样本中的单词的词性与时态对于语义分析并无太大影响,所以需要对单词进行词干提取。
词性还原
与词干提取的作用类似,词性还原更利于人工二次处理。因为有些词干并非正确的单词,人工阅读更麻烦。词性还原可以把名词复数形式恢复为单数形式,动词分词形式恢复为原型形式。
词袋模型
一句话的语义很大程度取决于某个单词出现的次数,所以可以把句子中所有可能出现的单词作为特征名,每一个句子为一个样本,单词在句子中出现的次数为特征值构建数学模型,称为词袋模型。 The brown dog is running. The black dog is in the black room. Running in the room is forbidden. 1 The brown dog is running 2 The black dog is in the black room 3 Running in the room is forbidden 
统计词频
词频TF
单词在句子中出现的次数除以句子的总词数称为词频。即一个单词在一个句子中出现的频率。词频相比单词的出现次数可以更加客观的评估单词对一句话的语义的贡献度。词频越高,对语义的贡献度越大。对词袋矩阵归一化即可得到词频。
文档频率DF
含有某个单词的文档样本数/总文档样本数
逆文档频率IDF
总样本数/含有某个单词的样本数
词频-逆文档频率TF-IDF
词频矩阵中的每一个元素乘以相应单词的逆文档频率,其值越大说明该词对样本语义的贡献越大,根据每个词的贡献力度,构建学习模型。
语音识别
声音的本质是震动,震动的本质是位移关于时间的函数,波形文件(.wav)中记录了不同采样时刻的位移。 通过傅里叶变换,可以将时间域的声音函数分解为一系列不同频率的正弦函数的叠加,通过频率谱线的特殊分布,建立音频内容和文本的对应关系,以此作为模型训练的基础。
语音识别
梅尔频率倒谱系数(MFCC)通过与声音内容密切相关的13个特殊频率所对应的能量分布,可以使用梅尔频率倒谱系数矩阵作为语音识别的特征。基于隐形马尔科夫模型进行模式识别,找到测试样本最匹配的声音模型,从而识别语音内容。
声音合成
根据需求获取某个声音的模型频域数据,根据业务需要可以修改模型数据,逆向生成时域数据,完成声音的合成。
计算机视觉
OpenCV基础
OpenCV是一个开源的计算机视觉库。提供了很多图像处理常用的工具。
亮度提升
OpenCV提供了直方图均衡化的方式实现亮度提升,更有利于边缘识别与物体识别模型的训练。
边缘检测
物体的边缘检测是物体识别常用的手段。边缘检测常用亮度梯度方法。通过识别亮度梯度变化最大的像素点从而检测出物体的边缘。
角点检测
平直棱线的交汇点(颜色梯度方向改变的像素点的位置)
图像识别
特征点检测
常用特征点检测有:STAR特征点检测 / SIFT特征点检测 特征点检测结合了边缘检测与角点检测从而识别出图形的特征点。
特征值矩阵
图像特征值矩阵(描述)记录了图像的特征点以及每个特征点的梯度信息,相似图像的特征值矩阵也相似。这样只要有足够多的样本,就可以基于隐马尔科夫模型进行图像内容的识别。
物体识别
人脸识别
人脸识别与图像识别的区别在于人脸识别需要识别出两个人的不同点
视频捕获
通过OpenCV访问视频捕捉设备(视频头),从而获取图像帧。
人脸定位
哈尔级联人脸定位
人脸识别
简单人脸识别:OpenCV的LBPH(局部二值模式直方图)