机器学习实战之分类算法第一章机器学习概论 (4)机器学习基本概念 (4)机器学习的主要任务以及相应的算法 (4)如何选择合适的算法? (4)机器学习应用的步骤 (5)第二章 K近邻算法(KNN) (5)工作原理 (5)实现步骤 (6)K近邻算法的优缺点 (6)第三章决策树 (7)基本思路 (7)集合无序程度测量 (7)应用场景 (7)优缺点 (7)第四章朴素贝叶斯分类 (8)基本思路 (8)基本假设 (8)条件概率 (8)词袋模型和词集模型 (9)优缺点 (10)标称型和数值型数据的区别 (10)主要应用及步骤 (10)第五章逻辑回归 (12)基本思想 (12)使用场景 (12)优缺点 (12)Sigmoid函数 (13)回归系数 (13)梯度上升法 (14)特征缺失处理 (14)标签缺失处理 (14)第六章支持向量机SVM (14)基本思想 (14)SVM第一层理解 (15)超平面的确定 (15)函数间隔和几何间隔 (15)最大间隔分类器 (16)SMO优化算法 (16)核函数 (19)应用场景 (19)第七章 AdaBoost分类 (19)Bagging (20)Boosting (20)Adaboost (20)Adaboost的优点 (20)Adaboost实现步骤 (21)第八章非均衡分类问题 (23)分类性能指标 (23)混淆矩阵 (23)ROC曲线 (24)处理非均衡问题的数据抽样 (24)第一章机器学习概论机器学习基本概念机器学习就是将无序的数据转化为有用的信息。
一个实例有n个特征,由n列组成。
机器学习最主要的任务就是分类,另一个就是回归,回归中比较典型的就是线性拟合。
分类和回归都属于监督学习,因为这类算法必须知道要预测什么,即已知目标变量的分类信息。
与监督学习对应的是无监督学习,此时数据没有类别信息,也不会给定目标值,将数据集合分成由类似的对象组成的多个类的过程叫做聚类。
将描述数据统计值的过程称之为密度估计。
分类首先要进行训练,训练样本集必须确定目标变量的值,以便发现特征与目标变量之间的关系。
特征或者属性通常是训练样本集的列,他们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。
机器学习的主要任务以及相应的算法如何选择合适的算法?如果要预测目标变量的值:1.如果目标变量的值是离散的,如是/否,1,2,3等可以选择分类器算法;2. 如果目标变量是连续的,就要采用回归算法如果不想预测目标变量的值,则可以选择无监督学习方法:1.是否需要将数据划分为离散的组,如果是,使用聚类方法,如果还需要估计数据与每个分组的相似程度,则需要使用密度估计方法机器学习应用的步骤1.收集数据2.准备输入数据3.分析输入数据4.训练算法5.测试算法6.使用算法第二章K近邻算法(KNN)工作原理存在一个数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每个数据属于哪个分类。
输入没有标签的新数据后,将新数据的每个特征和样本集中的数据特征进行比较,然后通过算法提取样本集中特征最相似的分类标签。
一般来说,选择数据集中前k个最相似的数据,这就是k-近邻算法的中k的出处,选择k个最先死数据中出现次数最多的分类,作为新数据的分类。
区别于K-means聚类方法,这是个有监督的机器学习方法,是一种分类方法。
实现步骤(1) 计算已知类别数据集中的额点与当前点的距离(2) 按照距离的递增次序排序(3) 选取与当前点最近的k个点(4) 确定当前点在前k个点所属类别的出现频率,如k=5,前5个点的类别分别为a a a b a,则当前点最终的分类为a(5) 将出现频率最高的一个作为当前点的类别代码实现K近邻算法的优缺点优点:算法简单,易于实现缺点:无法给出数据的内在含义;当数据较大时计算复杂度较高,而且是一种懒惰的学习方法。
另外,如果样本集中某一种样本特别多(样本分布不均衡)就有可能选中的几个近邻的k都是不正确的某一类,从而容易导致误分类。
第三章决策树基本思路20个问题之内得到答案,流程图就是一种决策树。
在构造决策树时,首先要选择用于分类的特征,使得划分的结果最好。
为此要评估每个特征,完成评估后,原始数据集就被划分为几个数据子集,这些子集分布在第一个决策节点的所有分支上,如果某个分支下的数据属于同一类型,则该分支作为一类(叶子节点)。
否则,重复划分子集,进行递归过程。
集合无序程度测量信息增益:数据分类是一个从无序到有序的过程,是一个信息增益递减(也就是熵)的过程。
如果可以很好地度量信息增益,就可以选择出信息增益减少最多的特征,也就是我们要依据分类的特征。
基尼不纯度:从一个数据集中随机选取子项,度量其被错误分类到其他分组里的概率。
应用场景垃圾邮件检测,泰坦尼克生存估计优缺点优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关的特征数据缺点:可能会过拟合第四章朴素贝叶斯分类基本思路在假设个特征相互独立,且每个特征同等重要的前提下,基于条件概率,对数据集中的每个数据(x,y)求p(Ci|x,y),即数据属于类别Ci的概率,将概率最高的那个类别作为当前数据的类别。
基本假设特征相互独立;每个特征同等重要条件概率求从Ci类中取出某一数据(x,y)的概率,也就是(x,y)属于Ci的概率p(C i|x,y)=p(C i)∗p(x,y|C i)p(x,y)p(C i|x,y):注意这不是概率表示方法,只是表示(x,y)属于Ci的概率p(C i):数据来自Ci类的概率p(x,y|C i):在Ci中(这是前提)(x,y)出现的概率p(x,y):(x,y)在整个数据集中出现的概率可以理解为上面为从Ci中取出(x,y)数据的个数,分母是整个数据集中(x,y)的个数,得出的概率自然是从Ci中取出(x,y)的概率词袋模型和词集模型(1)词集模型:Set Of Words,单词构成的集合,集合自然每个元素都只有一个,也即词集中的每个单词都只有一个(2)词袋模型:Bag Of Words,如果一个单词在文档中出现不止一次,并统计其出现的次数(频数)# 词集模型SOW = []for doc in dataset:vec = [0]*len(vocabList)for i, word in enumerate(vocabList):if word in doc:vec[i] = 1SOW.append(doc)# 词袋模型BOW = []for doc in dataset:vec = [0]*len(vocabList)for word in doc:vec[vocabList.index[word]] += 1BOW.append(vec)优缺点优点:在数据较少的情况下仍然有效,可处理多类别问题缺点:对于输入数据的准备方式较为敏感使用数值类型:标称型标称型和数值型数据的区别标称型:标称型目标变量的结果只在有限目标集中取值,如真与假(标称型目标变量主要用于分类)数值型:数值型目标变量则可以从无限的数值集合中取值,如0.100,42.001等(数值型目标变量主要用于回归分析)主要应用及步骤对文本进行分类:这里的一个样本就是一句话。
如判断一句话是否是侮辱性的话。
步骤:1.将数据集中侮辱性的语句和费侮辱性的语句进行手动标注,分成两个子集,侮辱性/非侮辱性语句子集。
2.然后进行文本处理,将所有语句切割成许多单词组成的集合vocabSet,对于每个子集的每一个语句,得到其中的单词在vocabSet中的位置向量indexVec(如果某个单词存在vocabSet中,则将indexVec相应的位置置1,不存在则置0),这样就得到了每句话中的单词在vocabSet中的存在情况。
3.对于每个子集(侮辱/非侮辱子集),计算每个单词在对应子集中出现的概率。
做法是将每个子集中的每个语句的位置矩阵indexVec相加得到所有单词出现的情况矩阵indexVecAbusive或者indexVecNorm,如果一个单词在一个子集中出现多次,则indexVecAbusive中对应位置的数目就会越大,也就意味着这个单词是侮辱性/非侮辱性的概率很大,比较能够代表这一子集的特征。
4.由于朴素贝叶斯假设个特征之间相互独立(这里的特征就是每个单词),也就是说假设各个单词的出现时没有关系的,有条件概率公式可知,每个特征(每个单词)在某一类中出现的概率p(x,y|C i)就可以通过indexVecAbusive/该子集中的所有单词数得到。
5.得到了每个特征(每个单词)在某一类中出现的概率p(x,y|C i),最终形成一个所有特征的概率向量p0Vect,p1Vect。
Ci类的概率p(C i):可以轻易地通过两个子集中的语句数/所有的语句数得到,而p(x,y)对于两类来说都是一样的,可以不进行计算,不影响p0,p1的计算结果。
至此训练结束。
6.测试开始。
将待测试的语句输入,得到其在单词集vocabSet中的位置矩阵vec2Classify,vec2Classify*p0Vect和vec2Classify*p1Vect进行比较,哪个大就属于哪一类对邮件进行分类,这里的一个样本就是一封邮件。
步骤:1.将正常邮件和垃圾邮件进行标注,并将每一封邮件(正常邮件和垃圾邮件)所涉及到的单词整合到一个二维列表docList中,docList每一行对应一封邮件所涉及的单词的列表,并对每一封邮件进行标注0或者12.选取训练集和测试集,使用与文本分类类似的训练方法,得到所有特征的概率向量p0Vect,p1Vect3.测试集可以随机从所有的邮件中选取一些,得到其在docList中的位置信息,类似的可以判断vec2Classify*p0Vect和vec2Classify*p1Vec的大小从而进行分类。
第五章逻辑回归基本思想逻辑回归的目的是寻找一个非线性函数sigmoid的最佳拟合参数,求解过程可以由最优化算法来完成。
最优化算法就是梯度上升算法,而梯度上升算法又可以简化为随机梯度上升算法。
根据现有数据对分类边界线建立回归公式,以此进行分类。
这里的分类源于最佳拟合,表示要找到最佳拟合参数集。
使用场景通常可用于多个特征来判断是否属于某一类,由于是逻辑回归,只能进行二值化判断,由于采用的是sigmoid函数,大于0.5即为一类,反之为另一类,所以分类的精度不是很高。
优缺点优点:计算代价低,易于理解和实现缺点:容易欠拟合,分类精度可能不高,(因为大于0.5的即被分为正类,反之为负类)适用于数值型和标称型数据Sigmoid函数σ(z)=11+e−z曲线如图所示关于(0.0.5)对称,随着z增大到inf,sigmoid值逼近1,反之当减小到-inf。