机器学习
机器学习
杨林伟
像火箭科学家一样思考!
展开
-
23 机器学习 - 证明SVM
说实话,凡是涉及到要证明的东西.理论,便一般不是怎么好惹的东西。绝大部分时候,看懂一个东西不难,但证明一个东西则需要点数学功底,进一步,证明一个东西也不是特别难,难的是从零开始发明创造这个东西的时候,则显艰难(因为任何时代,大部分人的研究所得都不过是基于前人的研究成果,前人所做的是开创性工作,而这往往是最艰难最有价值的,他们被称为真正的先驱。牛顿也曾说过,他不过是站在巨人的肩上。你,我则更是如此)...原创 2019-09-29 13:41:26 · 857 阅读 · 0 评论 -
22 机器学习 - 深入SVM
1 从线性可分到线性不可分1.1 从原始问题到对偶问题的求解接着考虑之前得到的目标函数:因为现在的目标函数是二次的,约束条件是线性的,所以它是一个凸二次规划问题。这个问题可以用现成的QP (Quadratic Programming) 优化包进行求解。一言以蔽之:在一定的约束条件下,目标最优,损失最小。此外,由于这个问题的特殊结构,还可以通过拉格朗日对偶性(Lagrange Dual...原创 2019-09-29 10:55:59 · 540 阅读 · 0 评论 -
21 机器学习 - SVM
支持向量机,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。1.分类标准的起源:Logistic回归理解SVM,咱们必须先弄清楚一个概念:线性分类器。给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这...原创 2019-09-29 10:35:41 · 421 阅读 · 0 评论 -
20 机器学习 - Lineage逻辑回归算法分类案例
需求对给定的先验数据集,使用logistic回归算法对新数据分类代码实现1.定义sigmoid函数def loadDataSet(): dataMat = []; labelMat = [] fr = open('d:/testSet.txt') for line in fr.readlines(): lineArr = line.strip()....原创 2019-09-27 17:51:50 · 413 阅读 · 0 评论 -
19 机器学习 - Lineage逻辑回归分类算法
1.概述Lineage逻辑回归是一种简单而又效果不错的分类算法什么是回归:比如说我们有两类数据,各有50个点组成,当我门把这些点画出来,会有一条线区分这两组数据,我们拟合出这个曲线(因为很有可能是非线性),就是回归。我们通过大量的数据找出这条线,并拟合出这条线的表达式,再有新数据,我们就以这条线为区分来实现分类。下图是一个数据集的两组数据,中间有一条区分两组数据的线。2 算法思想Lin...原创 2019-09-27 17:47:08 · 465 阅读 · 0 评论 -
18 机器学习 - 决策树分类器案例
1.案例需求我们的任务就是训练一个决策树分类器,输入身高和体重,分类器能给出这个人是胖子还是瘦子。所用的训练数据如下,这个数据一共有10个样本,每个样本有2个属性,分别为身高和体重,第三列为类别标签,表示“胖”或“瘦”。该数据保存在1.txt中。1.5 50 thin1.5 60 fat1.6 40 thin1.6 60 fat1.7 60 thin1.7 80 fat1.8 6...原创 2019-09-27 17:32:28 · 1044 阅读 · 0 评论 -
17 机器学习 - 决策树分类算法原理
1. 概述决策树(decision tree)——是一种被广泛使用的分类算法。相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置在实际应用中,对于探测式的知识发现,决策树更加适用2. 算法思想通俗来说,决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话:女儿:多大年纪了?母亲:26。女儿:长的帅不帅?母亲:挺帅的。女...原创 2019-09-27 17:26:21 · 1983 阅读 · 0 评论 -
16 机器学习 - CF协同过滤算法补充
计算距离的数学公式欧几里德距离(Euclidean Distance)最初用于计算欧几里德空间中两个点的距离,假设 x,y 是 n 维空间的两个点,它们之间的欧几里德距离是:可以看出,当 n=2 时,欧几里德距离就是平面上两个点的距离。当用欧几里德距离表示相似度,一般采用以下公式进行转换:距离越小,相似度越大皮尔逊相关系数(Pearson Correlation Coefficien...原创 2019-09-27 17:11:24 · 442 阅读 · 0 评论 -
15 机器学习 - CF协同过滤推荐(电影推荐案例)
1. 需求根据一个用户对电影评分的数据集来实现基于用户相似度的协同过滤算法推荐,相似度的算法采用皮尔逊相关系数法数据样例如下:用户ID:电影ID:评分:时间1::1193::5::9783007601::661::3::9783021091::914::3::9783019681::3408::4::9783002751::2355::5::9788242911::1197::3...原创 2019-09-27 17:05:20 · 959 阅读 · 0 评论 -
14 机器学习 - CF协同过滤推荐算法原理
1 概述什么是协同过滤 (Collaborative Filtering, 简称 CF)?首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。协同过滤算法又分为基于用户的协同过滤算法和基于物品的协同过滤算法2 案例需求如下...原创 2019-09-27 16:52:36 · 1139 阅读 · 0 评论 -
13 机器学习 - KNN算法补充
k值设定为多大?k太小,分类结果易受噪声点影响;k太大,近邻中又可能包含太多的其它类别的点。(对距离加权,可以降低k值设定的影响)k值通常是采用交叉检验来确定(以k=1为基准)经验规则:k一般低于训练样本数的平方根类别如何判定最合适?投票法没有考虑近邻的距离的远近,距离更近的近邻也许更应该决定最终的分类,所以加权投票法更恰当一些。而具体如何加权,需要根据具体的业务和数据特性来探索如何选...原创 2019-09-27 16:18:34 · 380 阅读 · 0 评论 -
12 机器学习 - KNN实现手写数字识别
需求利用一个手写数字“先验数据”集,使用knn算法来实现对手写数字的自动识别;先验数据(训练数据)集:数据维度比较大,样本数比较多。数据集包括数字0-9的手写体。每个数字大约有200个样本。每个样本保持在一个txt文件中。手写体图像本身的大小是32x32的二值图,转换到txt文件保存后,内容也是32x32个数字,0或者1,如下:数据集压缩包解压后有两个目录:目录train...原创 2019-09-27 16:12:23 · 850 阅读 · 0 评论 -
11 机器学习 - KNN简单数据分类实现
本文讲解KNN来对简单数据进行分类,数据虽然是抽象的,但其实可以映射到任意具体业务上,常见的例子:1.根据已毕业学生各科成绩及其就业数据来预测或引导应届毕业生生就业方向2.根据客户各属性及其购买行为,来预测新客户的购买行为需求计算地理位置的相似度有以下先验数据,使用knn算法对未知类别数据分类:属性1属性2类别1.00.9A1.01.0A...原创 2019-09-27 15:51:56 · 763 阅读 · 0 评论 -
10 机器学习 - KNN分类算法原理
1 概述K最近邻(k-Nearest Neighbor,KNN)分类算法是最简单的机器学习算法。(机器学习,算法本身不是最难的,最难的是:1、数学建模:把业务中的特性抽象成向量的过程;2、选取适合模型的数据样本。这两个事都不是简单的事。算法反而是比较简单的事。)KNN算法的指导思想是“近朱者赤,近墨者黑”,由你的邻居来推断出你的类别。本质上,KNN算法就是用距离来衡量样本之间的相似度2 算...原创 2019-09-27 15:37:14 · 1344 阅读 · 0 评论 -
09 机器学习 - Kmeans聚类算法案例
1. 需求对给定的数据集进行聚类本案例采用二维数据集,共80个样本,有4个类。样例如下(testSet.txt):1.658985 4.285136-3.453687 3.4243214.838138 -1.151539-5.379713 -3.3621040.972564 2.924086-3.567919 1.5316110.450614 -3.3022...原创 2019-09-27 15:26:02 · 2820 阅读 · 2 评论 -
08 机器学习 - Kmeans聚类算法原理
1.概述K-means算法是集简单和经典于一身的基于距离的聚类算法采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为类簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。2 算法图示假设我们的n个样本点分布在图中所示的二维空间。从数据点的大致形状可以看出它们大致聚为三个cluster,其中两个紧凑一些,剩下那个松散一些,如图所示:我们的...原创 2019-09-27 15:13:38 · 1409 阅读 · 0 评论 -
07 机器学习 - 朴素贝叶斯分类算法(案例二)
利用大量邮件先验数据,使用朴素贝叶斯分类算法来自动识别垃圾邮件。python实现:#过滤垃圾邮件def textParse(bigString): #正则表达式进行文本解析 import re listOfTokens = re.split(r'\W*',bigString) return [tok.lower() for tok in listOfToke...原创 2019-09-27 14:51:36 · 803 阅读 · 0 评论 -
06 机器学习 - 朴素贝叶斯分类算法(案例一)
需求以在线社区的留言板为例。为了不影响社区的发展,我们要屏蔽侮辱性的言论,所以要构建一个快速过滤器,如果某条留言使用了负面或者侮辱性的语言,那么就将该留言标识为内容不当。过滤这类内容是一个很常见的需求。对此问题建立两个类别:侮辱类和非侮辱类,使用1和0分别标识。有以下先验数据,使用bayes算法对未知类别数据分类:帖子内容类别‘my’,‘dog’,‘has’,‘flea’...原创 2019-09-27 14:49:04 · 896 阅读 · 0 评论 -
05 机器学习 - 朴素贝叶斯分类算法原理
1.概述贝叶斯分类算法是一大类分类算法的总称贝叶斯分类算法以样本可能属于某类的概率来作为分类依据朴素贝叶斯分类算法是贝叶斯分类算法中最简单的一种注:朴素的意思是条件概率独立性,此处要想真正理解,需要有概率论的基础知识P(A|x1x2x3x4)=p(A|x1)*p(A|x2)p(A|x3)p(A|x4)则为条件概率独立P(xy|z)=p(xyz)/p(z)=p(xz)/p(z)*p(...原创 2019-09-27 14:35:50 · 612 阅读 · 0 评论 -
04 机器学习 - 数据挖掘与机器学习导论
1. 数据挖掘简而言之,数据挖掘(Data Mining)是有组织有目的地收集数据,通过分析数据使之成为信息,从而在大量数据中寻找潜在规律以形成规则或知识的技术。2. 数据挖掘与机器学习的关系机器学习可以用来作为数据挖掘的一种工具或手段;数据挖掘的手段不限于机器学习,譬如还有诸如统计学等众多方法;但机器学习的应用也远不止数据挖掘,其应用领域非常广泛,譬如人工智能;3. 机器学习3.1...原创 2019-09-27 11:39:15 · 622 阅读 · 1 评论 -
03 机器学习 - Python基础回顾(三)
1 什么是NumpyNumpy是Python的一个科学计算的库主要提供矩阵运算[考虑是否需要补充讲解最基本的矩阵运算知识]的功能,而矩阵运算在机器学习领域应用非常广泛。Numpy一般与Scipy、matplotlib一起使用。虽然python中的list已经提供了类似于矩阵的表示形式,不过Numpy为我们提供了更多的函数。2 安装导入了NumpyMac下安装pip:sudo easy...原创 2019-09-27 11:20:29 · 317 阅读 · 0 评论 -
02 机器学习 - Python基础回顾(二)
Python数据类型详解本文主要讲解Python的几种数据类型:1、字符串2、布尔类型3、整数4、浮点数5、数字6、列表7、元组8、字典9、日期1 字符串1.1 如何在Python中使用字符串a、使用单引号(’)用单引号括起来表示字符串,例如:str='this is string';print str;b、使用双引号(")双引号中的字符串与单引号中的字符串...原创 2019-09-26 14:23:08 · 700 阅读 · 0 评论 -
01 机器学习 - Python基础回顾(一)
在学习机器学习的内容之前,下面来快速回顾下Python。1.Python简介Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。Pyth...原创 2019-09-23 17:49:29 · 525 阅读 · 0 评论