
机器学习
文章平均质量分 89
修炼之路
主要研究领域包括图像分类、目标检测、OCR、人脸识别等,搞过跨平台的深度学习模型的部署解决方案,设计过分布式的深度学习模型服务架构。
展开
-
kaggle的房价预测居然被刷到了0.0?
kaggleKaggle公司是由联合创始人兼首席执行官AnthonyGoldbloom2010年在墨尔本创立的,主要是为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台。现在kaggle已经成为机器学习爱好者和学习者的必逛网站,上面有许多非常优秀的kernel和文章,能够帮助机器学习和数据分析学习者快速成长。房价预测房价预测(house prices)这个比赛已...原创 2019-12-15 22:37:06 · 2945 阅读 · 0 评论 -
你真的理解正则化了吗?
前言说到正则化大家应该都不陌生,这个在机器学习和深度学习中都是非常常见的,常用的正则化有L1正则化和L2正则化。提到正则化大家就会想到,它就是将权重添加到损失值的计算中以来防止模型过拟合。了解更多一点的同学还会说,L1正则化会让模型的权重参数稀疏化(部分权重的值为0),所以L1正则化可以用于特征选择,L2正则化会让模型的权重有趋于0的偏好。不知道大家有没有想过,为什么L1正则化会让部分权重的值...原创 2019-12-01 22:47:10 · 847 阅读 · 1 评论 -
在线算法外存学习处理大数据集
在上一篇文章中,使用了logistic回归来对电影评论进行分类,消耗了2到3个小时,在使用网格搜索对50000条电影评论构建特征向量的时候计算成本是非常大的。在实际应用中,可能会遇见更大的数据集,如果直接把数据集加载到内存中,可能会超出计算机的最大内存,同时也会需要更久的训练时间。在这篇文章中,将介绍外存学习来处理大数据集,使用外存学习来处理50000条电影评论只需要1分钟。在梯度下降算法中,我们...原创 2018-04-19 21:51:49 · 1537 阅读 · 0 评论 -
logistic实现评论的分类(四)
在之前我们介绍了对电影评论的预处理的方法,分词、提取词干、去除停用词、提取句子的TF-IDF特征向量。在这篇文章中,我们将介绍使用评论的TF-IDF特征向量,使用logistic回归实现对评论的分类,并使用表格搜索来寻找最优参数。1、导入相关包import pandas as pdfrom sklearn.model_selection import train_test_splitfrom ...原创 2018-04-19 21:33:56 · 1447 阅读 · 1 评论 -
对电影评论做情感分析之词干提取和停用词的移除(二)
这篇文章主要介绍如何将文本转换为特征向量前的一些准备工作,主要内容包括:1、清洗文本数据2、标记文档3、词袋模型一、清洗文本数据清洗文本需要将文本中所包含的一些不必要的字符删除。1、删除不必要的字符print(data["review"][0][-50:])is seven.<br /><br />Title (Brazil): Not Available发现评论中含有一些...原创 2018-04-09 21:50:56 · 5707 阅读 · 0 评论 -
bagging通过bootstrap构建集成分类器
集成学习是将不同分类器组合成为一个元分类器,元分类器与其包含的当个分类器相比,元分类器具有更好的泛化性能。一、bagging集成分类器bagging没有使用相同的训练集拟合集成分类器中的单个成员分类器,bagging集成分类器的训练集使用了bootstrap抽样(有放回的随机抽样)。bagging可以提高不稳定模型的准确率,并且可以降低过拟合的程度。注:抽样后的子集T可以与其他的子集相同,因为是有...原创 2018-04-02 23:03:36 · 2085 阅读 · 0 评论 -
对电影评论进行情感分析之文本数据的准备(一)
通过电影评论来做情感分析,主要包括下面几个主要内容:1、准备文本数据2、基于文本文档来构建特征向量3、训练机器学习模型来区分电影评论的正面评论和负面评论4、使用外存学习和在线学习算法来处理大数据在本篇文章中,主要介绍对于电影评论数据的准备工作。一、情感分析情感分析也称观点挖掘(opinion mining),是机器学习中自然语言处理(NLP)领域一个非常流行的分支,它主要是分析文档的情感倾向。二、...原创 2018-04-08 22:30:45 · 14810 阅读 · 9 评论 -
集成学习之多数投票预测
一、集成学习集成方法(ensemble method)是指,通过将不同的分类器组合成为一个元分类器,元分类器与包含的单个分类器相比,元分类器具有更好的泛化性能。常用的集成方法有多数投票(majority voting)原则,多数投票原则是指将大多数分类器预测的结果作为最终的预测类标,也就是说,将得票数超过50%的结果作为类标。严格的说,多数投票仅用于二分类的情况。但是,我们也可以将多数投票原则推广...原创 2018-04-01 22:54:30 · 7520 阅读 · 0 评论 -
交叉验证评估模型性能
在构建一个机器学习模型之后,我们需要对模型的性能进行评估。如果一个模型过于简单,就会导致欠拟合(高偏差)问题,如果模型过于复杂,就会导致过拟合(高方差)问题。为了使模型能够在欠拟合和过拟合之间找到一个折中方案,我们需要对模型进行评估,后面将会介绍holdout交叉验证和k折交叉验证,通过这两种方法,我们可以获得一个模型泛化误差的可靠估计,也就是模型在新数据上的性能。一、holdout交叉验证hol...原创 2018-03-21 22:46:20 · 6975 阅读 · 5 评论 -
通过网格搜索和嵌套交叉验证寻找机器学习模型的最优参数
在机器学习的模型中,通常有两类参数,第一类是通过训练数据学习得到的参数,也就是模型的系数,如回归模型中的权重系数,第二类是模型算法中需要进行设置和优化的超参,如logistic回归中的正则化系数和决策树中的树的深度参数等。在上一篇文章中,我们通过验证曲线来寻找最优的超参,在这篇文章中,将通过一种功能更为强大的寻找超参的技巧:网格搜索,它可以寻找最优的超参组合,来提高模型的性能。一、网格(grid ...原创 2018-03-25 22:56:39 · 8568 阅读 · 8 评论 -
通过验证曲线来判断机器学习模型的性能
当,一个机器学习的模型训练完成之后,我们应该如何来判断模型的性能。在上一篇文章中,我们使用了交叉验证的方法来估计模型的平均性能,这篇文章中,将介绍通过学习曲线来判断模型的偏差和方差问题,通过验证曲线来判断模型参数对于模型的过拟合和欠拟合问题。一、学习曲线判断模型的偏差和方差当模型在训练数据上构建的太复杂,这时候模型就有可能对训练数据出现过拟合,而对于未知数据的泛化能力就不好。对于模型的过拟合问题,...原创 2018-03-25 17:36:17 · 3903 阅读 · 0 评论 -
主成分分析(PCA)降维
在上一篇文章中,介绍过使用L1正则化和随机森林算法来进行特征选择。在这篇文章中,将介绍使用PCA来进行特征抽取实现降维。特征选择,是从原始的特征中选出一个特征子集。特征抽取,是通过对现有特征的信息进行推演,构造出一个新的特征子空间。可以理解为特征抽取是尽可能多地保证相关信息的情况下,来实现数据的压缩,特征抽取也可以提高计算效率。一、什么是主成分分析?主成分分析(principal componen...原创 2018-03-13 22:53:37 · 4142 阅读 · 0 评论 -
线性判别分析(LDA)降维
一、什么是线性判别分析?线性判别分析(Linear discriminant Analysis,LDA)与PCA类似也是一种特征抽取的算法,它能够提高数据分析过程中的计算效率。PCA是寻找数据集中方差最大的方向作为主成分分量的轴,而LDA是最优化分类的特征子空间。LDA和PCA都是用来降低数据维度的线性转换技巧。PCA属于无监督算法,LDA属于监督算法。相对于PCA算法而言,LDA更适合对于分类特...原创 2018-03-18 22:49:23 · 11702 阅读 · 2 评论 -
评价分类模型的性能指标
当一个模型构建完成之后,我们可以通过几个不同的性能指标来衡量分类模型的相关性能,常用的分类性能指标有准确率(precision)、召回率(recall)和F1分数(F1-score)。一、混淆矩阵混淆矩阵(confusion matrix):是展示分类学习算法的一种性能矩阵(方阵),包括分类器预测结果真正(true positive)、真负(true negative)、假正(false ...原创 2018-03-28 22:52:59 · 13821 阅读 · 2 评论 -
AdaBoost算法详细介绍
一、Boosting算法Boosting集成分类器包含多个非常简单的成员分类器,这些成员分类器的性能仅好于随机猜想,常被称为弱学习机。典型的弱学习机的例子就是单层决策树。Boosting算法主要针对难以区分的样本,弱学习机通过在分类错误的样本上进行学习来提高继承分类器的分类性能。Boosting与Bagging不同,在Boosting的初始化阶段采用的是无返回抽样从训练样本中随机抽取一个子集,而B...原创 2018-04-06 14:11:15 · 20160 阅读 · 0 评论 -
使用flask将机器学习模型嵌入到web系统中(五)
在这篇文章中,主要介绍如何将一个机器学习的模型嵌入到web系统中,这篇文章的主要内容包括:1、利用flask构建一个简单的web2、将机器学习模型嵌入到web系统中3、根据用户的反馈来更新模型主要包括三个页面,评论提交页面、分类结果页面、感谢页面。当用户提交评论后跳转到结果页面,后台根据已有的模型来预测用户评论是属于正面评论还是负面评论,返回属于哪一种评论并且返回属于该种类的概率为多少...原创 2018-04-22 17:24:07 · 12836 阅读 · 17 评论 -
pytorch报RuntimeError: copy_if failed to synchronize: device-side assert triggered
在使用pytorch训练的时候提示RuntimeError: copy_if failed to synchronize: device-side assert triggered错误有两个方法可以尝试去解决一下:1.尝试减少学习率试试看能不能解决这个问题,如果不能,请看第二种方法2.看看config文件中设置的类别数目与数据中实际的类别数目是否一致,注意对于目标检测需要根据实际的类别...原创 2019-07-11 17:04:10 · 20695 阅读 · 23 评论 -
使用FFmpeg提取视频中的图像(根据帧间隔、时间间隔)
前言为了对视频做一些处理,需要提取视频中的图像,根据不同需求有时候可能需要按一定时间间隔或帧间隔来提取视频中的帧,目的是为了处理提高效率和减少内存的占用,使用OpenCV也可以完成这一功能,不过相对于FFmpeg来说,处理视频的效率要慢不少,对于数量比较大的视频处理建议使用FFmpeg来进行。通过FFmpeg获取视频的总帧数ffprobe <input> -select_...原创 2019-07-14 00:10:55 · 22035 阅读 · 3 评论 -
一文搞懂深度学习中常用的优化算法
在深度学习训练模型的时候需要使用到优化算法,最终我们都是在求解代价函数的最小化问题来求解模型的参数。有的时候,训练一个神经网络模型可能需要几百上千台机器同时训练几个月,通过使用优化算法可以节省训练的时间加快模型的收敛。本篇文章主要介绍一下常用的优化算法梯度下降算法指数加权平均算法动量梯度下降RMSprop算法Adam优化算法常用的优化算法在面试的时候也会经常被问到。一、梯度下降算...原创 2019-03-14 20:01:38 · 9337 阅读 · 4 评论 -
基于协同过滤的推荐系统
这篇文章主要介绍一种协同过滤的推荐的算法,主要的内容包括:1、相似度的计算2、基于用户的协同过滤3、基于项目的协同过滤4、基于内容的过滤算法5、混合推荐系统推荐系统在现在的生活中随处可见,淘宝天猫的商品推荐,音乐软件的每日歌曲推荐等,协同过滤就是一种很受欢迎的推荐算法。协同过滤(collaborative filtering):利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息。比如说...原创 2018-05-07 21:39:03 · 10374 阅读 · 2 评论 -
聚类算法之层次聚类
一、原型聚类和层次聚类原型聚类也称基于原型的聚类(prototype-based clustering),这类算法假设聚类结构能够通过一组原型刻画,先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示、不同的求解方式,产生不同的算法。常用的原型聚类算法有k-means算法。层次聚类(hierarchical clustering)是一种基于原型的聚类算法,试图在不同层次对数据集进行划...原创 2018-04-30 01:13:32 · 49684 阅读 · 4 评论 -
K-Means算法详细介绍(SSE、轮廓分析)
在前面我们介绍过了很多的监督学习算法,分类和回归。这篇文章主要介绍无监督算法,通过聚类分析来处理无类标数据。我们事先并不知道数据的正确结果(类标),通过聚类算法来发现和挖掘数据本身的结构信息,对数据进行分簇(分类)。聚类算法的目标是,簇内相似度高,簇间相似度低。有点像LDA降维算法,类内方差最小,类间方差最大。这篇文章主要包括:1、K-Means算法2、K-Means++3、硬聚类和软聚类4、聚类...原创 2018-04-29 10:29:55 · 44096 阅读 · 6 评论 -
特征分解和奇异值分解
特征分解和奇异值分解在机器学习的应用中经常出现,在学习线性代数的时候也学习过。线性代数学完之后,之后去按照步骤去求解特征值和特征向量,也没搞明白特征值和特征向量究竟有什么作用。这篇文章的主要内容包括:1、什么是特征分解2、什么是奇异值分解3、如何求解特征值和特征向量4、特征值和特征向量有什么意义一、特征分解特征分解(eigendecomposition):是使用最广的矩阵分解之一,通过特征分解可以...原创 2018-05-05 19:18:49 · 3977 阅读 · 0 评论 -
使用奇异值分解提高协同过滤的推荐效果
在上一篇文章中,介绍过了矩阵分解和奇异值分解,这篇文章主要介绍奇异值分解的应用。通过SVD我们能够用小得多的数据来表示原始的样本数据,通过SVD可以去除噪声和冗余的信息。这篇文章主要介绍:1、SVD的优缺点2、使用python来实现SVD3、基于协同过滤来构建推荐系统4、基于SVD的图片压缩一、SVD的优缺点优点:简化数据,去除噪声,提高算法的结果。缺点:数据的转换难以理解。二、使用python来...原创 2018-05-09 22:45:59 · 1760 阅读 · 0 评论 -
聚类算法之DBSCAN划分高密度区域
关于聚类算法的前面两篇文章,已经介绍过了常用的原型聚类算法k-measn算法和层次聚类中的凝聚算法,这篇文章介绍一些密度聚类算法DBSCAN。k-means算法需要事先指定簇的个数,而凝聚不需要指定簇的个数,这两个算法会将所有的样本的划分到簇中,无法区分出噪声,k-means算法的簇空间是球状的,它们都无法很好的区分出高密度的区域。这篇文章主要介绍聚类算法中的DBSCAN算法,它划分出来的簇空间可...原创 2018-05-01 17:46:23 · 4294 阅读 · 2 评论 -
回归预测分析(RANSAC、多项式回归、残差图、随机森林)
在本篇文章中,主要是介绍利用波士顿房价数据来掌握回归预测分析的一些方法。通过本篇文章你可以学习到:1、可视化数据集的重要特征2、估计回归模型的系数3、使用RANSAC拟合高鲁棒性回归模型4、如何来评价回归模型5、多项式回归6、决策树回归7、随机森林回归数据集下载地址:https://archive.ics.uci.edu/ml/machine-learning-databases/housing/...原创 2018-04-26 22:05:23 · 19280 阅读 · 12 评论 -
情感分析之词袋模型TF-IDF算法(三)
在这篇文章中,主要介绍的内容有:1、将单词转换为特征向量2、TF-IDF计算单词关联度在之前的文章中,我们已经介绍过一些文本的预处理和分词。这篇文章中,主要介绍如何将单词等分类数据转成为数值格式,以方便我们后面使用机器学习来训练模型。一、将单词转换为特征向量词袋模型(bag-of-words model):将文本以数值特征向量的形式来表示。主要通过两个步骤来实现词袋模型:1...原创 2018-04-14 00:28:36 · 11140 阅读 · 12 评论 -
数据的预处理之缺失值处理
在训练一个模型之前需要做数据的预处理,因为模型的最终效果决定于数据的质量和数据中蕴含的有用信息的数量。在实际的模型的训练样本数据中,样本可能会由于某些原因,造成一个或多个值的缺失。可能由于样本采集过程中的失误,或者度量方法对于某些特征不适用,或者数据未被填写等。在表格中缺失值通常是以空值的形式或者是NA(Not A Number)存在的。如果我们直接忽视这些缺失值可能有些算法无法处理这些缺失值,将...原创 2018-03-04 22:18:26 · 21761 阅读 · 0 评论 -
将决策树的过程可视化
在使用决策树算法进行分类的时候,有时候我们想看看决策树究竟是如何进行分类的。下面,将介绍使用sklearn来构建一个决策树,并导出决策树的结果dot文件,通过GraphViz将dot文件,保存成一张图片。一、决策树实现鸢尾花的分类from sklearn.tree import DecisionTreeClassifierfrom sklearn.tree import export_graph...原创 2018-02-28 23:06:11 · 4493 阅读 · 0 评论 -
初识决策树
决策树是机器学习中一种应用比较广泛的一种模型,比较常用的集成模型GBDT以及XGBOOST都是基于决策树。而且决策树在生活中也所处可见,下面用一个图例表示某一天的活动。上面的图例就是一个比较简单的决策树模型。决策树模型是基于一系列的问题来进行决策的,在处理实际问题的时候会比上面树要大的多。一颗决策树通常都会包括一个根结点(明天做什么?)、若干个内部结点(能够继续分)、若干个叶结点(不能继续分)。叶...原创 2018-02-28 21:03:10 · 832 阅读 · 0 评论 -
梯度下降算法数据的标准化预处理
在上一篇文章中使用了梯度下降算法来实现了自适应线性神经元。我们在更新权重的时候都有使用到学习率,并且默认的将学习率设置为了0.01,那么我们将学习率设置成0.01合适吗?在使用梯度下降算法,我们是直接将花的特征和花所对应的标签作为输入和输出,而没有进行数据的预处理操作,这对训练的模型会有什么影响呢?这篇文章中,我们主要讨论一下,学习率以及数据的预处理对于模型的影响。一、学习率对于模型的影响原创 2017-12-21 22:56:03 · 3249 阅读 · 0 评论 -
卷积神经网络LeNet5结构
LeNet5可以说是最早的卷积神经网络了,它发表于1998年,论文原文Gradient-Based Learning Applied to Doucment Recognition作者是Yann Le Cun等。下面对LeNet5网络架构进行简单的说明,有兴趣的同学可以去参考原文,论文原文地址http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf。原创 2017-11-25 13:10:25 · 12028 阅读 · 1 评论 -
python实现自适应线性感知器算法
在之前的文章中有介绍过感知器,自适应线性神经网络(Adaptive Linear Neuron,Adaline)是在Frank Rosenblatt提取感知器算法之后的几年,Bernard Widrow和Tedd Hoff提出的Adaline算法,它是对感知器算法的改进。它的核心思想是通过对代价函数做最小优化,这也是机器学习算法的核心思想,以及之后的逻辑斯蒂回归、支持向量机等都采用了这种思想。Ad原创 2017-12-20 21:39:52 · 3357 阅读 · 0 评论 -
logistic回归总结
在介绍logistic之前,我希望大家能先思考一个问题,因为在logisitic中会使用到一个最优化算法,梯度上升还有一个与梯度下降,第一个问题就是为什么在logistic中使用的最优化算法是梯度上升而不是梯度下降呢?如果使用梯度下降会有什么样的后果呢?究竟什么时候应该使用梯度上升算法什么时候应该使用梯度下降算法呢?最小二乘法和极大似然估计与梯度上升算法和梯度下降算法究竟有什么样的联系呢?如果,对原创 2017-09-11 23:04:45 · 8025 阅读 · 0 评论 -
基于朴素贝叶斯分类器的文本分类
一、什么是朴素贝叶斯朴素贝叶斯:它是一系列以假设特征特征之间强独立下运用的贝叶斯定理为基础的简单概率分类器,它的核心思想就是,假设有一篇文章,它属于A类文章的概率为P(A)属于B类文章的概率为P(B),如果P(A)>P(B),则这篇文章属于A类,否则这篇文章属于B类。优点:在数据较少的情况下仍然有效,可以处理多分类问题缺点:对于输入数据的准备方式较为敏感二、程序实现流程图运行环原创 2017-08-29 23:20:49 · 3404 阅读 · 0 评论 -
logistic回归改进
在上一篇文章中,我们已经介绍过了logistic回归也用python代码实现了logistic回归,这张我们主要介绍如何来改进logistic回归算法的效率和性能。上篇文章中也介绍主要是使用了梯度上升算法进行迭代来计算参数的值,这篇文章,我们使用随机上升梯度算法来实现logistic回归,随机梯度上升算法和梯度上升算法的效果差不多,梯度上升算法每次迭代的时候是使用所有的数据集进行迭代的,而随机梯度原创 2017-09-12 22:28:15 · 5430 阅读 · 0 评论 -
TF-IDF提取文章关键词算法
一、TF-IDF简介TF-IDF(terms frequency-inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术。TF-IDF是一种统计方法,用来评估一字词对于一篇文章的重要程度。一个词语对一篇文章的重要性主要是依靠它在文件中出现的次数,如果这个词语在这篇文章中的出现次数越高,则表明这个词语对于这篇文章的重要性越高。同时,它还与这个词语在语料库原创 2017-08-06 21:11:33 · 14967 阅读 · 0 评论 -
Windows pycharm下如何安装anaconda(python科学计算库)
一、首先,我们要去下载一个Anaconda,Anaconda中包含了python中许多常用的库,下载时不建议到官网去下载,因为实在是太慢了,可以到清华大学开源软件镜像网站下载Anaconda相应的版本,https://mirror.tuna.tsinghua.edu.cn/help/anaconda/二、安装下载好的Anaconda,在安装的时候最好不要动安装的目录,默认就好,如果改动有可能会原创 2017-07-17 22:20:11 · 2507 阅读 · 0 评论 -
windows安装gensim
一、什么是gensimgensim是一个python的科学库,gensim包含了TF-IDF、随机投影、word2vec和document2vec算法的实现,分层Dirchlet过程(HDP),潜在语义分析(LSA)和潜在Dirichlet分配(LDA),包括分布式并行版本。主要是用来主题建模、文档索引以及使用大规模语料数据的相似性检索,被作者称为“根据纯文本进行监督性建模最健壮、最有效的、最原创 2017-08-05 21:39:17 · 36710 阅读 · 0 评论 -
textrank提取文档关键词
前言:我大致介绍一下TextRank算法的实现,对于细节和相关公式的介绍不做过多的介绍,感兴趣的同学可以去看TextRank算法的论文(英文版)里面有具体的实现,文章下载地址http://download.csdn.net/detail/sinat_29957455/9925407一、TextRank算法简介TextRank算法主要用于文档的关键词抽取和摘要的抽取,TextRank主要借鉴原创 2017-08-08 22:18:48 · 7664 阅读 · 0 评论