您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 若干实用分类器介绍.
若干实用分类器介绍大纲•概述•评价指标•K近邻•决策树与随机森林•逻辑斯蒂回归(LogisticRegression)•支持向量机•使用weka概述•机器学习vs数据挖掘•有监督学习•分类•回归•无监督学习•聚类•关联分析•异常检测•……•半监督学习•强化学习评价指标预测值实际值Class=YesClass=NoClass=Yesa(TP)b(FN)Class=Noc(FP)d(TN)ALLTNTPAccuracyprrpFNTPTPFPTPTP2(F)measure-F(r)Recall(p)Precision评价指标--ROC曲线和AUC•UseclassifierthatproducesposteriorprobabilityforeachtestinstanceP(+|A)•SorttheinstancesaccordingtoP(+|A)indecreasingorder•ApplythresholdateachuniquevalueofP(+|A)•CountthenumberofTP,FP,TN,FNateachthreshold•TPrate,TPR=TP/(TP+FN)•FPrate,FPR=FP/(FP+TN)InstanceP(+|A)TrueClass10.95+20.93+30.87-40.85-50.85+60.76-K近邻•算法描述•输入:数据集T={(x1,y1),(x2,y2),…,(xn,yn)}和待预测的instancex;其中x1,..,xn是特征向量(featurevector),y1,…,yn是对应的离散标签(label)•输出:x对应的标签•方法:选择一个距离/相似度度量,如欧几里德距离,余弦相似度,曼哈顿距离;指定一个K;在T中选择与x相似度最高或者距离最小的K个instance,根据多数投票原则预测x的标签•实现方法•普通方法,扫描全部实例•高级方法,借助k-d树K近邻•注意点:•K值的选择•特征归一化•K近邻的优势•不需要训练•一般来说效果还可以•K近邻的劣势•需要存储所有的实例,预测过程比较慢•高维数据表现差•右图为1近邻的决策边界VoronoidiagramK近邻实例fromsklearn.neighborsimportKNeighborsClassifierX=[[0,0],[1,1],[2,2],[3,5]]y=[0,0,1,1]neigh=KNeighborsClassifier(n_neighbors=3)neigh.fit(X,y)print(neigh.predict([[1.1,0.9]]))print(neigh.predict_proba([[0.9,0.9]]))运行结果:[0][[0.666666670.33333333]]://scikit-learn.org/stable/modules/generated/sklearn.neighbors.DistanceMetric.html决策树•决策树就是一系列if-else语句•如果我们有足够的专业知识,也可以自己写这些if-else•决策树则帮助我们从数据中自动学习出这些if-else规则决策树•大致思路•把所有数据作为树的根节点•判断根节点纯度,如果足够纯净,退出;否则,继续执行下面步骤•选择一个最佳特征,利用这个特征对数据划分,生成子节点,在每个子节点中,用多数投票法来决定该子节点的标签•所谓“最佳”,就是希望每个子节点都尽可能纯净•在每个子节点上,递归执行以上步骤决策树—算法描述决策树—相关概念•纯度指标•信息增益•信息增益比决策树•注意点•选参数注意避免过拟合•优势•训练通常比较快,用于分类时非常快•具有可解释性,尤其对于较小的决策树•劣势•参数选择不当时容易过拟合•数据敏感性•右侧的情况可能导致问题(可以用斜决策树(obliquedecisiontree)解决,不过更复杂)决策树实例=DecisionTreeClassifier(random_state=0)#clfisshortforCLassiFieriris=load_iris()print(cross_val_score(clf,iris.data,iris.target,cv=10))运行结果:[1.0.93331.0.93330.93330.86670.933333331.1.1.]随机森林•想法;用多个决策树进行投票来避免过拟合以及数据敏感性•算法描述:•输入:N个样本及对应标签,每个样本有M个特征•输出:可用于预测样本标签的模型•(1)从N个样本中有放回取样(samplewithreplacement),得到N个训练样本(可能有重复),未被选中的作为测试集•(2)从M个特征中随机选取一部分特征(可能是sqrt(M)或者log2(M)+1个)•(3)用这部分数据训练一个决策树•(4)重复以上过程,训练多个决策树,得到随机森林模型;预测时,用这些决策树去预测,然后加权投票随机森林•优势•效果通常较好•还算比较高效•一般不容易过拟合•劣势•决策面平行于属性的坐标轴(和决策树一样的问题)随机森林实例fromsklearn.ensembleimportRandomForestClassifierfromsklearn.cross_validationimporttrain_test_splitfromsklearn.datasetsimportload_irisiris=load_iris()feature_train,feature_test,target_train,target_test=train_test_split(iris.data,iris.target,test_size=0.4,random_state=42)clf=RandomForestClassifier(n_estimators=10)clf.fit(feature_train,target_train)printtrainingaccuracy:,clf.score(feature_train,target_train)printtestingaccuracy:,clf.score(feature_test,target_test)运行结果:trainingaccuracy:1.0testingaccuracy:1.0逻辑斯蒂回归通常,机器学习问题可以分为两类:分类和回归,当待预测值为离散值时,称之为分类;当待预测值为连续值时,称之为回归。不过,逻辑斯蒂回归实际上是一个分类算法。寻找最佳的w和b,以最大化观察到这样一个数据集的可能性——最大似然估计逻辑斯蒂回归•最大似然估计•最大似然估计就是最大化似然函数,假设我们的数据集的特征构成的矩阵(designmatrix)为X,目标向量为Y,参数是w和b,则似然函数就是P(Y|X;w,b)•根据独立同分布假设,似然函数可以分解为P(y1|x1;w,b)*P(y2|x2;w,b)*…*P(yn|xn;w,b)•所以这个优化问题就是:选取w和b,使得上式最大•对上式取对数,得到对数似然函数,然后可以用最优化算法来求解,通常采用梯度下降法或拟牛顿法逻辑斯蒂回归•优势•高效•适合高维数据•不需要调参•劣势•不明确逻辑斯蒂回归实例fromsklearnimportlinear_model,datasetsfromsklearn.cross_validationimportcross_val_scoreiris=datasets.load_iris()logreg=linear_model.LogisticRegression(C=1e5)printcross_val_score(logreg,iris.data.tolist(),iris.target.tolist(),cv=5)运行结果:[0.966666670.966666670.933333330.933333331.]支持向量机•想法:找一个最大间隔超平面来分割数据点软间隔支持向量机•勉强线性可分•非线性可分支持向量机--核技巧•将非线性可分的点映射到高维空间使得其线性可分(在低维空间看来就是一个非线性超平面)•常用的核•多项式核•RBF•sigmoid支持向量机•注意点•数据需要归一化•需要调参,可以采用网格搜索,让参数指数增长(如2e-15,2e-14,2e-13,…,2e5,2e6)•优势•效果较好•可以处理高维数据•劣势•训练比较耗时,一般只能在较小的数据集上运行(比如,10000个样本以内)支持向量机实例importnumpyasnpfromsklearn.svmimportSVCX=np.array([[-1,-1],[-2,-1],[1,1],[2,1]])y=np.array([1,1,2,2])clf=SVC()clf.fit(X,y)SVC(C=1.0,cache_size=200,class_weight=None,coef0=0.0,degree=3,gamma=0.0,kernel='rbf',max_iter=-1,probability=False,random_state=None,shrinking=True,tol=0.001,verbose=False)print(clf.predict([[-0.8,-1]]))运行结果:[1]使用weka•输入文件准备•普通csv•Arff格式@relationduration_classification2_use_type2_target@attributeroom_numnumeric%%setpost_monthandseasonnumericornominal?–Thisiscomment%@attributepost_monthnumeric@attributepost_month{1,2,3,4,5,6,7,8,9,10,11,12}….@attributeduration{0,1,2,3,4}@data1,62,9,2,197,31653,0,0,27,4,3,2011,1,4,8,8,0,9,0,2,1,25,3.1,6023,0.3,116.611104,39.919899,21,61,9,2,200,32738,0,0,27,4,2,2011,1,4,8,8,0,9,0,2,1,25,3.1,6023,0.3,116.611104,39.919899,21,62,9,2,175,28276,1,2,28,4,3,2011,1,4,8,8,0,9,0,2,1,25,3.1,6023,0.3,116.611104,39.919899,2使用weka资源•软件•Sklearn•Weka•libsvm•数据集••课程••htt
本文标题:若干实用分类器介绍.
链接地址:https://www.777doc.com/doc-2054837 .html