摘要:
人人都恨验证码——那些恼人的图片,显示着你在登陆某网站前得输入的文本。设计验证码的目的是,通过验证你是真实的人来避免电脑自动填充表格。但是随着深度学习和计算机视觉的兴起,现在验证码常常易被攻破。
我拜读了 Adrian Rosebrock 写的《Deep Learning for Computer Vision with Python》。在书中,Adrian 描述了他是怎样用机器学习绕过纽约 E-ZPass 网站上的验证码: 阅读全文
摘要:
人工智能(AI)学习资料库每周更新,请Ctrl+D保存到收藏夹,方便及时获取最新学习资料。
吐血整理:人工智能PDF中文教材资源包2.73G基本包含全部学习资料-人工智能学习书单
Python机器学习中文版(Python Machine Learning)
Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1
TensorFlow 官方文档中文版
人工智能 一种现代的方法(第3版)
史上最全人工智能英文原版PDF教材1.03G资源包Artificial Intelligence
资源|28本必读的经典机器学习/数据挖掘书籍(免费下载)
人工智能入门书单(附PDF链接)
工学博士珍藏的人工智能进阶书单(附PDF链接)
TensorFlow教程
Python教程
Python3教程
Django教程
Linux教程
Node.js教程 阅读全文
摘要:
在前面的两个例子中,我们将原始的数据集映射到新的特征空间。不过在实际应用中,我们常常需要将多个数据集转换,比如训练集和测试集,还有可能在训练好模型后,又收集到的新数据。在本节,你将学习如何将不属于训练集的数据进行映射。
还记得在标准PCA中,我们通过计算 转换矩阵*输入样本,得到映射后的数据。转换矩阵的每一列是我们从协方差矩阵中得到的k个特征向量。现在,如何将这种思路应用到核PCA?在核PCA中,我们得到的特征向量来自归一化的核矩阵(centered kernel matrix),而不是协方差矩阵,这意味着样本已经被映射到主成分轴Python机器学习:5.8 映射新的数据点.因此,如果我们要把一个新样本Python机器学习:5.8 映射新的数据点 映射到主成分轴,我们要按照下式:
Python机器学习:5.8 映射新的数据点
上式怎么算?当然不好算,好在我们还有核技巧,所以可以避免直接计算Python机器学习:5.8 映射新的数据点。
和标准PCA不同的是,核PCA是一种基于内存的方法,这是什么意思呢?意思是每次对新样本进行映射时就要用到所有的训练集。因为要计算 阅读全文
摘要:
机器学习算法中有两类参数:从训练集中学习到的参数,比如逻辑斯蒂回归中的权重参数,另一类是模型的超参数,也就是需要人工设定的参数,比如正则项系数或者决策树的深度。
前一节,我们使用验证曲线来提高模型的性能,实际上就是找最优参数。这一节我们学习另一种常用的超参数寻优算法:网格搜索(grid search)。
网格搜索听起来高大上,实际上简单的一笔,就是暴力搜索而已,我们事先为每个参数设定一组值,然后穷举各种参数组合,找到最好的那一组。
Python机器学习:6.4 通过网格搜索调参
GridSearchCV中param_grid参数是字典构成的列表。对于线性SVM,我们只评估参数C;对于RBF核SVM,我们评估C和gamma。
最后, 我们通过best_parmas_得到最优参数组合。
sklearn人性化的一点是,我们可以直接利用最优参数建模(best_estimator_):
Python机器学习:6.4 通过网格搜索调参
Note 网格搜索虽然不错,但是穷举过于耗时,sklearn中还实现了随机搜索,使用 RandomizedSearc 阅读全文
摘要:
训练机器学习模型的关键一步是要评估模型的泛化能力。如果我们训练好模型后,还是用训练集取评估模型的性能,这显然是不符合逻辑的。一个模型如果性能不好,要么是因为模型过于复杂导致过拟合(高方差),要么是模型过于简单导致导致欠拟合(高偏差)。可是用什么方法评价模型的性能呢?这就是这一节要解决的问题,你会学习到两种交叉验证计数,holdout交叉验证和k折交叉验证, 来评估模型的泛化能力。
holdout method
评估模型泛化能力的典型方法是holdout交叉验证(holdout cross validation)。holdout方法很简单,我们只需要将原始数据集分割为训练集和测试集,前者用于训练模型,后者用于评估模型的性能。
不过,在训练模型这一步,我们非常关心如何选择参数来提高模型的预测能力,而选择参数这一步被称为模型选择(model selection,译者注:不少资料将选择何种模型算法称为模型选择),参数选择是非常重要的,因为对于同一种机器学习算法,如果选择不同的参数(超参数),模型的性能会有很大差别。
如果在模型选择的过程中,我们始终用测试集来评价模型性能,这 阅读全文
摘要:
结合k折交叉验证和网格搜索是调参的好手段。可是如果我们想从茫茫算法中选择最合适的算法,用什么方法呢?这就是本节要介绍的嵌套交叉验证(nested cross validation)。 Varma和Simon在论文Bias in Error Estimation When Using Cross-validation for Model Selection中指出使用嵌套交叉验证得到的测试集误差几乎就是真实误差。
+
嵌套交叉验证外层有一个k折交叉验证将数据分为训练集和测试集。还有一个内部交叉验证用于选择模型算法。下图演示了一个5折外层交叉沿则和2折内部交叉验证组成的嵌套交叉验证,也被称为5*2交叉验证:
Python机器学习:6.5 通过嵌套交叉验证选择算法
sklearn中可以如下使用嵌套交叉验证:
Python机器学习:6.5 通过嵌套交叉验证选择算法
我们使用嵌套交叉验证比较SVm和决策树分类器:
Python机器学习:6.5 通过嵌套交叉验证选择算法
Python机器学习中文版目录(http://www.aibbt.com/a/2078 阅读全文
摘要:
Python机器学习简介
第一章 让计算机从数据中学习
将数据转化为知识
三类机器学习算法
第二章 训练机器学习分类算法
透过人工神经元一窥早期机器学习历史
使用Python实现感知机算法
基于Iris数据集训练感知机模型
自适应线性神经元及收敛问题
Python实现自适应线性神经元
大规模机器学习和随机梯度下降
第三章 使用Scikit-learn进行分类器之旅
如何选择合适的分类器算法
scikit-learn之旅
逻辑斯蒂回归对类别概率建模
使用正则化解决过拟合
支持向量机
使用松弛变量解决非线性可分的情况
使用核SVM解决非线性问题
决策树学习
最大信息增益
构建一棵决策树
随机森林
k近邻 阅读全文