[置顶] 《Python机器学习算法》的写作历程

最近有两个多月的时间没来更新博客,是一直在忙着一件事——将博客中的一些文章整理成书。一开始写博客,给自己的文章建了一个响亮的标题《简单易学的机器学习算法》,但是发现写着写着,每一个算法也变得没那么简单易学,因此想对这些零散的知识点做一次全面的整理。最初是一年前有了这个念头,一直没有去实践,自己给自己找了很多的借口,今年8月份,这个念头又一次那么强烈的袭上心头,没有太多思考,说干就干。。。决定了,但是...
阅读(1701) 评论(9)

[置顶] 新的10大数据挖掘、机器学习算法

一、原来的10大算法 2006年,IEEE的数据挖掘会议选出了10大算法:[见点击打开链接] C4.5k-MeansSupport Vector Machines(SVM)AprioriExpectation Maximization(EM)PageRankAdaBoostk-Nearest Neighbors(kNN)Naive BayesClassification and Regre...
阅读(3380) 评论(0)

机器学习算法实现解析——liblbfgs之L-BFGS算法

在博文“优化算法——拟牛顿法之L-BFGS算法”中,已经对L-BFGS的算法原理做了详细的介绍,本文主要就开源代码liblbfgs重新回顾L-BFGS的算法原理以及具体的实现过程,在L-BFGS算法中包含了处理L1正则的OWL-QN算法,对于OWL-QN算法的详细原理,可以参见博文“优化算法——OWL-QN”。 1、liblbfgs简介liblbfgs是L-BFGS算法的C语言实现,用于求解非线性优...
阅读(22) 评论(0)

算法类面试题解析——美团2016校招:棋子翻转

题目来自伯乐在线,欢迎有不同答案的同学来一起讨论。 分析: 本题主要是二维数组的操作,对指定的位置上的数字进行翻转,其具体过程如下所示: 方法: void do_reverse(int **a, int k, int i, int j){ if (i >= 0 && i =0 && j < k){ int v = *((int*)a + k*i + j);...
阅读(92) 评论(0)

挑战数据结构与算法面试题——80题全解析(三)

题目来源“数据结构与算法面试题80道”。这是第三部分,包含其中的第11题到第15题。 在此给出我的解法,如你有更好的解法,欢迎留言。...
阅读(121) 评论(0)

挑战数据结构与算法面试题——80题全解析(一)

题目来源“数据结构与算法面试题80道”。...
阅读(2709) 评论(8)

机器学习算法实现解析——libFM之libFM的训练过程之Adaptive Regularization

本节主要介绍的是libFM源码分析的第五部分之二——libFM的训练过程之Adaptive Regularization的方法。5.3、Adaptive Regularization的训练方法5.3.1、SGD的优劣在“机器学习算法实现解析——libFM之libFM的训练过程之SGD的方法”中已经介绍了基于SGD的FM模型的训练方法,SGD的方法的最大优点是其训练过程很简单,只需在计算的过程中求解损...
阅读(567) 评论(0)

机器学习算法实现解析——libFM之libFM的训练过程之SGD的方法

本节主要介绍的是libFM源码分析的第五部分之一——libFM的训练过程之SGD的方法。5.1、基于梯度的模型训练方法在libFM中,提供了两大类的模型训练方法,一类是基于梯度的训练方法,另一类是基于MCMC的模型训练方法。对于基于梯度的训练方法,其类为fm_learn_sgd类,其父类为fm_learn类,主要关系为: fm_learn_sgd类是所有基于梯度的训练方法的父类,其具体的代码如...
阅读(1786) 评论(1)

机器学习算法实现解析——libFM之libFM的训练过程概述

本节主要介绍的是libFM源码分析的第四部分——libFM的训练。FM模型的训练是FM模型的核心的部分。4.1、libFM中训练过程的实现在FM模型的训练过程中,libFM源码中共提供了四种训练的方法,分别为:Stochastic Gradient Descent(SGD),Adaptive SGD(ASGD),Alternating Least Squares(ALS)和Markov Chain...
阅读(1223) 评论(0)

机器学习算法实现解析——libFM之libFM的模型处理部分

本节主要介绍的是libFM源码分析的第三部分——libFM的模型处理。3.1、libFM中FM模型的定义libFM模型的定义过程中主要包括模型中参数的设置及其初始化,利用模型对样本进行预测。在libFM中,首先定义FM模型,在fm_model类中实现对FM模型的定义,fm_model类在“\libfm-1.42.src\src\fm_core\fm_model.h”中。在定义fm_model类之前,...
阅读(1332) 评论(1)

Hive——巧用transform处理复杂的字符串问题

相比于Map-Reduce,Hive对数据的处理相对简单,但是Hive本身提供的函数,对于处理复杂的字符串问题,就显得不是很方便,此时,可以借助transform,引入外界的Python程序对字符串进行处理。...
阅读(535) 评论(0)

梯度下降优化算法综述

本文翻译自Sebastian Ruder的“An overview of gradient descent optimization algoritms”,作者首先在其博客中发表了这篇文章,其博客地址为:An overview of gradient descent optimization algoritms,之后,作者将其整理完放在了arxiv中,其地址为:An overview of grad...
阅读(4938) 评论(3)

C/C++——排序

在C/C++中的排序,使用到的函数主要有: sort() qsort() 下面详细分析sort()函数和qsort()函数。1、sort()函数sort()是STL中提供的算法,头文件为:#include using namespace std;函数原型如下:template void sort ( RandomAcce...
阅读(474) 评论(0)

机器学习算法实现解析——word2vec源码解析

在阅读本文之前,建议首先阅读“简单易学的机器学习算法——word2vec的算法原理”,掌握如下的几个概念: 什么是统计语言模型 神经概率语言模型的网络结构 CBOW模型和Skip-gram模型的网络结构 Hierarchical Softmax和Negative Sampling的训练方法 Hierarchical Softmax与Huffman树的关系 有了如上的一些概念,接下来就可以去读word...
阅读(5861) 评论(1)

Linux C 编程——互斥锁mutex

1、多线程的问题引入多线程的最大的特点是资源的共享,但是,当多个线程同时去操作(同时去改变)一个临界资源时,会破坏临界资源。如利用多线程同时写一个文件:#include #include #include const char filename[] = "hello";void* thread(void *id){ int...
阅读(852) 评论(0)

Linux C 编程——多线程

线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。与多进程相比,多进程具有多进程不具备的一些优点,其最重要的是:对于多线程来说,其能够比多进程更加节省资源。1、线程创建在Linux中,新建的线程并不是在原先的进程中,而是系统通过一个系统调用clone()。该系统copy了一个和原先进程完全一样的进程,并在这个进程中执行线程函数。在Linux中,通过函数pthread_create()函数实...
阅读(651) 评论(0)

C/C++——柔性数组

1、问题来源在博文数据结构和算法——kd树中,在构建kd树的过程中,有如下的一段代码:#define MAX_LEN 1024typedef struct KDtree{ double data[MAX_LEN]; // 数据 int dim; // 选择的维度 struct KDtree *left; // 左子树 struct KD...
阅读(426) 评论(0)

简单易学的机器学习算法——梯度提升决策树GBDT

梯度提升决策树(Gradient Boosting Decision Tree,GBDT)算法是近年来被提及比较多的一个算法,这主要得益于其算法的性能,以及该算法在各类数据挖掘以及机器学习比赛中的卓越表现,有很多人对GBDT算法进行了开源代码的开发,比较火的是陈天奇的XGBoost和微软的LightGBM。一、监督学习1、监督学习的主要任务监督学习是机器学习算法中重要的一种,对于监督学习,假设有mm...
阅读(2362) 评论(0)

数据结构和算法——Huffman树和Huffman编码

Huffman树是一种特殊结构的二叉树,由Huffman树设计的二进制前缀编码,也称为Huffman编码在通信领域有着广泛的应用。在word2vec模型中,在构建层次Softmax的过程中,也使用到了Huffman树的知识。在通信中,需要将传输的文字转换成二进制的字符串,假设传输的报文为:“AFTERDATAEARAREARTAREA”,现在需要对该报文进行编码。一、Huffman树的基本概念在二叉...
阅读(636) 评论(0)

数据结构和算法——kd树

一、K-近邻算法K-近邻算法是一种典型的无参监督学习算法,对于一个监督学习任务来说,其mm个训练样本为:{(X(1),y(1)),(X(2),y(2)),⋯,(X(m),y(m))}\left \{ \left ( X^{\left ( 1 \right )},y^{\left ( 1 \right )} \right ),\left ( X^{\left ( 2 \right )},y^{\lef...
阅读(1373) 评论(1)

数据结构和算法——二叉排序树

一、二叉排序树对于无序的序列“62,58,88,47,73,99,35,51,93,29,37,49,56,36,48,50”,是否存在一种高效的查找方案,使得能够快速判断在序列中是否存在指定的数值?二叉排序树是一种简单,高效的数据结构。 二叉排序树,又称为二叉查找树。二叉排序树或者是一棵空树,或者是具有以下性质的二叉树:若其左子树不为空,则左子树上的所有节点的值均小于它的根结点的值;若其右子树...
阅读(377) 评论(0)

数据结构和算法——二叉树

二叉树是使用较多的一种树形结构,如比较经典的二叉排序树,Huffman编码等,都使用到了二叉树的结构,同时,在机器学习算法中,基于树的学习算法中也大量使用到二叉树的结构,因此,我们有必要对二叉树的结构有比较详细的了解和掌握。一、二叉树的基本概念1、二叉树的概念 二叉树(Binary Tree)是包含nn个节点的有限集合,该集合或者为空集(此时,二叉树称为空树),或者由一个根节点和两棵互不相交的、...
阅读(617) 评论(0)
153条 共8页1 2 3 4 5 ... 下一页 尾页
    个人声明

    欢迎大家加群,探讨与机器学习相关技术相关的话题:


    101620539


    博客的主要内容主要是自己的学习笔记,并结合个人的理解,供各位在学习过程中参考,若有疑问,欢迎提出;若有侵权,请告知博主删除,原创文章转载还请注明出处。

    -----------------

    我写的书:

    Python机器学习算法

    购买链接:

    京东-Python机器学习算法
    个人资料
    • 访问:871818次
    • 积分:8861
    • 等级:
    • 排名:第2140名
    • 原创:151篇
    • 转载:1篇
    • 译文:1篇
    • 评论:451条
    博客专栏
    联系我
    Email:zhaozhiyong1989@126.com

    最新评论