-
机器学习源代码
2014-03-24 00:38:35机器学习源代码里面拥有有关机器学习的具体实现方法以及各种算法 -
机器学习(6)-提升方法的理解与代码实现
2020-05-15 15:45:58这篇文章将从以下四个方面讲解机器学习中的提升方法,完整的代码我整理在我的GitHub项目中,可以自行前往下载,要是能star就更好了呀~ 提升方法提升方法的基本思想Adaboost方法提升树代码实现 提升方法的基本思想 ...这篇文章将从以下四个方面讲解机器学习中的提升方法,完整的代码我整理在我的GitHub项目Machine-Learning-code中,可以自行前往下载,要是能star就更好了呀~
提升方法的基本思想
依旧从三个方面理解提升方法,然后从抽象到具体,给出提升方法的两个具体实例Adaboost方法和提升树,进一步加深对提升方法的理解
模型:提升方法的基本模型是加法模型,既可以用作分类也可以用作回归,取决于基本函数,模型可以用数学表达式表示为:
其中为基函数,为基函数的参数,为基函数的系数,通过上面的式子我们可以这样理解提升方法:原来的数据没有办法通过一个分类(回归)器解决,可以通过多个分类(回归)器各自解决一部分数据,然后通过不同的系数将这些分类(回归)器组合在一起,从而达到提升原来的分类(回归)器的效果
策略:提升方法的策略就是在给定损失函数的情况下,使经验风险最小化,即:
不同的损失函数和基函数组合就可以得到不同的提升方法,Adaboost方法和提升回归树方法就是损失函数分别取指数函数和平方损失函数得到的特例
算法:要求解上述最下化问题比较复杂,因为涉及到多个基函数的参数和系数,因此我们采用前向分步算法来求解上述问题,因为模型是加法模型,我们可以从前向后,每次只求解一个基函数和对应的系数,然后固定前面的基函数和系数求解后面的函数和系数,这样逐步逼近优化目标函数,这样在具体的第m步我们只需要求解下面的损失函数:
Adaboost方法
我们取损失函数为对数损失函数:
基函数为分段函数:
就可以得到adaboost方法,运用前向分步算法求解损失函数最小化,整理后可以得到如下求解过程:
提升树
这里我们以提升回归树举例,首先写出提升算法的模型表示:
这里为决策树,我们取只有两个叶节点的简单决策树,然后损失函数取平方损失函数,利用前向分步算法,得到每一步需要优化的函数:
其中,为当前模型预测的误差,所以对决策树来说只需要拟合误差就可以了,于是可以得到下面的求解算法:
如何拟合误差呢,尝试不同的决策点,取使得平方损失最小的决策点即可代码实现
下面主要给出训练过程的代码:
def train(self): predict = np.zeros(self.n) for i in range(self.treenum): tree = {'e': 1} for r in self.rule: if r == 'lessOne': L, H = 1, -1 else: L, H = -1, 1 for d in self.div: for i in range(self.m): #计算误差率和Gm(x)的输出 Gx, e = self.cal_E_Gx(L, H, d, i) if e < tree['e']: tree['div'] = d tree['rule'] = r tree['feature'] = i tree['e'] = e tree['Gx'] = Gx e = tree['e'] #计算alpha alpha = 1 / 2 * np.log((1-e) / e) tree['alpha'] = alpha Gx = tree['Gx'] #更新权重 self.W = self.W * np.exp(-alpha * self.label * Gx) self.W /= sum(self.W) predict += alpha * Gx self.trees.append(tree) if sum((np.sign(predict) != self.label).astype('int')) == 0: break print('total tree num is {}'.format(len(self.trees)))
完整代码可以去我的GitHub项目Machine-Learning-code中下载,欢迎star~
-
重磅推荐《南瓜书》:周志华《机器学习》的代码实现
2019-04-03 21:37:37有个非盈利的开源学习组织Datawhale开源了一个github仓库:“南瓜书(PumpkinBook)”,对《机器学习》(西瓜书)里比较难理解的公式加以解析,以及对部分公式补充具体的推...有个非盈利的开源学习组织Datawhale开源了一个github仓库:“南瓜书(PumpkinBook)”,对《机器学习》(西瓜书)里比较难理解的公式加以解析,以及对部分公式补充具体的推导细节。
一、前言
周志华老师的《机器学习》(西瓜书)是机器学习领域的经典入门教材之一,周老师为了使尽可能多的读者通过西瓜书对机器学习有所了解, 所以在书中对部分公式的推导细节没有详述,但是这对那些想深究公式推导细节的读者来说可能“不太友好”。
二、南瓜书
近日有个github仓库“南瓜书(PumpkinBook)”对西瓜书里比较难理解的公式加以解析,以及对部分公式补充具体的推导细节。
该仓库拥有者Datawhale是一个非盈利的开源学习组织,致力于构建一个纯粹的学习圈子,帮助学习者更好地成长。目前已经更新完前7章,并诚挚欢迎每一位西瓜书读者前来参与完善本书:一个人可以走的很快,但是一群人却可以走的更远。
仓库链接:
https://github.com/datawhalechina/pumpkin-book
在线阅读地址:
https://datawhalechina.github.io/pumpkin-book/
三、目录
第1章 绪论
第2章 模型评估与选择
第3章 线性模型
第4章 决策树
第5章 神经网络
第6章 支持向量机
第7章 贝叶斯分类器
第8章 集成学习(即将更新)
第9章 聚类(即将更新)
第10章 降维与度量学习(即将更新)
第11章 特征选择与稀疏学习(即将更新)
第12章 计算学习理论(即将更新)
第13章 半监督学习(即将更新)
第14章 概率图模型(即将更新)
第15章 规则学习(即将更新)
第16章 强化学习(即将更新)
四、内容截图
五、致谢
感谢开源组织
的无私奉献,世界有你们更美好!
仓库链接:
https://github.com/datawhalechina/pumpkin-book
请关注和分享↓↓↓
本站的知识星球(黄博的机器学习圈子)ID:92416895
目前在机器学习方向的知识星球排名第一
往期精彩回顾
-
【机器学习】最容易实现的基于OpenCV的人脸检测代码、检测器及检测效果
2018-10-24 14:18:53基于opencv自带的人脸检测模型,实现简单的人脸检测功能,可作为机器学习初学者练手使用。简单易学,具体的方法及代码如下。 1、运行结果 输入原图 输出结果 2、工程需要加载的opencv库如下: 3、用到的...基于opencv自带的人脸检测模型,实现简单的人脸检测功能,可作为机器学习初学者练手使用。简单易学,具体的方法及代码如下。
1、运行结果
输入原图
输出结果
2、工程需要加载的opencv库如下:
3、用到的人脸检测器
4、具体实现代码
#include <opencv.hpp> #include <opencv2/core/core.hpp> #include <iostream> using namespace cv; using namespace std; #define MULTI_TARGET //控制切换检测目标数 int main() { CascadeClassifier faceDetector; string faceCascadeFilename = "haarcascade_frontalface_default.xml"; faceDetector.load(faceCascadeFilename); //加载人脸检测器 if (faceDetector.empty()) { cout<<"load faceDetector failed!"<<endl; return -1; } Mat srcImg = imread("..\\srcImg.jpg"); if(srcImg.empty()) { cout<<"read image failed!"<<endl; return -1; } imshow("srcImg", srcImg); Mat grayImg; cvtColor(srcImg, grayImg, CV_RGB2GRAY); //转成灰度图 vector<Rect> detectionResults; float searchScaleFactor = 1.1f; int minNeighbors = 3; Size minFeatureSize(25, 25); #ifdef MULTI_TARGET int flags = CASCADE_SCALE_IMAGE; //检测多个目标 #else int flags = CASCADE_FIND_BIGGEST_OBJECT|CASCADE_DO_ROUGH_SEARCH; //只检测最大目标 #endif faceDetector.detectMultiScale(grayImg, detectionResults, searchScaleFactor, minNeighbors, flags, minFeatureSize); //进行人脸检测 Mat dstImg = srcImg.clone(); Mat detectionRect; for (int i = 0; i < detectionResults.size(); i++) { if (detectionResults[i].height > 0 && detectionResults[i].width > 0) { detectionRect = grayImg(detectionResults[i]); rectangle(dstImg, detectionResults[i], CV_RGB(0, 255, 0), 2, 8, 0); //画检测框 } } imshow("dstImg", dstImg); waitKey(0); return 0; }
-
【机器学习基础】常见的距离度量&二分类损失函数的公式和python代码实现
2020-11-21 17:00:24具体见链接:距离度量&二分类损失函数的公式和python代码实现 文章来源于微信公众号【机器学习初学者】具体见链接:距离度量&二分类损失函数的公式和python代码实现
文章来源于微信公众号【机器学习初学者】
-
吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进
2020-08-03 21:06:14前几次笔记介绍了具体实现一个机器学习模型的时候应该如何操作,首先是快速实现一个较为简单的模型,然后通过绘制学习曲线去判断目前的模型存在什么问题,分析应该如何改进,这次笔记就将实现这一整个过程。... -
(github标星9200+)《南瓜书》:周志华《机器学习》的代码实现
2019-10-10 09:30:00有个非盈利的开源学习组织Datawhale开源了一个github仓库:“南瓜书(PumpkinBook)”,对《机器学习》(西瓜书)里比较难理解的公式加以解析,以及对部分公式补充具体的推... -
【机器学习】--xgboost初始之代码实现分类
2018-06-18 17:31:00二、具体 1、安装 默认可以通过pip安装,若是安装不上可以通过https://www.lfd.uci.edu/~gohlke/pythonlibs/网站下载相关安装包,将安装包拷贝到Anacoda3的安装目录的Scrripts目录下, 然后pip install 安装包安装... -
机器学习调包侠:6行代码实现分类器
2019-12-26 16:50:38另外,看系列名字就知道,本系列只介绍现有的框架的用法,不涉及具体算法,并不适合想深入学习的同学,如果你只是想用别人写好的算法框架来实现一些有意思的想法,那么不妨来试试看。 环境搭建 本例主要使用scikit-... -
代码实现usb管控方法_机器学习第9天:模型评价方法及代码实现
2020-11-28 09:33:56这里先引入模型评价相关的概念以及相应的公式,让大家一个大概的理解,知道有这么一回事,在后续文章中我将结合具体实例进行详细的讲解。一、分类评价指标混淆矩阵TP: 将正例预测为正例(预测正确)FN: 将正例预测为... -
python机器学习实现决策树
2021-01-02 15:48:25本文实例为大家分享了python机器学习实现决策树的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- Created on Sat Nov 9 10:42:38 2019 @author: asus 决策树 目的: 1. 使用决策树模型 2. 了解... -
机器学习—决策树原理(python代码实现)
2019-03-13 15:30:02决策树的学习通常包含三个步骤:特征选择,决策树的生成,决策树的剪枝。 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失值不敏感,可以处理不相关特征数据。 缺点:可能会产生过度匹配的问题。 使用... -
机器学习算法实现解析——libFM之libFM的训练过程之SGD的方法
2017-06-15 18:56:28本节主要介绍的是libFM源码分析的第五部分之一——libFM的训练过程之SGD的方法。5.1、基于梯度的模型训练方法在libFM中,提供了两大类的模型训练方法...fm_learn_sgd类是所有基于梯度的训练方法的父类,其具体的代码如 -
-
knn算法python代码_机器学习算法之k-means(k均值)Python代码实现
2020-11-27 02:05:19本文首发于csdn: https://blog.csdn.net/varyshare/article/details/90576115初学者机器学习资料分享Q群(718566626)k-means算法中文名叫做k均值。它是一种聚类算法,这是什么意思呢?就是现在我有一堆数据,但是我... -
【机器学习1】真·一行代码实现knn分类 -- r语言代码手把手教学步骤
2020-06-03 07:29:47k最邻近法之应用篇–分类问题 Keyword:knn算法,机器学习,数据可视化 目录k最邻近法之应用篇--分类问题Introduction1 数据观测、数据可视化1.1 探索数据1.2 ...【机器学习0】最简单的机器学习算法之一 KNN–k最邻近 -
lihang-code:《统计学习方法》的代码实现-源码
2021-02-09 19:11:21《统计学习方法》第二版的代码实现 李航老师编写的《统计学习方法》全面系统地介绍了统计学习的主要方法,特别是监督学习方法,包括感知机,k近邻法,朴素贝叶斯法,决策树,逻辑斯谛回归与支持除第1章概论和最后一... -
适合初学者易懂的机器学习算法之k-means(k均值)Python代码实现
2019-05-26 14:55:09但是具体每一个数据点所属分类我就不知道了。此时就需要用k-means聚类算法,它可以把原先的数据分成k个部分,注意这k个部分包含的数据点的数量不一定相等的。相似的数据就聚在一起。 k-means算法操作步骤 1. 设定k的... -
机器学习之K近邻算法的简单实现
2019-09-29 15:18:43最近开始啃《机器学习实战》,把其中第二章的K近邻算法的代码笔记整理如下。 kNN分类算法: 对未知类别属性的数据集中的每个点依次执行以下操作: 1.计算已知类别数据集中的点与当前点的距离; 2.按照距离递增... -
机器学习—AdaBoost算法原理及代码实现二分类问题2
2019-06-01 17:33:30上一篇具体按照第一个链接,介绍了训练强分类器的过程; 本篇文章,mask另一段代码,并用强分类器进行分类,验证分类结果。 1.创建数据集和标签 def create_dataMat(): dataMat = mat([[0],[1],[2],[3],[4],[5]]) ... -
机器学习实战:python算法代码汇总
2017-08-02 10:02:25这是是在学习《机器学习实战》这本书时的代码记录情况,用python实现,当然也会包括一些其他的机器学习算法,使用Python实现。 1:【关联规则】Apriori算法分析与Python代码实现,具体分析请参考... -
机器学习 - [源码实现决策树小专题]决策树如何分裂以拓展节点(以及在不允许调用sklearn等库的源代码实现)
2021-03-18 10:45:15机器学习 - 决策树如何分裂以拓展节点 【导读】:节点的分裂是决策树建立重要的一个...具体实现方法以及教程请依据链接跳转到对应的博文进行查看。 博文1:混杂度的计算及其编程实现 def impurity(anArray, impurity -
机器学习-K均值聚类(python3代码实现)
2018-02-27 16:00:29K均值聚类 哈尔滨工程大学-537 ...然后将数据集中的每个点分配到一个簇,具体来讲,为每个点找距其最近的质心,并将其分配给该之心所对应的簇。这一步完成后,每个簇的质心更新为该簇所有点... -
机器学习—有监督学习—决策树(入门理解与调库代码实现)
2019-07-27 11:20:50具体过程如下。当构建好决策树后,当有新的信息发送时,利用已有的决策树逻辑对新的信息结构进行判断。当信息的内容与决策树一致时,就进入下一分支进行判断,并通过叶子节点获得分类的结果。 三、决策树常用算法 1... -
有一个100行matlib代码(瑾瑾知道是机器视觉方面的产物,没有具体代码)需要转换成C++代码的任务,要实现的话...
2013-08-26 00:24:30瑾瑾知道这个任务跟OpenCV和Matlib有关,需要转换成C++代码(纯代码,不是使用什么接口之类的东西). 这个对我来说很重要,但是我对于这个一点都不清楚,我需要的是要做到这个任务需要学习哪些东西,详细的有哪些方面. ...