机器学习统计学习常用知识(上)

目录

​​​感知机

定义:

学习策略:

学习算法

原始形式

对偶形式

总结:

K近邻

K近邻法算法

K近邻模型

K近邻法的实现——kd树

构造kd树

搜索kd树

总结:

朴素贝叶斯

目的:

学习与分类

朴素贝叶斯算法

贝叶斯估计:

实例:

决策树

决策树模型与学习

特征选择

决策树的生成

剪枝

CART算法——可以用来分类也可以用于回归

特征选择准则:


  1. ​​​感知机

    1. 定义:

      1. 感知机是实现二分类的线性模型。感知机的学习过程是导入误分类的损失函数,然后利用梯度下降的方法来使他达到最小值;分离超平面f(x)=sign(wx+b)    w是权重,w和b是感知机参数

    2. 学习策略:

      1. 感知机的学习——将正负实例点正确分开——求出正确分离超平面——损失函数最小(所有点距离超平面的距离之和)

    3. 学习算法

      1. 原始形式

        1. 每个点有个坐标(x_{i}y_{i}^{}x_{i}为实例点,y_{i}^{}为标记(只有1/-1)。当超平面将点都正确分开后,超平面上面的y=1,下面的y=-1.
        2. 算出每个点到超平面的距离之和为损失函数(忽略掉距离之和的分母),求出损失函数的最小值。损失函数为
        3. 求损失函数为最小值的方法为随机梯度下降法
        4. 举例:
      2. 对偶形式

        1. 思路:将w和b表示为x_{i} 和y_{i}^{} 的线性组合形式,通过求解其系数而求得w和b

        2. 举例:

    4. 总结:

      1. 感知机学习的策略就是极小化损失函数,损失函数是各分类点到超平面的总距离

      2. 原始形式中,首先任意选取一个超平面,然后随机选取一个误差点,使用随机梯度函数的方法求得其最小值。

      3.  

  2. K近邻

    1. K近邻法算法

      1. 定义:是一种基本分类与回归方法。
      2. 面对新的输入实例,在训练集中找到实例周边的K个实例,这K个实例属于哪一类,就把该输入实例分为哪一类
    2. K近邻模型

      1. 距离度量

         随着p取值的变化,距离也会发生变化。

      2. K值的选择

        1. 在应用中K通常选一个较小的数,然后用交叉验证的方式来选取最优的K值

        2. 交叉验证:将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。

      3. 分类决策规则

        1. 决策规则往往是由多数表决,由输入实例的K个邻近的训练实例多数决定输入实例的类

        2. 误分类率最小等于经验风险最小,多数表决规则等价于经验风险最小化,就要最大

    3. K近邻法的实现——kd树

      1. 目的:对训练数据进行快速K近邻搜索。

      2. 构造kd树

        1. 构造kd树相当于不断用垂直于坐标轴的超平面将K维空间切分,构成一系列的k维超矩形区域,kd树的每一个节点对应于一个k维超矩形区域。

        2. 方法:

          1. 构造根节点,根节点包括对应于包含T的k维空间的超矩形区域。

          2. ,选择x^{(1)}为坐标轴,以T中所有实例的x^{(1)}坐标的中位数为切分点,将此矩形区域划分为两个子区域,左子结点,右子结点。选取中位数的点要选择实例点。

          3. 重复第二步,在左右结点中选取x^{(l)}为切分的坐标轴,以x^{(l)}中坐标的中位数为切分点,将该矩形区域切分为两个子区域,直到没有可以切分的实例点。

        3. 搜索kd树

          1. 先以输入点所在区域的点为最近邻,同时执行下以下两个步骤

            1. 如果该结点保存的实例点比当前最近点距离目标点更近,则以该实例点为“当前最近点”。

            2. (b)当前最近点一定存在于该结点一个子结点对应的区域。检
              查该子结点的父结点的另一子结点对应的区域是否有更近的点。具体地,检查另一子结点对应的区域是否与以目标点为球心、以目标点与“当前最近点”间的距离为半径的超球体相交。如果相交,可能在另一个子结点对应的区域内存在距目标点更近的点,移动到另一个子结点。接着,递归地进行最近邻搜索;
              如果不相交,向上回退。

            3. 实例:


    4. 总结:

      1. k近邻法是基本且简单的分类与回归方法。k近邻法的基本做法是:对给定的训练实例点和输入实例点,首先确定输入实例点的k个最近邻训练实例点,然后利用这k个训练实例点的类的多数来预测输入实例点的类。
      2. k值的选择反映了对近似误差与估计误差之间的权衡,通常由交叉验证选择最优的k。常用的分类决策规则是多数表决,对应于经验风险最小化。
      3. k近邻法的实现需要考虑如何快速搜索k个最近邻点。kd树是一种便于对k维空间中的数据进行快速检索的数据结构。kd树是二叉树,表示对k维空间的一个划分,其每个结点对应于k维空间划分中的一个超矩形区域。利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。
    5. 实例

      1. import numpy as np
        from sklearn.neighbors import kneighbors_graph, KNeighborsClassifier
        from sklearn.datasets import load_wine
        from sklearn.model_selection import train_test_split
        wine = load_wine()
        X_train, X_test, y_train, y_test = train_test_split(wine.data, wine.target,
                                                    test_size=0.3,random_state=1)
        """
        在需要设置random_state的地方给其赋一个值,当多次运行此段代码能够得到完全一样的结果,
        别人运行此代码也可以复现你的过程。若不设置此参数则会随机选择一个种子,执行结果也会因此而不同了。
        虽然可以对random_state进行调参,但是调参后在训练集上表现好的模型未必在陌生训练集上表现好,
        所以一般会随便选取一个random_state的值作为参数。
        X_train, X_test, y_train, y_test  记住这个顺序!!!!!!
        """
        knn = KNeighborsClassifier(n_neighbors=1)
        knn.fit(X_train, y_train)
        print('测试数据得分: {:.2f}'.format(knn.score(X_test, y_test)))
        X_new = np.array([[13.2, 2.77, 2.51, 18.5, 96.6, 1.04, 2.55, 0.57, 1.47, 6.2, 1.05, 3.33, 820]])
        prediction = knn.predict(X_new)
        print('预测新红酒的分类为: {}'.format(wine['target_names'][prediction]))

  3. 朴素贝叶斯

     

     k为特征数量。

    1. 目的:

      1. 是基于贝叶斯定理与特征条件的独立假设的分类方法。
    2. 学习与分类

      1. 朴素贝叶斯是通过训练数据集学习联合概率分布p(x,y),具体地,可以先学先验概率分布及条件概率分布,
    3. 朴素贝叶斯算法

    4. 贝叶斯估计:

        1. k为特征数量。

    5. 实例:

      1. 朴素贝叶斯实例:

      2. 贝叶斯估计实例:

    6. 实例

      1. import numpy as np
        from sklearn.naive_bayes import GaussianNB
        from sklearn.datasets import load_wine
        from sklearn.model_selection import train_test_split
        wine = load_wine()
        X_train, X_test, y_train, y_test = train_test_split(wine.data, wine.target, random_state=0,test_size=0.3)
        
        clf = GaussianNB()
        clf.fit(X_train, y_train)
        GaussianNB()
        print('测试数据得分: {:.2f}'.format(clf.score(X_test, y_test)))
        
        X_new = np.array([[13.2, 2.77, 2.51, 18.5, 96.6, 1.04, 2.55, 0.57, 1.47, 6.2, 1.05, 3.33, 820]])
        prediction = clf.predict(X_new)
        print('预测新红酒的分类为: {}'.format(wine['target_names'][prediction]))
        #检测结果:准确率为0.94
         

  4. 决策树

    1. 决策树模型与学习

      1. 分类决策树由结点和有向边组成。节点有两种类型:内部节点和叶节点;内部节点表示一个特征或属性,叶节点表示一个类。
      2. 从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子节点;这时,每个子节点对应着该特征的一个取值。,循环往复,直到分配到叶节点的类中。
      3. 每个实例都只满足一条规则的条件。
    2. 特征选择

      1. 特征选择在于选择对训练数据具有分类能力的特征。而信息增益是方便我们判断那个特征具有更好的分类效果
      2. 信息增益

         

        经验熵
        经验熵
        1. 熵:代表随机变量不确定的程度        
        2. 经验条件熵
          经验条件熵

      3. 信息增益

        1. 定义:

        2. H(D)表示对数据集D进行分类的不确定状态,H(D|A)表示在特征A给定的条件下对数据集D进行分类的不确定性。他们的差,表示的就是由于特征A而产生的不确定性减少的程度。

    3. 决策树的生成

      1. C4.5算法

        使用信息增益比来选择特征。

    4. 剪枝

      1. 定义:

        |T|为决策树叶结点个数,t为决策树T的叶结点,该结点有N_{t}个样本点。 

        1. 从已生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶节点,从而简化分类树模型。
        2. 方法:极小化损失函数或代价函数
        3. 损失函数:
    5. CART算法——可以用来分类也可以用于回归

      1. 介绍:

        1. CART是假设决策树是二分树,内部结点特征的取值为“是”或“否”;由以下两个步骤来完成:1.构建决策树,尽可能的大;2.利用极小化损失函数来完成剪枝。

      2. 决策树的生成

        1. 回归树——对回归树用平方误差最小化准则

        2. 分类树——对分类树用基尼指数最小化准则

          1. 基尼指数

          2. 算法

      3. 剪枝:
        1. 从决策树底端开始剪枝,直到根结点,形成一个子树序列
        2. 利用交叉验证法在独立验证数据集上测试,选择最优子树
        3. 算法
          1. 标 为以t为根节点的子树的损失函数;C(t)为损失函数函数 题
    6. 特征选择准则:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值