当前位置:   article > 正文

机器学习基础——逻辑回归与K-means(笔记六)_kmeans回归算法

kmeans回归算法

一、分类算法—逻辑回归与二分类

逻辑回归的应用场景:

  1. 广告点击率
  2. 是否为垃圾邮件
  3. 是否患病
  4. 金融诈骗
  5. 虚假账号

特点:都属于俩个类别之间的判断。逻辑回归就是解决二分类问题的利器。

逻辑回归的原理:

输入:h(w)=w1*x1+w2*x2+…+b

逻辑回归的输入就是一个线性回归的结果

激活函数:sigmoid函数

分析:回归的结果输入到sigmoid函数当中

输出结果:[0,1]区间中的一个概率值,默认为0.5位阈值

损失函数

(Y_predict-y_true)^2/总数

逻辑回归的真实值/预测值,是否属于某个类别

逻辑回归的损失:称之为对数似然损失

公式:

                                             

综合完整损失函数:

                                           

优化损失:

同样使用梯度下降优化算法,去减少损失函数的值。这样去更新逻辑回归前面对应算法的权重参数,提升原本属于1类的概率,降低原本是0类别的概率。

逻辑回归API

Sklearn.linear_model.LogisticRegression(solver=’libinear’,penalty=’l2’,C=1.0)

     Solver:优化求解方式(默认开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数)

            Sag:根据数据集自动选择,随机平均梯度下降

Penalty:正则化的种类

C:正则化力度

默认将类别数量少的当做正例

LogisticRegression方法相当于SGDClassifier(loss=”log”,penalty=””),SGDClassifier实现了一个普通的随机梯度下降学习,也支持平均随机梯度下降法(ASGD),可以通过设置average=True。而使用LogisticRegression(实现了SAG)

二、模型评估:

  1. 精确率与召回率

混淆矩阵:在分类任务下,预测结果(Predict Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵(适用于多分类)

 

                                                                                                                                    预测结果

真实结果

 

正例

假例

正例

真正例TP

伪反例FN

假例

伪正例FP

真反例TN

精确率(Precision):预测结果为正例样本中真实为正例的比例

召回率(Recall):真实为正例的样本中预测结果为正例的比例

还有其他的评估标准,F1-score,反映了模型的稳健性

                                                                                                               

API:

Sklearn.metrics.classification_report(y_true,y_pred,labels=[],target_name=None)

  1. Y_true:真实目标值
  2. Y_pred:估计器预测目标值
  3. Labels:指定类别对应的数字
  4. Target_name:目标类别名称
  5. Return:每个类别精确率与召回率

2.ROC曲线与AUC指标

  1. 知道TPR与FPR

TPR=TP/(TP+FN)所有真实类别为1的样本中,预测类别为1的比例

FPR=FP/(FP+TN)所有真实类别为0的样本中,预测类别为1的比例

  1. ROC曲线

ROC曲线的横轴就是FPRate,纵轴就是TPRate,当俩者相等时,表示的意义则是:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的,此时AUC为0.5

3.AUC指标(样本不均衡)

AUC的概率意义是随机取一对正负样本,正样本得分大于负样本的概率

AUC的最小值为0.5,最大值为1,取值越高越好

AUC=1,完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。

0.5<AUC<1,优于随机猜测.这个分类器妥善设定阈值的话,有预测价值

最终AUC的范围在[0.5,1]之间,并且越接近1越好

4.AUC计算API

From sklearn.metrics import roc_auc_score

Sklearn.metrics.roc_auc_score(y_true,y_score)

计算ROC曲线面积,即AUC值

Y_true:每个样本的真实类别,必须为0(反例),1(正例)标记

Y_score:预测得分,可以是正类的估计概率、置信值或者分类器方法的返回值

总结:AUC只能用来评价二分类,适合评价样本不平衡中的分类器性能

5.模型保存于加载:

API:from sklearn.externals import joblib

保存:joblib.dump(rf,”test.pkl”)

加载:eatimator=joblib.load(“test.pkl”)

三、无监督学习—K-means算法

没有目标值——无监督学习

无监督学习包含的算法:

  1. 聚类:K-means(K均值聚类)
  2. 降维:PCA

Kmeans原理:

K-means聚类步骤:

  1. 随机设置K个特征空间内的点作为初始的聚类中心
  2. 对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心点作为标记类别
  3. 接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值)
  4. 如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行第二部走过程

API:sklearn.cluster.KMeans(n_clusters=8,init=’k-means++”)

k-means聚类

n_clusters:开始的聚类中心数量

init:初始化方法,默认为’k-means++’

labels_:默认标记的类型,可以和真实值比较

Kmeans性能评估指标

轮廓指标:SCi=bi-ajmaxbi,aj [-1,1]

注:对于每个点i为已聚类数据中的样本,b_i为i到其他族群的所有样本的距离最小值,a_i为i到本身簇的距离平均值。最终计算出所有的样本点的轮廓系数平均值。(高内聚,低耦合)

轮廓数值分析:

根据公式:极端值考虑:如果b_i>>a_i;那么公式结果趋近于1;如果a_i>>b_i:那么公式结果趋近于-1.

结论:如果b_i>>a_i:趋近于1效果越好,b_i<<a_i:趋近于-1,效果不好。轮廓系数的值是介于[-1,1],越趋近于1代表内聚度和分离度都相对较优。

轮廓系数API:

Sklearn.metrics.silhouette_score(X.labels)

计算所有样本的平均轮廓系数

X:特征值

Labels:被聚类标记的目标值

K-means总结:

特点分析:采用迭代式算法,直观易懂并且实用

缺点:容易收敛局部最优解(多次聚类)

注:聚类一般做在分类前

应用场景:没有目标值,分类

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号