精华内容
下载资源
问答
  • 随机森林的随机不仅体现在数据的随机抽样,还体现在决策树构造过程中特征选择候选集的随机抽样Boosting集成方法,代表算法:GBDT,适用于相对较简单的模型利用对损失函数进行求导,求极值的方式来做判...

    4d89a95f681c88bb647548a8d5d87c39.png

    树模型包括哪些?

    单棵树:决策树

    多棵树:随机森林、boost树

    Bagging集成方法,代表算法:随机森林

    适用的弱模型多是不稳定的模型,即对数据相对更加敏感的模型

    利用多棵树对样本进行训练并预测的一种分类器。随机森林的随机不仅体现在数据的随机抽样,还体现在决策树构造过程中特征选择候选集的随机抽样

    Boosting集成方法,代表算法:GBDT,

    适用于相对较简单的模型

    利用对损失函数进行求导,求极值的方式来做判断。

    xgb里的树分类器涉及到哪些?

    树模型:gbtree、dart

    线性模型:gblinear

    决策树有哪些常用的启发函数?

    ID3 最大信息增益

    C4.5 最大信息增益比

    CART 最大基尼指数(Gini)

    如何对决策树进行剪枝?

    预剪枝(Pre-Pruning)和后剪枝(Post-Pruning)

    预剪枝,即在生成决策树的过程中提前停止树的增长。

    (1)当到达一定深度的时候,停止树的生长。

    (2)当到达当前结点的样本数量小于某个阈值的时候,停止树的生长。

    (3)计算每次分裂对测试集的准确度提升,当小于某个阈值的时候,不再继续扩展。

    后剪枝,是在已生成的过拟合决策树上进行剪枝,得到简化版的剪枝决策树。

    展开全文
  • 广义来说,有三种机器学习算法1、 监督式学习工作机制:这个算法由一个目标变量或结果变量(或因变量)组成。这些变量由已知一系列预示变量(自变量)预测而来。利用这一系列变量,我们生成一个将输入值映射到期望输出...

    广义来说,有三种机器学习算法

    1、 监督式学习

    工作机制:这个算法由一个目标变量或结果变量(或因变量)组成。这些变量由已知的一系列预示变量(自变量)预测而来。利用这一系列变量,我们生成一个将输入值映射到期望输出值的函数。这个训练过程会一直持续,直到模型在训练数据上获得期望的精确度。监督式学习的例子有:回归、决策树、随机森林、K – 近邻算法、逻辑回归等。

    2、非监督式学习

    工作机制:在这个算法中,没有任何目标变量或结果变量要预测或估计。这个算法用在不同的组内聚类分析。这种分析方式被广泛地用来细分客户,根据干预的方式分为不同的用户组。非监督式学习的例子有:关联算法和 K – 均值算法。

    3、强化学习

    工作机制:这个算法训练机器进行决策。它是这样工作的:机器被放在一个能让它通过反复试错来训练自己的环境中。机器从过去的经验中进行学习,并且尝试利用了解最透彻的知识作出精确的商业判断。 强化学习的例子有马尔可夫决策过程。

    常见机器学习算法名单

    这里是一个常用的机器学习算法名单。这些算法几乎可以用在所有的数据问题上:

    线性回归

    逻辑回归

    决策树

    SVM

    朴素贝叶斯

    K最近邻算法

    K均值算法

    随机森林算法

    降维算法

    Gradient Boost 和 Adaboost 算法

    1、线性回归

    线性回归通常用于根据连续变量估计实际数值(房价、呼叫次数、总销售额等)。我们通过拟合最佳直线来建立自变量和因变量的关系。这条最佳直线叫做回归线,并且用 Y= a *X + b 这条线性等式来表示。

    理解线性回归的最好办法是回顾一下童年。假设在不问对方体重的情况下,让一个五年级的孩子按体重从轻到重的顺序对班上的同学排序,你觉得这个孩子会怎么做?他(她)很可能会目测人们的身高和体型,综合这些可见的参数来排列他们。这是现实生活中使用线性回归的例子。实际上,这个孩子发现了身高和体型与体重有一定的关系,这个关系看起来很像上面的等式。

    在这个等式中:

    Y:因变量

    a:斜率

    x:自变量

    b :截距

    系数 a 和 b 可以通过最小二乘法获得。

    参见下例。我们找出最佳拟合直线 y=0.2811x+13.9 。已知人的身高,我们可以通过这条等式求出体重。

    线性回归的两种主要类型是一元线性回归和多元线性回归。一元线性回归的特点是只有一个自变量。多元线性回归的特点正如其名,存在多个自变量。找最佳拟合直线的时候,你可以拟合到多项或者曲线回归。这些就被叫做多项或曲线回归。

    Python 代码

    #Import Library#Import other necessary libraries like pandas, numpy...from sklearn import linear_model#Load Train and Test datasets#Identify feature and response variable(s) and values must be numeric and numpy arraysx_train=input_variables_values_training_datasetsy_train=target_variables_values_training_datasetsx_test=input_variables_values_test_datasets# Create linear regression objectlinear = linear_model.LinearRegression()# Train the model using the training sets and check scorelinear.fit(x_train, y_train)linear.score(x_train, y_train)#Equation coefficient and Interceptprint("Coefficient: n", linear.coef_)print("Intercept: n", linear.intercept_)#Predict Outputpredicted= linear.predict(x_test)

    2、逻辑回归

    别被它的名字迷惑了!这是一个分类算法而不是一个回归算法。该算法可根据已知的一系列因变量估计离散数值(比方说二进制数值 0 或 1 ,是或否,真或假)。简单来说,它通过将数据拟合进一个逻辑函数来预估一个事件出现的概率。因此,它也被叫做逻辑回归。因为它预估的是概率,所以它的输出值大小在 0 和 1 之间(正如所预计的一样)。

    让我们再次通过一个简单的例子来理解这个算法。

    假设你的朋友让你解开一个谜题。这只会有两个结果:你解开了或是你没有解开。想象你要解答很多道题来找出你所擅长的主题。这个研究的结果就会像是这样:假设题目是一道十年级的三角函数题,你有 70%的可能会解开这道题。然而,若题目是个五年级的历史题,你只有30%的可能性回答正确。这就是逻辑回归能提供给你的信息。

    从数学上看,在结果中,几率的对数使用的是预测变量的线性组合模型。

    odds= p/ (1-p) = probability of event occurrence / probability of not event occurrenceln(odds) = ln(p/(1-p))logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk

    在上面的式子里,p 是我们感兴趣的特征出现的概率。它选用使观察样本值的可能性最大化的值作为参数,而不是通过计算误差平方和的最小值(就如一般的回归分析用到的一样)。

    现在你也许要问了,为什么我们要求出对数呢?简而言之,这种方法是复制一个阶梯函数的最佳方法之一。我本可以更详细地讲述,但那就违背本篇指南的主旨了。

    Python代码

    #Import Libraryfrom sklearn.linear_model import LogisticRegression#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset# Create logistic regression objectmodel = LogisticRegression()# Train the model using the training sets and check scoremodel.fit(X, y)model.score(X, y)#Equation coefficient and Interceptprint("Coefficient: n", model.coef_)print("Intercept: n", model.intercept_)#Predict Outputpredicted= model.predict(x_test)

    更进一步:

    你可以尝试更多的方法来改进这个模型:

    加入交互项

    精简模型特性

    使用正则化方法

    使用非线性模型

    3、决策树

    这是我最喜爱也是最频繁使用的算法之一。这个监督式学习算法通常被用于分类问题。令人惊奇的是,它同时适用于分类变量和连续因变量。在这个算法中,我们将总体分成两个或更多的同类群。这是根据最重要的属性或者自变量来分成尽可能不同的组别。想要知道更多,可以阅读:简化决策树 。

    展开全文
  • 十大经典算法分别为: K-means K均值(无监督算法,聚类算法,随机... 随机森林(集成算法中最简单,模型融合算法) 朴素贝叶斯 EM算法 Adaboost(集成算法之一) SVM 马尔可夫 一、算法过程 (1)随机选择...

    十大经典算法分别为:

    1. K-means K均值(无监督算法,聚类算法,随机算法) 
    2. KNN(K Nearest Neighbor) K近邻(有监督算法,分类算法) 
    3. 逻辑回归(分类算法) 
    4. 决策树(有监督算法,概率算法) 
    5. 随机森林(集成算法中最简单的,模型融合算法) 
    6. 朴素贝叶斯 
    7. EM算法 
    8. Adaboost(集成算法之一)
    9. SVM
    10. 马尔可夫 

    一、算法过程

    (1)随机选择k个初始聚类中心;

    (2)计算其他样本点与聚类中心的距离;

    (3)将最小距离的标签赋给当前样本;

    (4)更新聚类中心。

    二、基于K-means的图像分割

    基于边用边学的思想,这里做了一个图像分割项目。

    (1)距离公式:

    D(I_i, I_c) = \sqrt{ \sum_{j=1}^3 {(I_{ij} - I_{cj})^2} }

    其中i表示第i个样本,c表示第c个聚类中心;j表示rgb的第j个通道值。

    (2)终止条件是达到迭代次数。

    (3)跌倒100次后效果图:

     

    三、Python实现

    import numpy as np
    import matplotlib.pyplot as plt
    
    img = plt.imread('G:/Experiment/Machine Learning/boat.jpg')
    img_row = img.shape[0]
    img_col = img.shape[1]
    
    def knn(img, iter, k):
        img = img.reshape(-1,3) # 使二维空间,变成一维空间,避免后面计算距离时使用双层循环, 这样每一行代表不同空间的像素
        img_new = np.column_stack((img, np.ones(img_row*img_col))) # 加一列
    
        # (1) 随机选择k个像素作为初始聚类中心
        cluster_orientation = np.random.choice(img_row*img_col, k, replace=False) # 产生k索引坐标,即k个中心的位置
        cluster_center = img_new[cluster_orientation, :] # shape =(5,4)根据索引坐标,找到对应的聚类中心的rgb像素值
    
        # 迭代
        distance = [ [] for i in range(k)] # [ [], [], [], [], []]生成list,每个元素是一个列向量,该列向量保存的是所有像素距离中心j的距离
        for i in range(iter):
            # (2) 计算所有像素与聚类中心j的颜色距离
            print("迭代次数:%d" % i)
            for j in range(k):
                distance[j] = np.sqrt(np.sum(np.square(img_new - cluster_center[j]), axis=1)) # data_new.shape = (269180,4),一行的和
    
            # (3) 在当前像素与k个中心的颜色距离中,找到最小那个中心,更新图像所有像素label
            # np.array(distance).shape = (5, 269180) ,返回一列中最小值对应的索引,范围是 [0, 4], 代表不同的label
            orientation_min_dist = np.argmin(np.array(distance), axis=0)   # np.array(distance).shape = (5, 269180) 一列中最小值
            img_new[:, 3] = orientation_min_dist # shape = (269180, ), 将返回的索引列向量赋值给第4维,即保存label的第3列
            # (4) 更新第j个聚类中心
            for j in range(k):
                # np.mean(r,g,b,label),属性和label都求个平均值
                one_cluster = img_new[img_new[:, 3] == j] # 找到所有label为j的像素,其中img_new.shape = (269180,4)
                cluster_center[j] = np.mean(one_cluster, axis=0) # 通过img_new[:, 3] == j找到所有label为j的行索引(?, 4),
                # 求一列均值,这样mean_r ,mean_g_, mean_b, mean_label,一次循环得到(1,4)
    
        return img_new
    
    if __name__ == '__main__':
        labels_vector = knn(img, 100, 5)
        labels_img = labels_vector[:,3].reshape(img_row, img_col)
        plt.imshow(labels_img)
        plt.show()
    

     

     

     

     


     

     

    展开全文
  • 可用于解决分类和回归问题,简单直观、解释性强,在营销和生物医药领域特别受欢迎(树形结构在销售、诊断等场景决策过程中特别适用),将决策树应用集成学习思想可以得到随机森林、梯度提升决策树等模型。...

    决策树Decision Tree:包含特征选择、树的构造和树的剪枝三个过程,可用于解决分类和回归问题,简单直观、解释性强,在营销和生物医药领域特别受欢迎(树形结构在销售、诊断等场景的决策过程中特别适用),将决策树应用集成学习思想可以得到随机森林、梯度提升决策树等模型。实际应用过程中应根据数据类型、规模和任务的不同灵活选用决策树和剪枝策略。

     

    决策树常用的启发式函数

    • ID3:最大信息增益。倾向于取值较多的特征,反应给定条件后不确定性减少的程度,特征取值越多意味着确定性越高,也就是条件熵越小,信息增益越大。这样的划分是最优的,但是泛化能力非常弱。只能处理离散型变量。只用于分类。
    • C4.5:最大信息增益比。引入信息增益比,一定程度上对取值比较多的特征进行惩罚,避免ID3出现的过拟合特性,提高泛化能力。可处理连续型变量,对数据排序之后找到不同类别的切分点,根据切分点把连续属性转换成布尔型,从而将连续变量转换为多个取值区间的离散型变量。只用于分类。
    • CART:最大基尼系数Gini。适用于连续型变量。适用于分类和回归,回归树使用最小平方误差准则。形成一棵二叉树,特征可被重复使用

     

    完全生长的决策树每个叶节点只包含一个样本,这导致决策树是过拟合的,为提高泛化能力,我们需要对决策树进行剪枝提高泛化能力。

    预剪枝Pre-Pruning,生成决策树的过程中提前停止树的增长。在树中结点扩展之前,计算当前模型是否能够带来模型泛化能力的提升,如果不能,就不再生长子树。此时可能不同类别的样本都处于该节点中,按照多数投票原则决定该节点的所属类别。根据经验决定何时停止生长,存在一定的欠拟合风险。一般有三种方法:

    • 到达一定的深度阈值。
    • 到达当前节点样本数量的最小阈值。
    • 计算每次分裂对测试及准确度的提升,到达准确度提升的最小阈值。

    后剪枝Post-Pruning,在已生成的过拟合决策树上剪枝。后剪枝从底层向上计算是否剪枝,一般也是通过准确率来决定。相比于预剪枝,后剪枝可以得到泛化能力更强的决策树,但时间开销会更大一点。常用的后剪枝方法包括:

    • 错误率降低剪枝
    • 悲观剪枝
    • 代价复杂度剪枝
    • 最小误差剪枝
    • ……

     

     

    展开全文
  • 双指针问题包括(前向型指针(滑动窗口(将O(n ^ 2)算法生成O(n)的算法)和快慢指针两类),相向型指针(O(n)),两个数组(典型译文为mergesort中的merge过程)三种大类) 前缀和 一个二进位前缀和 二维前缀...
  • 教你手推机器学习算法公式,理论+实战讲解SVM与XGBoost应用 学习算法的过程,获得不应该只有算法理论,还应该有乐趣和解决实际...SVM和XGBoost可以说是机器学习技术里最经典的两个模型了,面试也是频频出现,但是
  • 1、 如果线性回归模型中的随机误差存在异方差性,那么参数的OLS估计量是( ) A 无偏的,有效的 B 无偏的,非有效的 C 有偏的,有效的 D 有偏的,非有效的 正确答案是:B 解析: OLS即普通最小二乘法。由高斯—...
  • 集成学习在机器学习中有较高准确率,不足之处就是模型训练过程比较复杂,效率不是很高;主要分为两种类型: (1)基于boosting思想的算法,例如:Adaboost、GDBT和XGBOOST。 (2)基于Bagging思想的算法经典...
  • K-means是划分方法经典的聚类算法之一。由于算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。 K-means算法以K为参数,把n个对象分成K个簇,使簇内具有较...
  • K-Means 是一种最经典和常用聚类方法。它通过多轮迭代方式不断更新不同类样本中心...本案例,我们首先使用 Python 实现 K-Means 算法,基于一份随机数据集,使用动画演示聚类过程和优化目标变化。然后将 K...
  • 文章目录5.1....K-means通常被称为劳埃德算法,这在数据聚类是最经典的,也是相对容易理解模型。算法执行的过程分为4个阶段。 1.首先,随机设K个特征空间内点作为初始聚类中心。 2.然后,对于...
  • K-means 通常被称为劳埃德算法, 这在数据聚类是最经典的, 也是相对容易理解模型. 算法执行的过程分为 4 个阶段. 首先, 随机设 K 个特征空间内点作为初始聚类中心 然后, 对于根据每个数据特征向量, 从 K ...
  • ID3算法详解及python实现

    千次阅读 2017-08-27 16:45:39
    决策树算法机器学习中算是很经典的算法系列。它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林。本文就对决策树算法ID3思想做个总结。 ID3算法的信息论基础 1970年代,一个叫昆兰...
  • 遗传算法的寻优过程带有一定程度的随机性和盲从性,多数情况下只能收敛到全局次优解,且有过早收敛的现象.为了克服遗传算法寻优过程的盲从性,将有监督学习的BP算法与之结合以达到优势互补、提高算法的稳定性和全局...

空空如也

空空如也

1 2 3 4 5
收藏数 100
精华内容 40
关键字:

机器学习经典算法中的随机过程