-
模型算法_机器学习经典算法之 树模型
2021-01-05 11:01:45随机森林的随机不仅体现在数据的随机抽样,还体现在决策树构造过程中特征选择候选集的随机抽样Boosting集成方法,代表算法:GBDT,适用于相对较简单的模型利用对损失函数进行求导,求极值的方式来做判...树模型包括哪些?
单棵树:决策树
多棵树:随机森林、boost树
Bagging集成方法,代表算法:随机森林
适用的弱模型多是不稳定的模型,即对数据相对更加敏感的模型
利用多棵树对样本进行训练并预测的一种分类器。随机森林的随机不仅体现在数据的随机抽样,还体现在决策树构造过程中特征选择候选集的随机抽样
Boosting集成方法,代表算法:GBDT,
适用于相对较简单的模型
利用对损失函数进行求导,求极值的方式来做判断。
xgb里的树分类器涉及到哪些?
树模型:gbtree、dart
线性模型:gblinear
决策树有哪些常用的启发函数?
ID3 最大信息增益
C4.5 最大信息增益比
CART 最大基尼指数(Gini)
如何对决策树进行剪枝?
预剪枝(Pre-Pruning)和后剪枝(Post-Pruning)
预剪枝,即在生成决策树的过程中提前停止树的增长。
(1)当树到达一定深度的时候,停止树的生长。
(2)当到达当前结点的样本数量小于某个阈值的时候,停止树的生长。
(3)计算每次分裂对测试集的准确度提升,当小于某个阈值的时候,不再继续扩展。
后剪枝,是在已生成的过拟合决策树上进行剪枝,得到简化版的剪枝决策树。
-
机器算法有哪几种 python_机器学习10种经典算法的Python实现
2020-12-08 14:11:30广义来说,有三种机器学习算法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 (图像分割,python)
2019-04-11 16:57:41十大经典算法分别为: K-means K均值(无监督算法,聚类算法,随机... 随机森林(集成算法中最简单的,模型融合算法) 朴素贝叶斯 EM算法 Adaboost(集成算法之一) SVM 马尔可夫 一、算法过程 (1)随机选择...十大经典算法分别为:
- K-means K均值(无监督算法,聚类算法,随机算法)
- KNN(K Nearest Neighbor) K近邻(有监督算法,分类算法)
- 逻辑回归(分类算法)
- 决策树(有监督算法,概率算法)
- 随机森林(集成算法中最简单的,模型融合算法)
- 朴素贝叶斯
- EM算法
- Adaboost(集成算法之一)
- SVM
- 马尔可夫
一、算法过程
(1)随机选择k个初始聚类中心;
(2)计算其他样本点与聚类中心的距离;
(3)将最小距离的标签赋给当前样本;
(4)更新聚类中心。
二、基于K-means的图像分割
基于边用边学的思想,这里做了一个图像分割项目。
(1)距离公式:
其中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()
-
【机器学习的一些问题】经典算法之决策树
2019-06-02 16:08:03可用于解决分类和回归问题,简单直观、解释性强,在营销和生物医药领域特别受欢迎(树形结构在销售、诊断等场景的决策过程中特别适用),将决策树应用集成学习思想可以得到随机森林、梯度提升决策树等模型。...决策树Decision Tree:包含特征选择、树的构造和树的剪枝三个过程,可用于解决分类和回归问题,简单直观、解释性强,在营销和生物医药领域特别受欢迎(树形结构在销售、诊断等场景的决策过程中特别适用),将决策树应用集成学习思想可以得到随机森林、梯度提升决策树等模型。实际应用过程中应根据数据类型、规模和任务的不同灵活选用决策树和剪枝策略。
决策树常用的启发式函数
- ID3:最大信息增益。倾向于取值较多的特征,反应给定条件后不确定性减少的程度,特征取值越多意味着确定性越高,也就是条件熵越小,信息增益越大。这样的划分是最优的,但是泛化能力非常弱。只能处理离散型变量。只用于分类。
- C4.5:最大信息增益比。引入信息增益比,一定程度上对取值比较多的特征进行惩罚,避免ID3出现的过拟合特性,提高泛化能力。可处理连续型变量,对数据排序之后找到不同类别的切分点,根据切分点把连续属性转换成布尔型,从而将连续变量转换为多个取值区间的离散型变量。只用于分类。
- CART:最大基尼系数Gini。适用于连续型变量。适用于分类和回归,回归树使用最小平方误差准则。形成一棵二叉树,特征可被重复使用。
完全生长的决策树每个叶节点只包含一个样本,这导致决策树是过拟合的,为提高泛化能力,我们需要对决策树进行剪枝提高泛化能力。
预剪枝Pre-Pruning,生成决策树的过程中提前停止树的增长。在树中结点扩展之前,计算当前模型是否能够带来模型泛化能力的提升,如果不能,就不再生长子树。此时可能不同类别的样本都处于该节点中,按照多数投票原则决定该节点的所属类别。根据经验决定何时停止生长,存在一定的欠拟合风险。一般有三种方法:
- 到达一定的深度阈值。
- 到达当前节点样本数量的最小阈值。
- 计算每次分裂对测试及准确度的提升,到达准确度提升的最小阈值。
后剪枝Post-Pruning,在已生成的过拟合决策树上剪枝。后剪枝从底层向上计算是否剪枝,一般也是通过准确率来决定。相比于预剪枝,后剪枝可以得到泛化能力更强的决策树,但时间开销会更大一点。常用的后剪枝方法包括:
- 错误率降低剪枝
- 悲观剪枝
- 代价复杂度剪枝
- 最小误差剪枝
- ……
-
算法:算法竞赛,Leetcode解决方案,数据库的机器学习算法和SQL解决方案-源码
2021-01-28 10:24:05双指针问题包括(前向型指针(滑动窗口(将O(n ^ 2)算法生成O(n)的算法)和快慢指针两类),相向型指针(O(n)),两个数组(典型译文为mergesort中的merge过程)三种大类) 前缀和 一个二进位前缀和 二维前缀... -
教你手推机器学习算法公式,理论+实战讲解SVM与XGBoost的应用
2021-03-15 16:08:15教你手推机器学习算法公式,理论+实战讲解SVM与XGBoost的应用 学习算法的过程,获得的不应该只有算法理论,还应该有乐趣和解决实际...SVM和XGBoost可以说是机器学习技术里最经典的两个模型了,面试中也是频频出现,但是 -
机器学习算法工程师--刷题1000题
2020-10-07 12:54:561、 如果线性回归模型中的随机误差存在异方差性,那么参数的OLS估计量是( ) A 无偏的,有效的 B 无偏的,非有效的 C 有偏的,有效的 D 有偏的,非有效的 正确答案是:B 解析: OLS即普通最小二乘法。由高斯—... -
-
-
-
集成学习算法-Bagging和Boosting及其相关算法概述
2018-07-24 19:12:48集成学习在机器学习中有较高的准确率,不足之处就是模型的训练过程比较复杂,效率不是很高;主要分为两种类型: (1)基于boosting思想的算法,例如:Adaboost、GDBT和XGBOOST。 (2)基于Bagging思想的算法,经典... -
-
-
机器学习(二)KNN与Kmeans的面试题整理
2019-01-23 01:44:34K-means是划分方法中较经典的聚类算法之一。由于算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。 K-means算法以K为参数,把n个对象分成K个簇,使簇内具有较... -
-
-
k折交叉验证法python实现_机器学习直播案例|K-Means 的 Python 实现及在图像分割和新闻聚类中的应用
2020-11-27 06:20:23K-Means 是一种最经典和常用的聚类方法。它通过多轮迭代的方式不断更新不同类样本的中心...本案例中,我们首先使用 Python 实现 K-Means 算法,基于一份随机数据集,使用动画演示聚类过程和优化目标的变化。然后将 K... -
-
【机器学习笔记day27】5.1. 非监督学习之k-means
2020-02-01 19:30:13文章目录5.1....K-means通常被称为劳埃德算法,这在数据聚类中是最经典的,也是相对容易理解的模型。算法执行的过程分为4个阶段。 1.首先,随机设K个特征空间内的点作为初始的聚类中心。 2.然后,对于... -
机器学习进阶 第二节 第七课
2020-12-17 13:58:47K-means 通常被称为劳埃德算法, 这在数据聚类中是最经典的, 也是相对容易理解的模型. 算法执行的过程分为 4 个阶段. 首先, 随机设 K 个特征空间内的点作为初始的聚类中心 然后, 对于根据每个数据的特征向量, 从 K ... -
-
-
-
-
-
ID3算法详解及python实现
2017-08-27 16:45:39决策树算法在机器学习中算是很经典的算法系列。它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林。本文就对决策树算法ID3思想做个总结。 ID3算法的信息论基础 1970年代,一个叫昆兰... -
-
[MATLAB智能算法30个案例分析].史峰
2014-08-14 11:51:33遗传算法的寻优过程带有一定程度的随机性和盲从性,多数情况下只能收敛到全局次优解,且有过早收敛的现象.为了克服遗传算法寻优过程的盲从性,将有监督学习的BP算法与之结合以达到优势互补、提高算法的稳定性和全局... -
-