有监督的数据挖掘算法-分类
- 回归:在建模的过程中需同时具备自变量x和因变量y,属于有监督的学习算法。输出变量为离散型。
- 主要介绍:Logistic,决策树,随机森林,KNN,朴素贝叶斯
- tips:决策树,随机森林,KNN也可用于连续型变量的预测。
Logistic回归:
- 思想:前边的线性,岭回归,LASSO等均是预测连续型因变量,如根据价格,广告力度,销售渠道等因素预测利润高低。Logistic针对离散型因变量的判别,如客户是否优质,客户的流失率概率等。
将线性回归的预测值经过非线性的Logit函数转换为[0,1]之间的概率值。参数求解:结合迭代对每一个未知的参数做梯度下降,学习率的步长通常可以取0.1,0.05,0.01,太小时需要迭代太多次收敛速度过慢,过大时难以得到理想的值可能只是局部最小。参数解释:优势比/发生比之比,如肿瘤体积每增加一个单位,将会使癌症发生比变化e参数次倍。 - PYTHON的实现:sklearn.linear_model.LogisticRegression。
- 重要:分类模型的评估方法:混淆矩阵;ROC曲线:
混淆矩阵:pandas.crosstab/sklearn.metrics.confusion_matrix,一般会选择准确率Accuracy,正例覆盖率Sensitivity,负例覆盖率Specificity这三个作为评估模型的指标。结合heat map。
ROC曲线:x轴为1-Specificity负例错判率,y轴为Sensitivity正例覆盖率。面积为AUC。sklearn.roc_curve。
决策树:
-
思想:可用于数值型因变量的预测和离散型因变量的分类。熵的概念。
经验信息熵:
条件熵:
信息增益:
信息增益率:
基尼系数(二分类):
PYTHON中选择了用基尼系数的CART算法,对于离散型的分类问题,叶节点中哪一类样本多,该叶节点就代表哪一类,对于数值型的预测问题,将叶节点的样本均值作为该节点的预测值。 -
PYTHON的实现:sklearn.tree.DecisionTreeClassifier;sklearn.tree.DrcisionTreeRegressor。
-
重要:sklearn.model_selection.GridSearchCV,得到最佳的树生长深度,能继续分支的最小样本量,叶节点的最小样本量。
-
决策树的减枝:误差降低剪枝;悲观剪枝;代价复杂度剪枝等,不过没有实现的模块。分类问题,依旧可用混淆矩阵和ROC判定模型的好坏。预测问题,MSE/RMSE。
随机森林:
- 思想:利用Bootstrap从原始数据中生成k个数据集,每个数据集有N个观测值,P个自变量;每个数据集构造一颗CART决策树,字段随机选择p个;充分生长不剪枝;对于分类问题用投票法,最高得票的类别用于最终的判断结果,回归问题则利用均值法。运行速度快,预测准确率高。
- PYTHON的实现:sklearn.ensemble.RandomForestClassifier;sklearn.ensemble.RandomForestRef=gressor。
KNN:
-
思想:K最近邻算法,搜寻最近的k个已知类别样本用于未知类别样本的预测。确定未知样本近邻的个数k值;根据样本间的度量指标(如欧式距离)将每一个未知类别样本的最近k个样本搜寻出来,形成一个簇;对搜寻出来的已知样本进行投票,将各簇内的类别最多的分类用于未知样本点的预测。
-
PYTHON的实现:sklearn.neighbors.KNeighborsClassifier;sklearn.neighbors.KNeighborsRegressor。
-
最佳K值:K过小,未知样本由最近的已知样本决定,训练效果好,测试不好,过拟合;K过大,由已知样本的最高频数类别决定,欠拟合。A:设置投票权重,B:采用多重交叉验证(model_selection.cross_val_score)
相似度的度量方法:欧式距离;曼哈顿距离;余弦相似度;杰卡德相似度。
近邻搜索法:暴力搜寻法;KD树搜寻(方差)和球树搜寻(球心的寻找和半径的计算)。 -
分类问题,依旧可用混淆矩阵和ROC判定模型的好坏。预测问题,MSE/RMSE。
朴素贝叶斯:
-
思想:专门用于解决分类问题,如垃圾邮件的识别,手字体的识别,广告技术中的推荐系统等。
条件概率:
全概率:
最大概率值对应的类别作为样本的最终分类:
假设自变量是独立的(自变量间的独立性越强,贝叶斯的分类器效果越好): -
PYTHON的实现:数值型,sklearn.naive_bayes.GaussianNB;离散型,sklearn.naive_bayes.MultinatioanalNB;0-1型,sklearn.naive_bayes.BernoulliNB。
-
重要:
高斯分类器:
多项式分类器:
伯努利分类器: -
分类问题,依旧可用混淆矩阵和ROC判定模型的好坏。