机器学习基础篇_2/2

caid

分类: 人工智能、学习笔记 1857 2

开发流程

原始数据 --> 数据特征工程(训练数据和测试数据) --> 选择合适的算法进行学习 --> 建立模型 --> 模型评估(测试数据) --> 判断模型是否合格 --> 模型应用(一般以API的形式提供)

算法分类

  • 数据类型

    1. 离散型:由记录不同类别个题的数目所得到的数据,又称计数数据,所有这些数据全部都是整数,而且不能再分,也不能进一步提高他们的精确度

    2. 连续性:变量可以在某个范围内取任一数,即变量的取值可以是连续的,如,长度、时间、质量值等,这类整数通常是非整数,含小数部分。

  • 算法分类

    • 监督学习

      • 分类:k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络

      • 回归:线性回归、岭回归

    • 无监督学习

      聚类:k-means

k-近邻算法

  • 定义

    如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于摸一个类别,则该样本也属于这个类别。

  • 距离公式

  • 特点

    需要做标准化处理。

    k的取值越大,容易受k值数量(类别)的波动,k越小,容易受异常点影响。

    优点:算法检点,易于理解,易于实现,无需估计参数,无需训练

    缺点:懒惰算法,对测试样本分类是的计算量大,内存开销大。必须指定k值,k值选择不当则分类精度不能保证。

    场景:数据量较小。

朴素贝叶斯

  • 概率

    是指一件事情发生的可能性。

    • 联合概率

      包含多个条件,且所有条件同时成立的概率。 P(A,B)

    • 条件概率

      事件A在另外一个事件B已经发生条件下的发生概率。P(A|B)

      P(A1, A2|B) = P(A1|B)P(A2|B)

  • 朴素贝叶斯

    • 公式

      其中,w为给定文档的特征值(频数统计,预测文档提供),c为文档类别。

      P(C) = 类别文档数 / 总文档数量

      P(W|C) 是给定类别下特征的概率,P(F1|C) = Ni/N,Fi是文档中的各个词,Ni为该F1词在C类别所有文档中出现的次数。N为所属类别C下的文档所有此出现的次数和

      公式等价于

    • 概率为零的解决方案 拉普拉斯平滑系数

      为指定的系数,一般为。为训练文档中统计出的特征词个数。
    • API

      sklearn.naive_bayes.MultinomialNB(alpha=1.0) alpha为拉普拉斯平滑系数

    • 特征

      不需要传参,训练集误差大,结果则差。

      场景:文本分类,神经网络

决策树

  • 思想

    决策树思想的来源非常朴素,程序设计中的条件分支结构是if-then结构,最早的决策树就是利用这类结构分割数据的一类分类学习方法。

  • 信息度量和和作用

  • 信息熵

    H的专业术语是:信息熵,单位为比特

    注:信息和消除不确定性是相联系的

  • 划分依据

    • 信息增益:当得知一个特征条件之后,减少的信息熵的大小。也就是在获取到一个特征值之后,信息熵减少的越多,说明该属性越重要,对于结果的不确定性影响越大,决策时排在最前面。

      其中g为信息增益,H(D)为初始信息熵大小,H(D|A) 是特征A给定条件下D的信息条件熵。

    • ID3

    • C4.5

    • CART

      回归树:平方误差最小

      分类树:基尼系数,最小的准则,在sklearn中可以选择划分的原则

  • API

    class sklearn.tree.DecisionTreeClassifier(criterion='gini', max_depth=None, random_state=None)

    • 决策树分类器

    • criterion默认是'gini'系数,也可以选择信息增益的熵'entropy'

    • max_depth:数的深度大小

    • random_state:随机数种子

    方法:

    decision_path:返回决策树的路径

分类模型评估

  • API

    sklearn.metrics.classification_report(y_true, y_pred, target_names=None)

    • y_true: 真是目标值

    • y_pred:估计器预测目标值

    • target_names:目标类别名称

    • return: 每个类别精确率与召回率

模型选择与调优

交叉验证

  • 目的:让被评估的模型更加准确可信。

  • 思想:

    将训练数据分为训练集和验证集。将数据分为n份,其中一份为验证集。然后经过n次(组)的测试,每次都更换不同的验证集,轮流进行,直到每一份都数据都做过验证集为止,即可得到n组模型的结果,再取其平均值作为最终结果。又称为n折交叉验证。

网格搜索

调参数:k-近邻的超参数K

  • 思想

    通常情况下,很多参数需要手动指定(如k-近邻算法中的K值),这种叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。

  • API

    sklearn.model_selection.GridSearchCV(estimator, param_grid=None, cv=None)

    • 对估计器的指定参数值进行详尽搜索

    • estimator: 估计器对象

    • param_grid: 估计器参数(dict){'n_neighbors':[1,3,5]}

    • cv: 指定几折交叉验证

    • fit:输入训练数据

    • score:准确率

    • 结果分析:

    • best_score_: 在交叉验证中验证的最好结果

    • best_estimator_: 最好的参数模型

    • cv_results: 每次交叉验证后的测试集准确率结果和训练集准确率结果

集成学习方法:随机森林

  1. 随机森林

    集成学习方法:集成学习方法通过建立几个模型组合来解决单一预测问题。他的工作原理是生成多个分类器。各自独立地学习和作出预测。这些预测最后结合成单预测,因此由于任何一个但分类的作出预测。

    随机森林: 在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别输出的类别的众数而定。

    如:5个数,其中4个为True,1个为False,则结果为True

  2. 过程

    对于N个样本,M个特征

    单个数建立:1. 随机在N个样本中选择一个样本,重复N次(样本可能重复)

    2.随机在M个特征中选择m个特征

    建立10颗决策树,样本,特征大多不一样。且在抽取中是随机有放回的抽样(bootstrap抽样)

  3. API

    class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, bootstrap=True, random_state=None)

    • n_estimators:随机森林分类器,integer,optional(default=10) 森林里的树木数量 120,200,300,500,800,1200

    • max_depth:integer或None,可选(默认=无) 树的最大深度,5,8,15,25,30

    • max_features='auto',每个决策树的最大特征数量

  4. 优点

  • 在当前所有算法中,准确率最好

  • 能够有效运行在大数据集上

  • 能够处理具有高维持的输入样本,而且不需要降维

  • 能够评估各个特征在分类问题上的重要性

回归算法

线性回归

通过一个或者多个自变量与因变量之间进行建模的回归分析。其中可以为一个或多个自变量之间的线性组合(线性回归的一种)

一元线性回归:涉及到的变量只有一个

多元线性回归:涉及到的变量两个或多个

通用公式:

,其中,为矩阵:,

线性关系模型

一个通过属性的线性组合来进行预测的函数:

w为权重,b为偏置项,可以理解为:w0 x 1

  • 二维:直线关系 y=kx+b

  • 三维:特征,目标值,平面关系

损失函数(误差大小)

  1. 定义:最小二乘法

  1. 方法

  • 正规方程

    ,为特征值矩阵,为目标值矩阵
  • 梯度下降

    思想:沿着函数下降的方向找,最后就能找到山谷的最低点,然后更新w值。

    使用:面对训练数据规模十分庞大的任务

  1. API

    特点:线性回归器是最为简单、易用的回归模型。从某种程度上限制了使用,尽管如此,在不知道特征之间关系的前提下,我们仍然使用线性回归器作为大多数系统的首要选择。

  • sklearn.linear_model.LinearRegression() 普通最小二乘线性回归,coef:回归系数

    场景:小规模数据,不能解决拟合问题)

  • sklearn.linear_model.SGDRegressor() 通过使用SGD最小化线性模型,coef:回归系数

    场景:大规模数据

  1. 回归性能评估

    (均方误差MSE)评价机制:

    为预测值,为真实值。

    API:mean_squred_error(y_true, y_pred) 均方差回归损失

    • y_true:真实值

    • y_pred: 预测值

    • return: 浮点数结果

      注:真实值、预测值均为标准化之前的值。

  2. 解决模型复杂(或过拟合)的方法

    L2正则化

    作用:可以使得W的每个元素都很小,都接近于0

    优点:越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象

Ridge:岭回归(带有正则化的回归)

  • API

    sklearn.linear_model.Ridge(alpha=1.0)

    • alpha: 正则化力度

    • coef_:回归系数

  • 1人 Love
  • 0人 Haha
  • 0人 Wow
  • 0人 Sad
  • 0人 Angry
人工智能、机器学习

作者简介: caid

共 2 条评论关于 “机器学习基础篇_2/2”

Loading...