机器学习及实践
文章平均质量分 75
Lenskit
创业公司、B2B行业
展开
-
Python机器学习及实践——简介篇2
这篇继续介绍一些概念。 任务: 机器学习的任务有很多,这里我们侧重于对两类经典的任务进行讲解和实践:监督学习和非监督学习。关于这两者的概念,不清楚的可以去看监督学习和非监督学习的区别。 这里补充一点非监督学习的内容,非监督学习常用的技术包括数据降维和聚类问题等。主要补充数据降维的概念,数据降维是对事物的特性进行压缩和筛选,这项任务相对比较抽象。如果我们没有原创 2017-08-05 12:42:10 · 809 阅读 · 0 评论 -
Python机器学习及实践——基础篇11(回归树)
回归树在选择不同特征作为分裂节点的策略上,与基础篇6的决策树的思路类似。不同之处在于,回归树叶节点的数据类型不是离散型,而是连续型。决策树每个叶节点依照训练数据表现的概率倾向决定了其最终的预测类;而回归树的叶节点确实一个个具体的值,从预测值连续这个意义上严格地讲,回归树不能成为“回归算法”。因为回归树的叶节点返回的是“一团”训练数据的均值,而不是具体的,连续的预测值。下面使用回归树对美国波士顿...原创 2018-10-20 11:07:00 · 1405 阅读 · 0 评论 -
Python机器学习及实践——基础篇12(集成模型)
在之前的集成模型(分类)中,探讨过集成模型的大致类型和优势。本篇除了继续使用普通随机森林和提升树模型的回归器版本外,还要补充介绍随机森林模型的另一个变种:极端随机森林。与普通的随机森林模型不同的是,极端随机森林在每当构建一棵树的分裂节点的时候,不会任意地选取特征;而是先随机收集一部分特征,然后利用信息熵和基尼不纯性等指标调休最佳的节点特征。本篇使用sklearn中三种集成回归模型,即Rando...原创 2018-10-20 16:59:55 · 666 阅读 · 0 评论 -
Python机器学习及实践——无监督学习经典模型(K-means)
无监督学习着重于发现数据本身的分布特点。与监督学习不同,无监督学习不需要对数据进行标记。从功能角度讲,无监督学习模型可以帮助我们发现数据的“群落”,同时也可以寻找“离群”的样本;另外对于特征维度非常高的数据样本,我们同样可以通过无监督的学习对数据进行降维,保留最具有区分性的低纬度特征。数据聚类是无监督学习的主流应用之一,最为经典并且易用的聚类模型,要属K均值算法。该算法要求我们预先设定聚类...原创 2018-11-17 19:27:53 · 2825 阅读 · 0 评论 -
Python机器学习及实践——特征降维
特征降维是无监督学习的另一个应用,目的有两个:一是我们经常在实际项目中遭遇特征维度非常高的训练样本,而往往无法借助自己的领域知识人工构建有效特征;二是在数据表现方面,我们无法用肉眼观测超过三个维度的特征。因此特征降维不仅重构了有效的低维度特征向量,同时也为数据展现提供了可能。PCA是最为经典和实用的特征降维技术,特别在辅助图形识别方面有突出的表现。本篇我们依然沿用上篇的“手写体数字图像”全集数...原创 2018-12-16 13:04:11 · 3171 阅读 · 0 评论 -
Python机器学习及实践——进阶篇1(特征提升之特征抽取)
在前面的一系列文章中,已经介绍了大量经典的机器学习模型,并且使用python语言分析这些模型在许多不同现实数据上的性能表现。细心的读者会发现一个问题,我们之前使用的数据几乎都经过了规范化处理,而且模型也大多只是采用了默认的初始化配置。换言之,尽管我们使用经过处理后的数据,在默认配置下学得一套可以拟合数据的参数,并用这些参数和默认配置取得了一些看似良好的性能表现;但是我们无法解决最为关键的问题:实际...原创 2019-03-23 13:10:01 · 1172 阅读 · 0 评论 -
Python机器学习及实践——进阶篇2(特征提升之特征筛选)
总体来说,良好的数据特征组合不需太多,便可以使得模型的性能表现突出。比如我们在“良/恶性乳腺癌肿瘤预测“问题中,仅仅使用两个描述肿瘤形态的特征便取得较高的识别率。冗余的特征虽然不会影响模型性能,但会浪费cpu的计算。主成分分析主要用于去除多余的那些线性相关的特征组合,这些冗余的特征组合并不会对模型训练有更多贡献。特征筛选与PCA这类通过选择主成分对特征进行重建的方法略有区别:对于PCA而言,我...原创 2019-05-26 10:46:47 · 2004 阅读 · 0 评论 -
Python机器学习及实践——进阶篇3(模型正则化之欠拟合与过拟合)
一个需要记住的重要事项:任何机器学习模型在训练集上的性能表现,都不能作为其对未知测试数据预测能力的评估。这里讲详细及时什么是模型的泛化力以及如何保证模型的泛化力,一次会阐述模型复杂度与泛化力的关系以及使用L1范数正则化与L2范数正则化加强模型的泛化力,避免模型参数过拟合。所谓拟合,是指机器学习模型在训练的过程中,通过更新参数,使得模型不断契合训练集的过程。本篇将使用一个“比萨饼价格预...原创 2019-05-26 11:13:39 · 1059 阅读 · 0 评论 -
Python机器学习及实践——进阶篇4(模型正则化之L1正则&L2正则)
正则化的目的在于提高模型在未知测试数据上的泛化力,避免参数过拟合。由上一篇的例子可以看出,2次多项式回归是相对较好的模型假设。之所以出现如4次多项式那样的过拟合情景,是由于4次方项对于的系数过大,或者不为0导致。因此正则化的常见方法都是在原模型优化目标的基础上,增加对参数的惩罚项。以我们之前在线性回归器一节中介绍过的最小二乘优化目标为例,如果加入对模型的L1范数正则化,那么新的线性回归目标如下...原创 2019-05-26 18:06:31 · 1753 阅读 · 0 评论 -
Python机器学习及实践——进阶篇5(模型检验)
前面时不时提到模型检验或者交叉验证等词汇,特别是在对不同模型的配置,不同的特征组合,在相同的数据和任务下进行评价的时候。究其原因是因为仅仅使用默认配置的模型与不经处理的数据特征,在大多数任务下是无法得到最佳性能表现的。因此在最终交由测试集进行性能评估之前,我们希望可以利用手头现有的数据对模型进行调优,甚至可以粗略地估计测试结果。这里需要强调的是,前面所使用的测试数据是由原始数据中采样而来,并且...原创 2019-08-18 18:59:02 · 1624 阅读 · 0 评论 -
Python机器学习及实践——基础篇10(K近邻回归)
在基础篇5中提到里这类模型不需要训练参数的特点。在回归任务重,k近邻(回归)模型同样只是借助周围K个最近训练样本的目标数值,对待测样本的回归值进行决策。自然,也衍生出衡量待测样吧回归值的不同方式,即到底是对K个近邻目标数值使用普通的算术平均算法,还是同时考虑距离的差异进行加权平均。因此,本篇也初始化不同配置的K近邻(回归)模型来比较回归性能的差异。 下述代码展示了如何使用两种不同配置...原创 2018-06-23 20:48:02 · 1635 阅读 · 0 评论 -
Python机器学习及实践——基础篇9(SVM回归)
大家应该对基础篇3中的支持向量机(分类)中提到的分类模型的作用机理有所了解。本篇介绍的支持向量机(回归)也同样是从训练数据中选取一部分更加有效的支持向量,只是这少部分的训练样本所提供的并不是类别目标,而是具体的预测数值。 我们继续使用上一篇分割处理好的训练和测试数据;同时我们第一次修改模型初始化的默认配置,以展现不同配置下模型性能的差异,也为后面要介绍的内容做个铺垫。# 从sklea...原创 2018-06-23 20:28:24 · 11210 阅读 · 1 评论 -
Python机器学习及实践——基础篇8(LinerR和SGD)
回归问题与分类问题的区别在于:期待预测的目标是连续变量,比如:价格、降水量等等。与前面的介绍方式不同,这里不会对回归的应用场景进行横向扩展;而是只针对一个“美国波士顿地区房价预测”的经典回归问题进行分析,好让读者朋友对各种回归模型的性能与优缺点有一个深入的比较。 前面介绍过分类的线性模型。其中为了便于将原本在实数域上的计算结果映射到(0,1)区间,引入了逻辑斯蒂函数。而在线性回归问题...原创 2018-03-28 20:25:35 · 2129 阅读 · 4 评论 -
Python机器学习与实践——简介篇
周四晚上胡哥给大家简单培训了一下nlp的一些算法,感觉受益匪浅。回去之后反省了一下,有段时间没看机器学习的东西了,nlp要抓,机器学习也要学。开个坑,记录和分享一下学习内容(书籍为《python机器学习及实践》)。 作为第一篇简介篇,先以介绍为主。 1959年,美国的前IBM员工塞缪尔开发了一个西洋棋程序,这个程序可以在于人类棋手对弈的过程中,不断改善自己的棋艺。在4年之后,这原创 2017-08-05 11:20:23 · 2292 阅读 · 1 评论 -
Python机器学习及实践——基础篇2(LR和SGD)
使用线性分类模型从事良/恶性肿瘤预测任务# 从sklearn.preprocessing里导入StandardScaler。from sklearn.preprocessing import StandardScaler# 从sklearn.linear_model里导入LogisticRegression与SGDClassifier。from sklearn.linear_m...原创 2018-02-03 14:01:54 · 3219 阅读 · 1 评论 -
Python机器学习及实践——基础篇3(SVM)
图中有三种颜色的线,用来划分这两种类别的训练样本。其中绿色直线H1在这些训练样本上表现不佳,本身就带有分类错误;蓝色直线H2和红色直线H3如果作为这个二分类问题的线性分类模型,在训练集上的表现都是完美的。 然而,由于这些分类模型最终都是要应用在未知分布的测试数据上,因此我们更加关注如何最大限度地为未知分布的数据提供足够的待预测空间。比如如果有一个黑色样本稍稍向右偏离橙色直线,那么这个黑色样本很原创 2018-02-03 15:59:07 · 1112 阅读 · 0 评论 -
Python机器学习及实践——基础篇4(朴素贝叶斯)
模型介绍:朴素贝叶斯是一个非常简单,但是实用性很强的分类模型。不过,和上述两个基于线性假设的模型(线性分类器和支持向量机分类器)不同,朴素贝叶斯分类器的构造基础是贝叶斯理论。 朴素贝叶斯分类器会单独考量每一维度特征被分类的条件概率,进而综合这些概率并对其所在的特征向量做出分类预测。因此,这个模型的基本数学假设是:各个维度上的特征被分类的条件概率之间是相互独立的。具体的贝叶斯公式网上有很多,这里原创 2018-02-04 14:00:14 · 742 阅读 · 0 评论 -
Python机器学习及实践——基础篇5(K近邻)
K近邻模型本身非常直观并且容易理解。算法描述起来也很简单,如下图所示。假设我们有一些携带分类标记的训练样本,分布于特征空间中;蓝色、绿色的样本各自代表其类别。对于一个待分类的红色测试样本点,未知其类别,按照成语“近朱者赤,近墨者黑”的说法,我们需要寻找与这个待分类的样本在特征空间中距离最近的K个已标记样本作为参考,来帮助我们做出分类决策。这便是K近邻算法的通俗解释。而在下图中,如果我们根据最近的K原创 2018-02-04 15:57:43 · 635 阅读 · 0 评论 -
Python机器学习及实践——简介篇3(逻辑回归)
前面两篇都是介绍性的文字,这篇详细介绍完整的“良/恶性乳腺癌肿瘤预测”问题的Python源代码。 根据前两篇的描述,大家可以确定“良/恶性乳腺癌肿瘤预测”的问题属于二分类任务。待预测的类别分别是良性乳腺癌肿瘤和恶性乳腺癌肿瘤。通常我们使用离散的整数来代表类别。如下表,“肿瘤类型”一列列出了肿瘤的类型;0代表良性,1代表恶性。 肿块厚度细胞尺寸肿瘤类型原创 2017-08-06 11:09:17 · 2616 阅读 · 3 评论 -
Python机器学习及实践——基础篇1
机器学习中监督学习模型的任务重点在于,根据已有经验知识对未知样本的目标/标记进行预测。根据目标预测变量的类型不同,我们把监督学习任务大体分为分类学习与回归预测两类。 整理一下监督学习任务的基本架构和流程:首先准备训练数据,可以是文本、图像、音频等;然后抽取所需要的特征,形成特征向量;接着,把这些特征向量连同对应的标记/目标一并送入学习算法中,训练出一个预测模型;然后采用同样的特征抽取方法作用于原创 2018-01-20 19:59:00 · 1355 阅读 · 0 评论 -
Python机器学习及实践——基础篇6(决策树)
前面所使用的逻辑斯蒂回归和支持向量机模型,都在某种程度上要求被学习的数据特征和目标之间遵照线性假设。然而,在许多现实场景下,这种假设是不存在的。 比如,要借由一个人的年龄来预测患流感的死亡率。如果采用线性模型假设,那只有两种情况:年龄越大死亡率越高;或者年龄越低死亡率越高。然而根据常识判断,青壮年因为更加健全的免疫系统,相较于儿童和老年人不容易因患流感而死亡。因此年龄与因流感而死之间...原创 2018-03-25 19:57:46 · 880 阅读 · 0 评论 -
Python机器学习及实践——基础篇7(分类集成模型)
常言道:“一个篱笆三个桩,一个好汉三个帮”。集成分类模型便是综合考量多个分类器的预测结果,从而做出决策。只是这种“综合考量”的方式大体上分为两种: 一种是利用相同的训练数据同时搭建多个独立的分类模型,然后通过投票的方式,以少数服从多数的原则作出最终的分类决策。比较具有代表性的模型为随机森林分类器,即在相同训练数据上同时搭建多颗决策树。然而上一篇中提到过,一株标准的决策树会根据每维特征...原创 2018-03-25 21:05:36 · 2161 阅读 · 0 评论 -
Python机器学习及实践——进阶篇6(超参数搜索)
前面所提到的模型配置,我们一般统称为模型的超参数,如K近邻算法中的K值 支持向量机中不同的和函数等。多数情况下,超参数的选择是无限的。因此在有限的时间内,除了可以验证人工预设几种超参数组合以外,也可以通过启发式的搜索方法对超参数组合进行调优。我们称这种启发式的超参数搜索方法为网格搜索。同时由于超参数的的验证过程之间彼此独立,因此为并行计算提供了可能。网格搜索:由于超参数的空间是无尽的,因此超...原创 2019-08-18 19:01:50 · 1355 阅读 · 2 评论