![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Data Science:机器学习
文章平均质量分 73
图灵的猫.
给行业以ai,而不是给ai以行业
展开
-
「11」Python实战篇:利用KNN进行电影分类
上一期文章:「10」民主投票法——KNN的秘密中,我们剖析了KNN算法的本质和特点、局限。这里我们用python代码进行KNN的实现。第1部分是KNN的基础算法步骤,第2部分是一个电影分类的实战项目。OK, let's begin~KNN算法实现 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 4 import csv ...原创 2020-02-14 21:06:17 · 6641 阅读 · 2 评论 -
「07」回归的诱惑:深入浅出逻辑回归
前言上期文章:「05」回归的诱惑:一文读懂线性回归中 ,我们介绍了线性回归的原理,组成和优缺点,并探讨了回归的本质含义。在这一期,我们将从回归开始,引出一个机器学习中最重要的任务——分类。还记得我们上一节的课后题吗?其实答案很简单,任意一条线都可以把任意的数据点分为不同的类,也就是有无数个直线方程存在,这种解并没有意义。这就引出了我们的主题——分类。对于分类问题来说,不同的数据必须分为...原创 2020-01-21 18:14:11 · 2310 阅读 · 0 评论 -
「06」回归的诱惑:一文读懂线性回归(Python实战篇)
在上一篇文章「05」回归的诱惑:一文读懂线性回归里,我们详细解释了什么是线性回归,以及线性回归的特点,这一期给出实战案例的Python代码,供大家参考回归实战第一步 导入数据from collections import OrderedDictimport pandas as pd#数据集examDict={ '学习时间':[0.50,0.75,1.00,1....原创 2020-01-19 20:19:36 · 2319 阅读 · 0 评论 -
「03」机器学习、深度学习该怎样入门?
最后一步,自我实践,顾名思义就是通过代码将所学算法实现,现如今python和tensorflow的封装API以及各种库、包已经十分完善,我个人的建议是,除非是算法底层架构开发方向的人员,否则没有必要从0开始编写一个算法(比如在某本中文教材中,作者连numpy或pandas都不用),适当的借助工具,如可以让自己的学习经验更加的实用化,同时也加强对算法的理解。很多答案下的书单都很好,但并不适合所有人,如果你是数学专业,那么大多数书你并不用看,如果你和我一样是人文类专业,那么除了那些书,你还需要看很多。原创 2020-01-08 22:45:07 · 2652 阅读 · 0 评论 -
什么是数据脱敏(Data Masking)?
数据脱敏(Data Masking),又称数据漂白、数据去隐私化或数据变形。百度百科对数据脱敏的定义为:指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。生活中不乏数据脱敏的例子,比如我们最常见的火车票、电商收货人地址都会对敏感信息做处理,甚至女同志较熟悉的美颜、有些视频中的马赛克都属于脱敏。原创 2018-06-11 15:45:21 · 19101 阅读 · 0 评论 -
集成学习:Boosting与Bagging
根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类,即个体学习器间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分. 随机森林简单、容易实现、计算开销小.效果能使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升.Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重.原创 2018-06-16 19:04:21 · 712 阅读 · 0 评论 -
随机森林(Random Forest)通俗教程
作为新兴起的、高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可用来预测疾病的风险和病患者的易感性。最初,我是在参加校外竞赛时接触到随机森林算法的。最近几年的国内外大赛,包括2013年百度校园电影推荐系统大赛、2014年阿里巴巴天池大数据竞赛以及Kaggle数据科学竞赛,参赛者对随机森林的使用占有相当高的比例。原创 2018-06-16 19:27:47 · 32201 阅读 · 6 评论 -
对梯度提升树(GBDT)的通俗理解
针对这一问题,Freidman提出了梯度提升算法:利用最速下降的近似方法,即利用损失函数的负梯度在当前模型的值,作为回归问题中提升树算法的残差的近似值,拟合一个回归树。对于Boosting来说,每一步我们都会在上一轮的基础上更加拟合原数据,所以可以保证偏差(bias),所以对于每个基分类器来说,问题就在于如何选择variance更小的分类器,即更简单的分类器,所以我们选择了深度很浅的决策树。当模型越简单时,即使我们再换一组数据,最后得出的学习器和之前的学习器的差别就不那么大,模型的方差很小。原创 2018-06-16 20:07:43 · 23089 阅读 · 3 评论 -
强化学习通俗导论(一):什么是强化学习
Q Learning 的算法框架和 SARSA 类似, 也是让系统按照策略指引进行探索,在探索每一步都进行状态价值的更新。而这时,强化学习会在没有任何标签的情况下,通过先尝试做出一些行为得到一个结果,通过这个结果是对还是错的反馈,调整之前的行为,就这样不断的调整,算法能够学习到在什么样的情况下选择什么样的行为可以得到最好的结果。有一种走法是这样的,在 A 时,可以选的 (B, C, D, E),发现 D 最优,就走到 D,此时,可以选的 (B, C, F),发现 F 最优,就走到 F,此时完成任务。转载 2020-01-03 10:23:26 · 35888 阅读 · 5 评论 -
一文读懂Xgboost
xgboost算法的步骤和GB基本相同,都是首先初始化为一个常数,gb是根据一阶导数ri,xgboost是根据一阶导数gi和二阶导数hi,迭代生成基学习器,相加更新学习器。(2). GB中使用Loss Function对f(x)的一阶导数计算出伪残差用于学习生成fm(x),xgboost不仅使用到了一阶导数,还使用二阶导数。(1). xgboost在目标函数中显示的加上了正则化项,基学习为CART时,正则化项与树的叶子节点的数量T和叶子节点的值有关。对上式做二阶泰勒展开:g为一阶导数,h为二阶导数。原创 2018-06-16 23:45:44 · 1242 阅读 · 0 评论 -
SMO算法最通俗易懂的解释
SVM通常用对偶问题来求解,这样的好处有两个:1、变量只有N个(N为训练集中的样本个数),原始问题中的变量数量与样本点的特征个数相同,当样本特征非常多时,求解难度较大。2、可以方便地引入核函数,求解非线性SVM。求解对偶问题,常用的算法是SMO,彻底地理解这个算法对初学者有一定难度,本文尝试模拟算法作者发明该算法的思考过程,让大家轻轻松松理解SMO算法。文中的“我”拟指发明算法的大神。转载 2018-06-18 13:32:56 · 70783 阅读 · 25 评论 -
通俗理解Meanshift均值漂移算法
以上是官方的说法,即书上的定义,我的理解就是,在d维空间中,任选一个点,然后以这个点为圆心,h为半径做一个高维球,因为有d维,d可能大于2,所以是高维球。真正大牛的人就能创造算法,例如像meanshift,em这个样的算法,这样的创新才能推动整个学科的发展。还有的人就是把算法运用的实际的运用中,推动整个工业进步,也就是技术的进步。解释一下K()核函数,h为半径,Ck,d/nhd 为单位密度,要使得上式f得到最大,最容易想到的就是对上式进行求导,的确meanshift就是对上式进行求导.原创 2018-06-30 15:37:07 · 11666 阅读 · 4 评论 -
Coursera机器学习课后作业Matlab代码(1~9周)
这个月在coursera上开始刷ng老师的课(主要是为了复习),每一周都有编程作业,有的难度不小,有的BUG频出。我自己经常死磕半天才写出来,实在没办法了才去GITHUB上找标准答案对着改。为了方便大家检验查阅,这里放上每个周的(目前刷到第六周)MATLAB作业代码。可以用来借鉴,但不建议大家直接复制粘贴。PS. 所有代码已经submit 100%通过。想上课还没报名的同学可以申请看看。,别忘了star哦~原创 2018-06-15 21:08:22 · 6683 阅读 · 3 评论 -
机器学习tips:什么是pipeline?
一个典型的机器学习构建包含若干个过程以上四个步骤可以抽象为一个包括多个步骤的流水线式工作,从数据收集开始至输出我们需要的最终结果。因此,对以上多个步骤、进行抽象建模,简化为流水线式工作流程则存在着可行性,对利用spark进行机器学习的用户来说,流水线式机器学习比单个步骤独立建模更加高效、易用。管道机制在机器学习算法中得以应用的根源在于,参数集在新数据集(比如测试集)上的。管道机制实现了对全部步骤的流式化封装和管理()。注意:管道机制更像是编程技巧的创新,而非算法的创新。原创 2018-06-11 15:54:29 · 40663 阅读 · 1 评论 -
机器学习:维度灾难(Curse of Dimensionality)
在三维情况下,要覆盖特征空间20%的体积,则需要在每个维度上取得58%的取值范围...在维度接近一定程度时,要取得同样的训练样本数量,则几乎要在每个维度上取得接近100%的取值范围,或者增加总样本数量,但样本数量也总是有限的。换句话说,通过使用更少的特征,避免了维数灾难的发生(也即避免了高维情况下的过拟合)。维数灾难与过拟合:在上面这个分类的例子中,我们假设猫和狗图片的数量是有限的(实际上也确实如此,样本数量总是有限的),就假设有10张图片吧,接下来我们就用这仅有的10张图片来训练我们的分类器。翻译 2018-06-11 16:08:11 · 14422 阅读 · 1 评论 -
机器学习之旅:支持向量机通俗导论(理解SVM的三层境界)
支持向量机通俗导论(理解SVM的三层境界)作者:July、pluskid ;致谢:白石、JerryLead出处:结构之法算法之道blog。前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好懂,要深入学习和研究下去需花费不少时间和精力,二者这个东西也不好讲清楚,尽管网上已经有朋友写得不错了(见文末参考链接),但...转载 2018-06-05 11:40:48 · 970 阅读 · 0 评论 -
对核函数(kernel)最通俗易懂的理解
左图为原数据,右图为映射到三维的数据,可以看出:同样是降到1维,先通过Kernel映射到(Kernel是映射的内积,不要弄乱了)三维,再投影到1维,就容易分离开,这就是Kernel在PCA降维中的应用,本质还是对原有数据增加维度。在实用中,很多使用者都是盲目地试验各种核函数,并扫描其中的参数,选择效果最好的。的内积,映射函数本身仅仅是一种映射关系,并没有增加维度的特性,不过可以利用核函数的特性,构造可以增加维度的核函数,这通常是我们希望的。二维映射到三维,区分就更容易了,这是聚类、分类常用核函数的原因。原创 2018-06-07 10:23:25 · 131387 阅读 · 9 评论 -
机器学习:提升算法之Adaboost
说了这么多,也举了这么多例子,就是为了让你从细节上明白Adaboost的基本原理,博主认为理解Adaboost的两种权重的关系是理解Adaboost算法的关键所在。原创 2018-06-14 13:13:19 · 1356 阅读 · 0 评论 -
聊聊机器学习中的损失函数(hinge/soft/square/0-1)
机器学习作为一种优化方法,学习目标就是找到优化的目标函数——损失函数和正则项的组合;有了目标函数的“正确的打开方式”,才能通过合适的机器学习算法求解优化。不同机器学习方法的损失函数有差异,合理理解各种损失优化函数的的特点更有利于我们对相关算法的理解。原创 2018-06-07 14:34:10 · 10724 阅读 · 2 评论 -
深入理解目标检测与YOLO(从v1到v3)
对小目标检测,有很多新的算法,但是YOLO V3版本却做到了,它对这种距离很近的目标或者小目标有很好的鲁棒性,虽然不能百分百检测,但是这个难题得到了很大程度的解决。YOLO V2是一个纵向自上而下的网络架构,随着通道数目的不断增加,FLOPS是不断增加的,而V3网络架构是横纵交叉的,看着卷积层多,其实很多通道的卷积层没有继承性,另外,虽然V3增加了anchor centroid,但是对GT的估计变得更加简单,每个GT只匹配一个先验框,而且每个尺度只预测3个框,V2预测5个框,这样的话也降低了复杂度。原创 2018-06-14 16:20:54 · 6008 阅读 · 4 评论 -
深度学习:什么是自编码器(Autoencoder)
该过程可以看作是对输入数据的压缩编码,将高维的原始数据用低维的向量表示,使压缩后的低维向量能保留输入数据的典型特征,从而能够较为方便的恢复原始数据。例如下图所示,将手写数字图片进行编码,编码后生成的 ϕ1ϕ1, ϕ2ϕ2, ϕ3ϕ3, ϕ4ϕ4, ϕ5ϕ5, ϕ6ϕ6 较完整的保留了原始图像的典型特征,因此可较容易地通过解码恢复出原始图像。autoencoder是一种无监督的学习算法,主要用于数据的降维或者特征的抽取,在深度学习中,autoencoder可用于在训练阶段开始前,确定权重矩阵WW的初始值。原创 2018-06-14 20:25:48 · 51475 阅读 · 4 评论 -
隐马尔可夫模型通俗导论
我的机器学习教程「美团」算法工程师带你入门机器学习 以及「三分钟系列」数据结构与算法已经开始更新了,欢迎大家订阅~这篇专栏整合了这几年的算法知识,简单易懂,也将是我实体书的BLOG版。欢迎大家扫码关注微信公众号「图灵的猫」,除了有更多AI、算法、Python相关文章分享,还有免费的SSR节点和外网学习资料。其他平台(微信/知乎/B站)也是同名「图灵的猫」,不要迷路哦~...原创 2018-06-20 14:36:55 · 500 阅读 · 0 评论 -
机器学习实战系列(八):分类与回归树
课程的所有数据和代码在我的Github:Machine learning in Action,目前刚开始做,有不对的欢迎指正,也欢迎大家star。除了 版本差异,代码里的部分函数以及代码范式也和原书不一样(因为作者的代码实在让人看的别扭,我改过后看起来舒服多了)。在这个系列之后,我还会写一个scikit-learn机器学习系列,因为在实现了源码之后,带大家看看SKT框架如何使用也是非常重要的。 ...原创 2018-07-26 22:17:40 · 836 阅读 · 0 评论 -
异常检测算法:孤立森林(Isolation Forest)
比如常用的统计方法,基于分类的方法,和基于聚类的方法,这些传统算法通常是对正常的数据构建一个模型,然后把不符合这个模型的数据,认为是异常数据。预测的过程就是把测试数据在iTree树上沿对应的条件分支往下走,直到达到叶子节点,并记录这过程中经过的路径长度h(x),即从根节点,穿过中间的节点,最后到达叶子节点,所走过的边的数量(path length)。从上面的评价中来看,iForest算法在实际的应用中应该具有不错的效果,得益于随机森林的思想,能快速处理大规模的数据,在当前的大数据环境下,应该很受欢迎。原创 2018-08-01 13:24:36 · 25508 阅读 · 2 评论 -
Python机器学习基础教程(一):简介
关于这本书,其实就是一个非常实用的scikit-learn使用教程,比官方文档讲的要好而且是中文翻译,基本上机器学习该用到的库都讲到了。建议大家在阅读前至少掌握入门级的机器学习算法知识,因为这本书不讲算法和数学,只教你用Sklearn调参和模型权衡。原创 2018-08-02 19:13:46 · 6328 阅读 · 0 评论 -
什么是次梯度(次导数)
在说次梯度之前,需要先简单介绍一下导数的概念与定义。导数(英语:Derivative)是微积分学中重要的基础概念。一个函数在某一点的导数描述了这个函数在这一点附近的变化率。导数的本质是通过极限的概念对函数进行局部的线性逼近。对于一般的函数f(x)f(x),其导数为:如果不使用增量,f(x)f(x)在 x0x0处的导数 也可以定义为:当定义域内的变量 xx趋近于 x0x0时,原创 2018-08-20 21:08:18 · 17266 阅读 · 2 评论 -
机器学习之Grid Search网格搜索(自动调参)
Grid Search:一种调参手段;:在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。其原理就像是在数组里找最大值。(为什么叫网格搜索?以有两个参数的模型为例,参数a有3种可能,参数b有4种可能,把所有可能性列出来,可以表示成一个3*4的表格,其中每个cell就是一个网格,循环过程就像是在每个网格里遍历、搜索,所以叫grid search)原创 2019-01-10 13:26:30 · 59762 阅读 · 2 评论 -
FTRL在线学习算法的前世今生-从SGD到TG再到FOBOS与RDA
牛顿和拟牛顿等方法一般对于光滑的正则约束项(例如2范数)效果很好,据说是求解2范数约束的逻辑回归类问题最好的方法,应用也比较广,但是当目标函数带L1非光滑、带不可微点的约束项后,牛顿类方法比较无力,理论上需要做修改。(后面会看到其实很多都是这种混合正则化的格式,而且是有一定直观含义的)。迭代公式中:gt是loss函数(单点的loss,未加和)的subgradient,与gt相加的那一项是混合正则化项中的第二项的梯度,投影集合C是约束空间(例如可能是1范数的约束空间),跟上面介绍的投影梯度下降类似的做法。原创 2019-02-28 17:54:50 · 1845 阅读 · 0 评论 -
python中计算DataFrame,Series的数据频率
我的机器学习教程「美团」算法工程师带你入门机器学习 已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~在pa...原创 2018-07-15 13:26:51 · 8910 阅读 · 0 评论 -
机器学习实战系列(七):数值回归与预测
课程的所有数据和代码在我的Github:Machine learning in Action,目前刚开始做,有不对的欢迎指正,也欢迎大家star。除了 版本差异,代码里的部分函数以及代码范式也和原书不一样(因为作者的代码实在让人看的别扭,我改过后看起来舒服多了)。在这个系列之后,我还会写一个scikit-learn机器学习系列,因为在实现了源码之后,带大家看看SKT框架如何使用也是非常重要的...原创 2018-07-14 15:18:49 · 2409 阅读 · 1 评论 -
机器学习实战系列(六):Adaboost提升法
目前刚开始做,有不对的欢迎指正,也欢迎大家star。除了 版本差异,代码里的部分函数以及代码范式也和原书不一样(因为作者的代码实在让人看的别扭,我改过后看起来舒服多了)。在这个系列之后,我还会写一个scikit-learn机器学习系列,因为在实现了源码之后,带大家看看SKT框架如何使用也是非常重要的。Adaboost提升算法是机器学习中很好用的两个算法之一,另一个是SVM支持向量机;机器学习面试中也会经常提问到Adaboost的一些原理;原创 2018-07-13 13:56:26 · 787 阅读 · 0 评论 -
Python-Scikit learn保存机器学习训练的模型
在做模型训练的时候,尤其是在训练集上做交叉验证,通常想要将模型保存下来,然后放到独立的测试集上测试,下面介绍的是Python中训练模型的保存和再使用。scikit-learn已经有了模型持久化的操作,导入joblib即可。原创 2018-07-17 23:56:01 · 1752 阅读 · 0 评论 -
《机器学习实战》UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xae in position 199
今天做贝叶斯这一章的时候出了这个问题,Python3版本的GBK不太跳BUG,所以我特意上网查了一下,发现是文档里的“?”符号出错,作者应该打成了非英语系的符号。根据decode byte 0xae in position 199看出来好像是文件中某个字节不能解码,经过好心人的查找,是HAM的第23个文件出问题了。原创 2018-07-06 21:20:27 · 9970 阅读 · 4 评论 -
《机器学习实战》原书数据与代码(基于Python3)汇总
这次做的系列是《机器学习实战》,原书比较久远了,且代码和练习都是基于Python2,我个人是升级到了Python3,因此使用最新的版本来写这些习题。具体2和3其实在基础语法上并没有太多差别,一些高级特性比如装饰器工厂,协程,IO等Python3的新用法,一般机器学习也用不上,因为追求性能的话都会用C/C++等语言去实现,Python只是小规模的测试用。除了版本差异,代码里的部分函数以及代码范式也和原书不一样(因为作者的代码实在让人看的别扭,我改过后看起来舒服多了)。原创 2018-07-13 12:16:46 · 21784 阅读 · 6 评论 -
推荐系统:NDCG评价指标
两个最受欢迎的指标是MAP和NDCG。我们在前段时间已经使用了(MAP)。NDCG表示。两者之间的主要区别是,MAP认为是二元相关性(一个项是感兴趣的或者不感兴趣的),而NDCG允许以实数形式进行相关性打分。这种关系类似分类和回归的关系。实际当中,很难直接地优化MAP或NDCG指标,因为他们是不连续的,所以不可微。幸运的是,表明,用于排名学习的一对损失函数近似于这些指标。原创 2018-07-07 14:04:01 · 33125 阅读 · 1 评论 -
机器学习实战系列(五):SVM支持向量机
课程的所有数据和代码在我的Github:Machine learning in Action,目前刚开始做,有不对的欢迎指正,也欢迎大家star。除了 版本差异,代码里的部分函数以及代码范式也和原书不一样(因为作者的代码实在让人看的别扭,我改过后看起来舒服多了)。在这个系列之后,我还会写一个scikit-learn机器学习系列,因为在实现了源码之后,带大家看看SKT框架如何使用也是非常重要的...原创 2018-07-10 13:36:39 · 1586 阅读 · 1 评论 -
机器学习中的VC维数和分类
VC维数学习VC维要先知道的概念有:增长函数(growth function)、对分(dichotomy)、打散(shattering)和断点(break point)1.增长函数增长函数表示假设空间H对m个示例所能赋予标记的最大可能结果数。比如说现在数据集有两个数据点,考虑一种二分类的情况,可以将其分类成A或者B,则可能的值有:AA、AB、BA和BB,原创 2017-12-22 23:23:20 · 6752 阅读 · 1 评论 -
NMF(非负矩阵分解)的场景应用
最近在学习矩阵分析时了解到了NMF这个方法,发现其潜力巨大,应用场景广阔。目前的算法场景中,NMF可以应用的领域很广,源于其对事物的局部特性有很好的解释。在众多应用中,NMF能被用于发现数据库中的图像特征,便于快速自动识别应用;能够发现文档的语义相关度,用于信息自动索引和提取;能够在DNA阵列分析中识别基因等等。我们将对此作一些大致的描述。但是最有效的就是图像处理领域,是图像处理的数据降维和特征提取的一种有效方法。原创 2018-02-13 20:05:25 · 7308 阅读 · 0 评论 -
在机器学习、大数据等领域工作,该学Hadoop还是Spark?
相信看这篇文章的你们,都和我一样对Hadoop和Apache Spark的选择有一定的疑惑,今天查了不少资料,我们就来谈谈这两种 平台的比较与选择吧,看看对于工作和发展,到底哪个更好。原创 2018-03-19 12:10:19 · 11459 阅读 · 3 评论 -
3分钟tips:什么是特征向量?什么是特征值?
就是在某个线性变换下方向不变(也可以说具有保角性),其大小不变或乘以某个缩放因子的非零向量。线性变换的主特征向量是最大特征值对应的特征向量。今天复习了一下线性代数,突然发现自己把最简单的东西都给忘了。就是由所有有着相同特征值的特征向量组成的空间,还包括零向量,但要注意零向量本身不是特征向量。:就是上面说的那个缩放因子了,一般都是从特征方程算出来的(叫特征根),是变换的本质。其实就是特征值了,谱分解也和上面这三个东西有关。原创 2018-03-20 22:46:23 · 13172 阅读 · 1 评论