精华内容
下载资源
问答
  • 微信小程序流量主广告分类展现形式
    2021-06-14 13:58:56

    小程序广告分配常用的有五种,Banner广告、格子广告、视频广告、激励式广告和插屏广告,下面通过案例图片来更直观的了解他们的区别:

    1.Banner广告组件
    在这里插入图片描述
    2.格子广告组件
    在这里插入图片描述
    3.视频广告组件
    在这里插入图片描述
    4.激励式广告组件
    在这里插入图片描述
    5.插屏广告组件
    在这里插入图片描述

    下面是流量主案例,可以扫描进去亲自感受下:
    在这里插入图片描述

    更多相关内容
  • 常用广告材质分类及其优缺点.doc
  • MVC项目框架,包含广告启动页,常用分类等, Github: https://github.com/JWXIAN/MVCProject
  • Githiub: https://github.com/JWXIAN/MVCProject
  • 分类算法

    千次阅读 2020-12-09 18:53:16
    逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归。 2. 应用场景 数据不均衡问题 广告点击率 是否为垃圾邮件 是否患病 金融诈骗 虚假账号 3. 原理 线性...

    1. 简介

    1.1 定义

    • 分类算法通过对已知类别训练集的计算和分析,从中发现类别规则并预测新数据的类别。

    1.2 应用场景

    • 分类算法是解决分类问题的方法,是数据挖掘、机器学习和模式识别中一个重要的研究领域。

    • 分类的主要用途和场景是“预测”,基于已有的样本预测新样本的所属类别,例如信用评级、风险等级、欺诈预测等。 分类算法也可以用于知识抽取,通过模型找到潜在的规律,帮助业务得到可执行的规则。

    1.3 地位

    • 分类和回归是解决实际运营问题中非常重要的两种分析和挖掘方法。

    1.4 分类

    • 常用的分类算法包括朴素贝叶斯、逻辑回归、决策树、随机森林、支持向量机等。

    2. 应用

    2.1 简介

    案例 电信客户流失预测

    • AT&T数据,用户个人,通话,上网等信息数据
    • 充分利用数据预测客户的流失情况
    • 帮助挽留用户,保证用户基数和活跃程度

    2.2 数据说明

    • CustomerID 客户ID
    • Gender 性别
    • partneratt 配偶是否也为att用户
    • dependents_att 家人是否也是att用户
    • landline 是否使用att固话服务
    • internet_att/internet_other 是否使用att的互联网服务
    • Paymentbank/creditcard/electroinc 付款方式
    • MonthlyCharges 每月话费
    • TotalCharges 累计话费
    • Contract_month/1year 用户使用月度/年度合约
    • StreamingTv/streamingMovies 是否使用在线视频或者电影app
    • Churn 客户转化的flag

    2.3 处理流程

    • 分析流程:数据概况分析->单变量分析->相关性分析与可视化->回归模型
    • 数据概况分析
      • 数据行/列数量
      • 缺失值分布
    • 单变量分析
      • 数字型变量的描述指标(平均值,最大最小值,标准差)
      • 类别型变量(多少个分类,各自占比)
      • 正负样本占比
    • 相关性分析与可视化
      • 按类别交叉对比
      • 变量之间的相关性分析
      • 散点图/热力图
    • 逻辑回归分析
      • 模型建立
      • 模型评估与优化

    2.4 实现

    步骤
    
    1 加载数据,查看churn.info()
    
    2 对churn列和gender列进行onehot编码
    
    3 churn的onehot编码中churn_yes作为标签列,churn_no丢弃
    
    gender_yes gender_no都保留
    
    **4 churn.flag.value_counts() churn.flag.value_counts(1)查看正负样本分布** 正负样本是人为定义的,关注哪个类别则定义该类别为正样本
    
    5 按照flag分组,计算平均值,查看相关特征
    
    6 围绕flag变量,分析其他变量与flag的相关关系
    
    7 选择相关性比较高的作为特征
    
    8 构建模型,训练评估
    
    9 如果评估结果不理想,则重新选择特征重新训练
    
    
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    %matplotlib inline 
    churn=pd.read_csv('churn.csv')
    churn.info()
    
      RangeIndex: 7043 entries, 0 to 7042
      Data columns (total 16 columns):
      Churn                7043 non-null object
      gender               7043 non-null object
      Partner_att          7043 non-null int64
      Dependents_att       7043 non-null int64
      landline             7043 non-null int64
      internet_att         7043 non-null int64
      internet_other       7043 non-null int64
      StreamingTV          7043 non-null int64
      StreamingMovies      7043 non-null int64
      Contract_Month       7043 non-null int64
      Contract_1YR         7043 non-null int64
      PaymentBank          7043 non-null int64
      PaymentCreditcard    7043 non-null int64
      PaymentElectronic    7043 non-null int64
      MonthlyCharges       7043 non-null float64
      TotalCharges         7043 non-null float64
      dtypes: float64(2), int64(12), object(2)
      memory usage: 880.5+ KB
    
    #预测目标是churn,是类别型变量  gender也是类别型变量 需要对类别型变量进行处理
    churn.head()
    
        Churn  gender  Partner_att  Dependents_att  landline  internet_att  
      0    No  Female            1               0         0             1   
      1    No    Male            0               0         1             1   
      2   Yes    Male            0               0         1             1   
      3    No    Male            0               0         0             1   
      4   Yes  Female            0               0         1             0   
    
         internet_other  StreamingTV  StreamingMovies  Contract_Month  Contract_1YR  
      0               0            0                0               1             0   
      1               0            0                0               0             1   
      2               0            0                0               1             0   
      3               0            0                0               0             1   
      4               1            0                0               1             0   
    
         PaymentBank  PaymentCreditcard  PaymentElectronic  MonthlyCharges  
      0            0                  0                  1           29.85   
      1            0                  0                  0           56.95   
      2            0                  0                  0           53.85   
      3            1                  0                  0           42.30   
      4            0                  0                  1           70.70   
    
         TotalCharges  
      0         29.85  
      1       1889.50  
      2        108.15  
      3       1840.75  
      4        151.65
    
    #需要把churn和gender转变为数字型变量,使用get_dummies
    churn=pd.get_dummies(churn)
    churn.head()
    
         Churn_No  Churn_Yes  gender_Female  gender_Male  
      0         1          0              1            0  
      1         1          0              0            1  
      2         0          1              0            1  
      3         1          0              0            1  
      4         0          1              1            0
    
    #数据整理,将churn_yes保留,将female保留,drop不需要的数据
    churn.drop(['Churn_No','gender_Male'],axis=1,inplace=True)
    #变量大小写不规则,统一变成小写
    churn.columns=churn.columns.str.lower()
    churn.head()
    
         churn_yes  gender_female  
      0          0              1  
      1          0              0  
      2          1              0  
      3          0              0  
      4          1              1
    
    #将churn_yes重命名,方便后续的变量编写
    churn=churn.rename(columns={'churn_yes':'flag'})
    #二分类模型,分析flag 1和0的占比
    churn.flag.value_counts()
    
    
      0    5174
      1    1869
      Name: flag, dtype: int64
    
    churn.flag.value_counts(1)
    
      0    0.73463
      1    0.26537
      Name: flag, dtype: float64
    
    summary=churn.groupby('flag')
    summary.mean()
    
            partner_att  dependents_att  landline  internet_att  internet_other  
      flag                                                                        
      0        0.528218        0.344801  0.901044      0.379204        0.347700   
      1        0.357945        0.174425  0.909042      0.245586        0.693954   
    
            streamingtv  streamingmovies  contract_month  contract_1yr  paymentbank  
      flag                                                                            
      0        0.365868         0.369927        0.429068      0.252609     0.248550   
      1        0.435527         0.437667        0.885500      0.088818     0.138042   
    
            paymentcreditcard  paymentelectronic  monthlycharges  totalcharges  
      flag                                                                       
      0              0.249324           0.250097       61.265124   2545.918081   
      1              0.124131           0.573034       74.441332   1528.514714   
    
            gender_female  
      flag                 
      0          0.492656  
      1          0.502408
    
    • 观察flag在0和1的情况下,所有自变量的差别 internet_other变量,在0的分组中,均值是0.35,在1的分组中,均值是0.69。数据显示如果使用别的公司的互联网,用户流失的概率就越高
    sns.countplot(y='contract_month',hue='flag',data=churn)
    

    plt_lr

    • 结论:contract_month为1的客户流失的概率更高,即与非按月付费客户相比,按月付费客户流失比例高
    • 相关性分析
    #围绕flag变量,分析其他变量与flag的相关关系
    churn.corr()[['flag']].sort_values('flag',ascending=False)
    
                           flag
    flag               1.000000
    contract_month     0.405103
    internet_other     0.308020
    paymentelectronic  0.301919
    monthlycharges     0.193356
    streamingtv        0.063228
    streamingmovies    0.061382
    landline           0.011942
    gender_female      0.008612
    paymentbank       -0.117937
    internet_att      -0.124214
    paymentcreditcard -0.134302
    partner_att       -0.150448
    dependents_att    -0.164221
    contract_1yr      -0.177820
    totalcharges      -0.198175
    
    # contract_month与internet_other与flag相关性高
    
    • 逻辑回归模型
    #设定因变量与自变量, y 是 flag, x 根据刚才的相关分析挑选contract_month,internet_other与streamingtv
    #自变量可以分为几类,partner/dependents,internet,streaming,contract,payment,charges,后续大家可以自己挑选进行建模
    y=churn['flag']
    x=churn[['contract_month','internet_other','streamingtv']]
    #模型优化,streamingtv调整为paymentelectronic
    y=churn['flag']
    x=churn[['contract_month','internet_other','paymentelectronic']]
    #调用sklearn模块,随机抽取训练集与测试集
    from sklearn.model_selection import train_test_split
    x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=100)
    #模型优化,测试集与训练集对半分,第三次也跑这里
    from sklearn.model_selection import train_test_split
    x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.5,random_state=100)
    #使用sklearn
    from sklearn import linear_model
    lr=linear_model.LogisticRegression()
    lr.fit(x_train,y_train)
    """
      LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,
                penalty='l2', random_state=None, solver='liblinear', tol=0.0001,
                verbose=0, warm_start=False)
    """
    
    • 模型的截距与系数
    #第一次
    lr.intercept_
    lr.coef_
    #array([-3.21761938])
    #array([[2.19790192, 1.14360005, 0.23641705]])
    #第二次,测试集与训练集对半分
    lr.intercept_
    array([-3.26144359])
    array([[2.23886897, 1.09248895, 0.32579547]])
    #第三次,变量调整
    array([-3.18770265])
    array([[2.0019671 , 1.02830763, 0.62165925]])
    
    • 模型的评估
    y_pred_train=lr.predict(x_train)
    y_pred_test=lr.predict(x_test)
    import sklearn.metrics as metrics
    metrics.accuracy_score(y_train,y_pred_train)
    from sklearn.metrics import roc_curve,auc
    fpr,tpr,threshold=roc_curve(y_train,y_pred_train)
    roc_auc=auc(fpr,tpr)
    
    • 用分类分析来提炼规则、提取变量、处理缺失值

      • 分类分析用于提炼应用规则 预测是分类分析的主要应用方向,但将分类用于提炼应用规则,为数据化运营提供规则支持也是其重点应用之一,这种应用相对于其他算法更加具有落地价值。常见的应用场景如下:

        • 要针对沉默会员做会员重新激活,应该挑选具有什么特征的会员?
        • 商品A库存积压严重,现在要通过促销活动清仓,选择哪些类型的促销活动更容易实现该目标?
        • 网站需要大流量广告位来满足VIP商家的精准广告投放,具有哪些特征的广告位更符合VIP商家的客户需求?
    • 从分类算法中提炼特征规则,利用的是在构建算法过程中的分类规则

      • 以决策树为例,决策树的分裂节点是表示局部最优值的显著特征值,每个节点下的特征变量以及对应的值的组合构成了规则。
    • 分类分析用于提取变量特征

      • 具体实现思路是:获取原始数据集并对数据做预处理,将预处理的数据集放到分类算法中进行训练,然后从算法模型中提取特征权重信息。
      • 分类分析用于处理缺失值

    3. 聚类和分类算法的区别

    • 学习方式不同聚类是一种非监督式学习算法,而分类是监督式学习算法。
    • 对源数据集要求不同,有无目标值
    • 应用场景不同
      • 聚类一般应用于数据探索性分析、数据降维、数据压缩等探索性、过程性分析和处理
      • 分类更多地用于预测性分析和使用。
    • 解读结果不同。聚类算法的结果是将不同的数据集按照各自的典型特征分成不同类别,不同人对聚类的结果解读可能不同;而分类的结果却是一个固定值(例如高、中、低、是、否等),不存在不同解读的情况。
    • 模型评估指标不同
      • 聚类分析没有所谓的“准确”与否,以及多么准确的相关度量,更多的是基于距离的度量。如果是对带有标签的数据集做聚类则可以做相似度、完整度等方面的评估
      • 而分类模型的指标例如准确率、混淆矩阵、提升率等都有明显的好与坏、提升程度等评估指标。例如准确率、混淆矩阵、提升率等都有明显的好与坏、提升程度等评估指标。
    • 假如原始数据集带有类别标签,那么选择分类或聚类算法都可以(标签列数据并不是一定要使用)。假如原始数据集不带有类别标签,那么只能选择使用聚类算法。
    • 有关分类和聚类的应用示例
      • 假如现在公司要对某新会员做促销活动,例如推荐商品、提供个性化信息、推荐最感兴趣的热榜等,并尽量提供该用户感兴趣的内容。
      • 分类:基于现有的会员及其特定类别标签(可选择有代表性或与实际运营场景最相关的类别标签)做分类模型训练,将该新用户的数据作为新的样本输入模型,预测得到该用户所属的目标类别。接着计算该类别下用户最经常购买的商品、经常浏览的信息等,并给出推荐内容。
      • 聚类:将新的会员和现有的会员作为一个整体做聚类分析,然后获得该会员所属的聚类类别,进而提取其所在类别下其他会员的经常购买商品、经常浏览信息等,并给出推荐内容。

    4. 分类分析算法选择

    • 文本分类:朴素贝叶斯,例如电子邮件中垃圾邮件的识别。
    • 训练集较小,选择高偏差且低方差的分类算法:朴素贝叶斯、支持向量机(不容易过拟合)
    • 算法模型的计算时间短和模型易用性,不要选支持向量机、人工神经网络
    • 重视算法的准确率:支持向量机或GBDT、XGBoost等基于Boosting的集成方法
    • 注重效果的稳定性或模型鲁棒性,那么应选择随机森林、组合投票模型等基于Bagging的集成方法。
    • 想得到有关预测结果的概率信息,基于预测概率做进一步的应用:逻辑回归
    • 担心离群点或数据不可分并且需要清晰的决策规则:决策树

    5. 分类评估

    • 准确率:(对不对)
      • (TP+TN)/(TP+TN+FN+FP)
    • 精确率 – 查的准不准
      • TP/(TP+FP)
    • 召回率 – 查的全不全
      • TP/(TP+FN)
    • F1-score
      • 反映模型的稳健性
    • 不同的场景关注的指标不一样

    5…1 混淆矩阵

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

    混淆矩阵
    TP True positive

    FN False nagative

    FP False positive

    TN True negative

    5.2. 精确率/查准率

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

    精确率

    5.3. 召回率/查全率

    • 召回率(Recall):真实为正例的样本中预测结果为正例的比例(查得全,对正样本的区分能力)
    • TP/(TP+FN)

    召唤率

    5.4. F1-score

    反映了模型的稳健性

    F1-score

    5.5 ROC曲线与AUC指标

    1. TPR与FPR

    • 真阳性率
      • 所有真实类别为1的样本中,预测类别为1的比例

    正阳性率

    • 假阳性率
      • 所有真实类别为0的样本中,预测类别为1的比例

    2. ROC曲线

    多次调整阈值得到若干组TPR FPR的值,把这些值在同一个坐标系中表示出来,就得到了ROC曲线

    最极端,FPR=0,TPR=1,

    FPR=0时,即FP=0;TPR=1时,即FN=0,就是所有预测错了的样本都为0,也就是所有的样本预测结果都是正确的

    此时对应的曲线下面积是1,如果roc曲线和对角线重合,则面积是0.5,此时模型的预测结果和瞎猜是一样的

    AUC指标,area under curve

    AUC=1,完美分类器

    0.5<AUC<1,优于随机猜测

    from sklearn.metrics import roc_auc_score

    • 通过tpr和fpr来进行图形绘制,然后绘制之后,行成一个指标auc
    • ROC曲线的横轴就是FPRate,纵轴就是TPRate,当二者相等时,表示的意义则是:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的,此时AUC为0.5。
    • 在一个二分类模型中,假设采用逻辑回归分类器,其给出针对每个实例为正例的概率。
    • 通过设定一个阈值如0.6,概率大于等于0.6的为正例,小于0.6的为负例。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。
    • 随着阈值的逐渐减小,越来越多的实例被划分为正例,但是这些正例中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。
    • 阈值最大时,对应坐标点为(0,0),即把所有样本都预测为负例,TP和FP都为0,对应的TPR和FPR为0;
    • 阈值最小时,对应坐标点(1,1),即把所有样本都预测为正例,FN和TN都为0,对应的TPR和FPR为1。

    ROC

    3. AUC指标

    • 越接近1,效果越好
    • 越接近0,效果越差
    • 越接近0.5,效果就是胡说
    • AUC的概率意义是随机取一对正负样本,正样本得分大于负样本得分的概率
    • AUC的范围在[0, 1]之间,并且越接近1越好,越接近0.5属于随机猜测
    • AUC=1,完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
    • 0.5<AUC<1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。

    4. 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:预测得分,可以是正例的估计概率、置信值或者分类器方法的返回值
    # 0.5~1之间,越接近于1约好
    y_test = np.where(y_test > 2.5, 1, 0)
    
    print("AUC指标:", roc_auc_score(y_test, y_predict)
    
    • AUC只能用来评价二分类
    • AUC非常适合评价样本不平衡中的分类器性能

    6. 分类评估报告api

    # y_true:真实目标值
    # y_pred:估计器预测目标值
    # labels:指定类别对应的数字
    # target_names:目标类别名称
    # return:每个类别精确率与召回率
    sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None )
    
    ret = classification_report(y_test, y_predict, labels=(2,4), target_names=("良性", "恶性"))
    print(ret)
    

    样本不均衡下的评估问题: 假设这样一个情况,如果99个样本癌症,1个样本非癌症,不管怎样全都预测正例(默认癌症为正例),准确率就为99%但是这样效果并不好

    展开全文
  • 过滤今日头条PC网页中的广告。 --前言-- 本插件只为给今日头条用户带来更方便的浏览形式。 同时感谢今日头条给我们带来更多、更新、更清晰的资讯。...同时加入了常用新闻分类的快速跳转功能。 支持语言:中文 (简体)
  • 3个最常用分类模型评估指标!

    千次阅读 2019-12-25 12:46:52
    针对二元分类结果,常用的评估指标有如下三个:查准率(Precision)、查全率(Recall)以及F-score。这篇文章将讨论这些指标的含义、设计初衷以及局限性。 01 二元分类问题 在机器学习领域,我们常常会碰到二元...

    针对二元分类结果,常用的评估指标有如下三个:查准率(Precision)、查全率(Recall)以及F-score。这篇文章将讨论这些指标的含义、设计初衷以及局限性。

    01 二元分类问题

    在机器学习领域,我们常常会碰到二元分类问题。这是因为在现实中,我们常常面对一些二元选择,比如在休息时,决定是否一把吃鸡游戏。不仅如此,很多事情的结果也是二元的,比如表白时,是否被发好人卡。

    当然,在实际中还存在一些结果是多元的情况,比如从红、黄、蓝三种颜色中,选择一个,而这些多元情况对应着机器学习里的多元分类问题。对于多元分类问题,在实际的处理过程中常将它们转换为多个二元分类问题解决,比如图1所示的例子。

    图1

    那么自然地,一个多元分类结果可以分解为多个二元分类结果来进行评估。这就是为什么我们只讨论二元分类结果的评估。为了更加严谨的表述,我们使用变量

    来表示真实的结果,

    表示预测的结果。其中

    表示正面的结果(在实际应用中更加关心的类别),比如妹子接受表白,而

    表示负面的结果,比如妹子拒绝表白。

    02 查准率与查全率

    在讨论查准查全的数学公式之前,我们先来探讨:针对二元分类问题,应该如何正确评估一份预测结果的效果。

    沿用上面的数学记号。如图2所示,图中标记为1的方块表示

    ,但

    的数据;标记为3的凹型方块表示

    ,但

    的数据;标记为2的方块表示

    ,且

    的数据。而且这些图形的面积与对应数据的数据量成正比,比如,

    ,且

    的数据个数越多,标记2的面积越大。

    很容易发现,图中标记为2的部分表示模型预测结果正确,而标记为1和3的部分则表示模型预测结果错误。

    • 对于一份预测结果,一方面希望它能做到“精确”:当时

    ,有很大概率,真实值

    就等于1。这表现在图形上,就是标记2的面积很大,而标记3的面积很小。

    • 另一方面也希望它能做到“全面”:对于几乎所有的

    ,对应的预测值

    也等于1。在图形上,这表示标记2的面积很大,而标记1的面积很小。

    于是,对应地定义查准率(precision)和查全率(recall)这两个技术指标(有的文献里,将查准率翻译为精确率;将查全率翻译为召回率)来评估一份预测结果的效果。比较直观的定义如图2所示。

    图2

    为了更加严谨,下面将从数学的角度给出这两个指标的严格定义。首先将数据按预测值和真实值分为4类,具体见表1。

    表1

    于是可以得到公式(1):

    公式(1)

    经过进一步的推导,可以得到这两个技术指标的概率定义,如公式(2)。从概率上来讲:预测值等于1时,真实值等于1的概率为查准率;真实值等于1时,预测值等于1的概率为查全率。

    理想的情况是这两个指标都很高,但现实往往是残酷的。这两个指标通常存在着此消彼长的现象。比如降低预测表白成功的标准(也就是增加

    的数量),往往会提高它的查全率,但同时会降低它的查准率,反之依然。整个过程的直观图像如图3所示。

    图3

     

    03 F-score

    既然这两个指标往往是成反比的,而且在很大程度上,受预测标准的控制。那么只拿其中的某一个指标去评估预测结果是不太合适的。比如在极端情况下,预测所有表白都成功,即。这时预测的查全率是100%,但查准率肯定很低,而且这样的预测显然是没太大价值的。

    而两个指标同时使用,在实际应用时又不太方便。为了破解这个困局,在实践中,我们定义了新的指标去“综合”这两个指标。具体的定义如公式(3),从数学上来看,它其实是查准率与查全率的调和平均数。对于二元分类问题,

    综合考虑了预测结果的查准率和查全率,是一个比较好的评估指标。

    其实从模型的角度来看,查准率与查全率的“相互矛盾”给了我们更多的调整空间。应用场景不同,我们对查准率和查全率的要求是不一样的。在有的场景中,关注的焦点是查全率。

    例如对于网上购物的衣服推荐,电商平台关心的是那些对衣服感兴趣的客户,希望模型对这些客户的预测都正确;而那些对衣服不感兴趣的客户,即使模型结果有较大偏差,也是可以接受的。也就是说,电商平台重视查全率,但不太关心查准率。这时就可以调低模型的预测标准,通过牺牲查准率来保证查全率。

    但在有的场景中,查准率才是重点。例如在实时竞价(RTB)广告行业,有3种参与者:需要在互联网上对产品做广告的商家,比如Nike;广告投放中介(DSP);广告位提供者,比如新浪网。Nike将广告内容委托给广告投放中介A,A通过分析选定目标客户群。当目标客户访问新浪网时,A向新浪网购买广告位并将Nike广告推送给他。

    如果该客户点击了Nike广告,Nike会向投放中介A支付相应费用。否则,全部费用由中介A承担。那么对于广告投放中介A,它希望投放的每条广告都会被点击,但不太关心是否每个对Nike感兴趣的客户都被推送了广告。换句话说,广告投放中介更关心查准率。于是可以通过调高模型的预测标准来提高查准率,当然这时会牺牲一部分查全率。

    对于这些偏重某一特定指标的场景,可以如公式(4),相应地定义指标(其实是的一个特例)。当靠近0时,偏向查准率,而很大时,则偏向查全率,如图4所示。

    图4

     

    04 总结

    查准率、查全率和F-score是最为常用的二元分类结果评估指标。其中查准率和查全率这两个指标都只侧重于预测结果的某一个方面,并不能较全面地评价分类结果。而F-score则是更加“上层”的评估指标,它建立在前面两个指标的基础上,综合地考虑了分类结果的精确性和全面性。

    从上面的讨论可以看到,这三个指标针对的是某一份给定的分类结果。但对于大多数分类模型,它们往往能产生很多份分类结果,比如对于逻辑回归,调整预测阈值可以得到不同的分类结果。也就是说,这三个指标并不能“很全面”地评估模型本身的效果,需要引入新的评估指标。

    本文分享自微信公众号 - 数据分析1480(lsxxx2011)

    原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

    原始发表时间:2019-04-29

    本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

    展开全文
  • HTML5+CSS3ljQuery特效tab标签菜单导肮广告代码 焦点图名站特效其他代码时间日期视频播放图片特效网站常用相册代码在线客服
  • 机器学习中的七种分类算法

    千次阅读 2021-10-03 20:35:27
    目录 1 分类任务的类型 1.1 二元分类 1.2 多元分类 1.3 多标签分类 1.4 不平衡分类 2 分类算法如何工作 3 数据预处理 4 创建测试集和训练集 5 选择模型 6 分类算法的类型 6.1 朴素贝叶斯分类器 6.1.1 优点 6.1.2 ...

    c 机器学习中的 7 种分类算法https://www.projectpro.io/article/7-types-of-classification-algorithms-in-machine-learning/435https://www.projectpro.io/article/7-types-of-classification-algorithms-in-machine-learning/435icon-default.png?t=LA92https://www.projectpro.io/article/7-types-of-classification-algorithms-in-machine-learning/435以上为参考链接。


    目录

    1 分类任务的类型

    1.1 二元分类

    1.2 多元分类

    1.3 多标签分类

    1.4 不平衡分类

    2 分类算法如何工作

    3 数据预处理

    4 创建测试集和训练集

    5 选择模型

    6 分类算法的类型

    6.1 朴素贝叶斯分类器

    6.1.1 优点

    6.1.2 缺点

    6.1.3 应用

    6.2 逻辑回归

    6.2.1 优点

    6.2.2 缺点

    6.2.3 应用

    6.3 决策树分类算法

    6.3.1 优点

    6.3.2 缺点

    6.3.3 应用

    6.4 随机森林分类算法

    6.4.1 优点

    6.4.2 缺点

    6.4.3 应用

    6.5 支持向量机

     6.5.1 优点

    6.5.2 缺点

    6.5.3 应用

    6.6 K最近邻分类算法

     6.6.1 优点

    6.6.2 缺点

    6.6.3 应用

    6.7 K-Means聚类算法

    6.7.1 优点

    6.7.2 缺点

    6.7.3 应用

    7 如何决定选择哪种分类算法


    1 分类任务的类型

    1.1 二元分类

    主要将数据集分类两类,也意味着输出变量只有两个值。比如将邮件标记为“垃圾邮件”还是“非垃圾邮件”。

    1.2 多元分类

    数据集分为多个种类,输出变量也有多个值。比如经典的Iris数据集,根据花的花瓣长度、萼片长度、花瓣宽度和萼片宽度,分成三种花。

    1.3 多标签分类

    一种特殊类型的分类任务,对于数据集中的每个实例具有多个输出变量,也就是说,一个实例可以有多个标签。比如在图像分类中,单个的图像可能包含多个对象,这些对象可以通过算法进行标记,例如公共汽车、红绿灯、斑马线等。

    1.4 不平衡分类

    不平衡分类是指数据集的实例中具有偏向或者偏态分布的分类问题,也就是一类输入变量的频率高于其他输入变量。比如通过交易数据集中的信用卡检测欺诈交易。通常,此类交易的数量要少得多,因此这会使机器难以学习此类交易。

    2 分类算法如何工作

    为了解决分类问题,我们使用称为机器学习分类算法的数学模型。他们的任务是找出目标变量如何与输入特征 xi 和输出值 yi 相关联。在数学方面,估计函数 f(xi) 通过将相关特征作为输入来预测输出变量的值。我们可以这样写,

    {y}'_{i}= \text{f} \left ( x_{i} \right )

    其中 y'i 表示输出变量的预测响应。

    3 数据预处理

    在将任何统计算法应用于数据集之前,我们必须彻底了解输入变量和输出变量。在分类问题中,目标总是定性的,但有时,甚至输入值也可以是分类的,例如著名的 Mall Customer Dataset 中客户的性别。由于分类算法是从数学上推导出来的,因此必须将所有变量转换为数值。分类算法工作的第一步是确保变量,无论是输入还是输出,都已正确编码。

    4 创建测试集和训练集

    处理完数据集后,下一步是将数据集分为两部分:测试数据集和训练数据集。这一步允许使用训练数据集让我们的机器学习输入和输出值之间的模式。另一方面,测试数据集测试模型的准确性,我们将尝试将其放入我们的数据集中。

    5 选择模型

    一旦我们将数据集拆分为训练和测试,下一个任务就是选择最适合我们问题的模型。为此,我们需要了解流行的分类算法。因此,让我们深入研究不同类型的分类算法池并探索我们的选择。

    6 分类算法的类型

    以下是您将了解的不同类型分类算法的列表:

    1. 朴素贝叶斯分类器
    2. 逻辑回归
    3. 决策树
    4. 随机森林
    5. 支持向量机
    6. K-最近邻
    7. K-均值聚类

    6.1 朴素贝叶斯分类器

    朴素贝叶斯分类器,最简单有效的分类算法之一。它的基础是贝叶斯定理,它描述了如何根据可能与事件相关的条件的先验知识来评估事件的概率。在数学上,这个定理指出——

    \text{P}\left ( Y|X\right )=\frac{P\left ( X|Y\right )P\left ( Y\right )}{P\left ( X\right )}

    其中 P(Y|X) 是事件 Y 的概率,假设 X 已经发生。 

    P(X) 是事件 X 的概率,

    P(Y) 是事件 Y 的概率,

    P(X|Y) 是给定 Y 的固定值时事件 X 的可能性。

    如果 X 代表一个特征变量,Y 代表一个目标变量,那么贝叶斯分类器会将该标签分配给产生最高概率的特征。为简单起见,考虑一个二分类问题,其中特征变量只能有两个可能的值,Y=1 或 Y=0。然后,如果 Pr(Y=1|X=x0) > 0.5,贝叶斯分类器将预测类别 1,否则预测类别 2。

    在不止一个特征的情况下,我们可以使用以下公式来评估概率,

    P\left ( Y|X_{1}=x_{1},X_{2}=x_{2} \right )=\frac{P\left ( X_{1}=x_{1},X_{2} =x_{2}|Y \right )P\left ( Y \right )}{P\left ( X_{1}=x_{1},X_{2}=x_{2} \right )}

    我们假设两个特征 X1 和 X2 是相互独立的。事实上,由于这个假设,“朴素”这个词被附加到贝叶斯的分类器上。

    6.1.1 优点

    1. 它很简单,实现也很简单。
    2. 机器使用这个分类器学习模式所需的时间更少。
    3. 它在输入变量具有分类值的情况下表现良好。
    4. 它为复杂的现实世界问题提供了良好的结果。
    5. 它在多类分类的情况下表现良好。

    6.1.2 缺点

    1. 它假设特征变量之间的独立性,但情况并非总是如此。
    2. 我们经常将其称为坏估计,因此概率并不总是很重要。
    3. 如果在训练期间模型不知道任何分类变量并且该变量在测试期间通过,则模型分配 0(零)似然并因此替换称为“零频率”的零概率。可以通过使用平滑程序(例如拉普拉斯估计)来避免这种情况。

    6.1.3 应用

    1. 垃圾邮件分类: 根据电子邮件的内容识别电子邮件是否为垃圾邮件
    2. 实时预测系统: 该模型相对较快,因此可以实时预测目标变量。
    3. 情绪分析: 识别产品的反馈并将其分类为“正面”或“负面”。
    4. 多类预测: 朴素贝叶斯适用于多类分类问题。

    6.2 逻辑回归

    该算法类似于贝叶斯分类器,因为它也预测 Y 与输入变量 X 相关联的概率。它使用逻辑函数,

    \large P\left ( X \right )=\frac{e^{\beta _{0}+\beta _{1}X}}{1+e^{\beta _{0}+\beta _{ 1}X}}

    并使用最大似然技术拟合参数 ð??›ƒ0 和 ð??›ƒ1。该技术涉及最大化由下式给出的似然函数

    l\left ( \beta _{0},\beta _{1} \right )=\prod_{l:y_{i}=1}p\left ( x_{i} \right )\prod_{​{l} ':y_{​{i}'}=1}\left ( 1-p\left ( x_{i} \right ) \right )

    在评估这两个参数后,可以轻松地使用逻辑函数来预测给定输入 xi 的目标变量概率 p(xi)。 

    对于不止一个特征变量(X1, X2,..., XP),公式可以概括为

    P\left ( X \right )= \frac{e^{\beta _{0}+\beta _{1}X_{1}+\cdots+\beta _{p}X_{p}}}{1+ {e^{\beta _{0}+\beta _{1}X_{1}+\cdots+\beta _{p}X_{p}}}

    6.2.1 优点

    1. 这是一个简单的模型,因此训练所需的时间很少。
    2. 它可以处理大量的特征。

    6.2.2 缺点

    1. 虽然它的名字中有回归这个词,但我们只能将它用于分类问题,因为它的范围总是在 0 和 1 之间。
    2. 只能用于二分类问题,对多分类问题响应较差

    6.2.3 应用

    1. 信用评分: 根据年收入、账户余额等一些特征来预测个人的信用(偿还借入贷款的能力)。
    2. 预测用户行为: 许多网站使用逻辑回归来预测用户行为并引导他们点击可能感兴趣的链接。
    3. 离散选择分析:  逻辑回归是预测人们分类偏好的绝佳选择。这方面的例子可能是买哪辆车、上哪所学校或大学等,这取决于人们的属性和他们可用的各种选择。

    6.3 决策树分类算法

    该算法涉及根据数据集中的某些特征变量将数据集划分为多个段。这些划分的阈值通常是各自特征变量的平均值或众数(如果它们是数字)。由于树可以表示用于分割数据集的一组分割规则,因此该算法称为决策树。

    查看下面的示例以更好地理解它。

    多类分类算法

    红色文本表示如何根据输出变量将数据集拆分为多个段。结果是具有最高比例的班级。

    现在,很自然要问的问题是该算法使用什么标准来分割数据。有两种广泛使用的度量来测试分割的纯度(如果数据集的片段只有一个类的数据点,则它是纯的)。

    第一个是定义的基尼指数

    G= -\sum_{k=1}^{k}p_{mk}\left ( 1-p_{mk} \right )

    测量 N 个类别的总方差。另一种度量是交叉熵,定义为

    D= -\sum_{k=1}^{k}p_{mk}\log \left ( p_{mk} \right )

    在两个等式中,pmk 表示第 m 个片段中属于第 k 个类别的训练变量的比例。

    我们根据该特征将数据集拆分为多个段,从而产生熵或基尼指数的最小值。

    6.3.1 优点

    1. 该算法允许数据的简单表示。因此,更容易向高管解释和解释它。
    2. 决策树模仿人类在日常生活中做出决策的方式。
    3. 他们顺利处理定性目标变量。
    4. 它们有效地处理非线性数据。

    6.3.2 缺点

    1. 它们可能会创建有时变得无关紧要的复杂树。
    2. 与其他算法相比,它们的预测精度水平不同。

    6.3.3 应用

    1. 情感分析:它用作文本挖掘中的分类算法,以确定客户对产品的情感。
    2. 产品选择:公司可以使用决策树来了解哪种产品在推出时会给他们带来更高的利润。

    6.4 随机森林分类算法

    森林由大量的树木组成。同样,随机森林涉及处理许多决策树。每棵树预测目标变量的概率值。然后我们对产生最终输出的概率进行平均。 

    我们评估每棵树如下:

    1. 通过选择有替换的数据点来创建数据集的第一个样本。
    2. 接下来,我们不使用所有输入变量来创建决策树。我们只使用可用的一个子集。
    3. 每棵树都被允许长到尽可能大的长度,并且不涉及修剪。

    6.4.1 优点

    1. 对于大型数据集,它是有效的。
    2. 它允许估计输入变量在分类中的重要性。
    3. 它比决策树更准确。

    6.4.2 缺点

    1. 在实施方面更为复杂,因此需要更多时间进行评估。

    6.4.3 应用

    1. 信用卡违约: 信用卡公司使用随机森林来预测持卡人是否会违约。
    2. 股票市场预测: 股票投资者使用它来指示特定股票的趋势并分析其损失和利润。
    3. 产品推荐: 可以根据用户的喜好使用它向用户推荐产品。

    6.5 支持向量机

    该算法利用具有令人兴奋的变化的支持向量分类器,使其适用于评估非线性决策边界。通过使用称为kernels 的特殊函数扩大特征变量空间,这成为可能 。该算法考虑的决策边界允许将特征变量标记为目标变量。它用于评估边界的数学函数由下式给出

    f\left ( x \right )= \beta _{0}-\sum_{i \in s }\alpha _{i}K\left ( x,x_{i} \right )

    其中 K 代表核函数。

     6.5.1 优点

    1. 它使训练数据集变得容易。
    2. 当数据是高维时,它表现良好。

    6.5.2 缺点

    1. 当数据包含噪声元素时,它表现不佳。
    2. 它对核函数很敏感,因此必须明智地选择它们。

    6.5.3 应用

    1. 人脸检测: 用于读取图像(像素数数组)并根据通常的人类特征识别是否包含人脸。
    2. 图像分类:  SVM 是用于根据图像特征对图像进行分类的图像分类算法之一。
    3. 手写字符识别: 我们可以用它来识别手写字符。

    6.6 K最近邻分类算法

    KNN 算法通过识别给定观察点的 K 个最近邻居来工作。然后它使用 K 个点评估每种类型的目标变量的比例,然后预测具有最高比例的目标变量。例如,考虑以下情况,我们必须将目标值标记为点 X。然后,如果我们在它周围取四个邻居,该模型将预测该点属于粉红色的类。

     

     6.6.1 优点

    1. 可以将其应用于任何分布的数据集。
    2. 它很容易理解并且非常直观。

    6.6.2 缺点

    1. 它很容易受到异常值的影响。
    2. 它偏向于在数据集中具有更多实例的类。
    3. 有时很难找到 K 的最佳数字。

    6.6.3 应用

    1. 检测异常值: 由于该算法对异常值很敏感,因此可以检测异常值。
    2. 识别相似文档: 识别语义相似的文档。

    6.7 K-Means聚类算法

    K-Means Clustering 是一种将数据集划分为 K 个不重叠的组的聚类算法。该算法的第一步是指定预期的簇数 K。然后,任务是将数据集划分为 K 个簇,以使簇内变化尽可能小。算法过程如下:

    1. 为每个输入变量随机分配一个从 1 到 K 的数字。这些是变量的初始聚类标签。
    2. 重复该步骤,直到集群分配保持不变:
    3. 为 K 个集群中的每一个评估集群质心。 
    4. 将每个输入变量集分配给质心最近的簇(这里最接近可以用欧氏距离来定义)

    总之,该算法最小化输入点与相应聚类质心之间的偏差平方和。将其命名为 K 均值聚类的原因是步骤 2a) 将属于特定聚类的观测值的均值评估为聚类质心。 

    6.7.1 优点

    1. 我们可以将其应用于大型数据集。
    2. 实施起来毫不费力。
    3. 它保证了定位集群的收敛性。

    6.7.2 缺点

    1. 它有一个限制,因为必须首先提供 K 的值。
    2. 它对异常值很敏感。

    6.7.3 应用

    1. 添加推荐: 公司可以识别共享金钱消费习惯的客户群,并展示他们更有可能购买的广告。
    2. 识别城市中的犯罪区域: 使用 K 均值聚类,我们可以识别更容易发生犯罪案件的区域。
    3. 文档分类: 识别写在类似主题上的文档

    7 如何决定选择哪种分类算法

    下面我们有一个列表,可以帮助您了解应该使用哪些分类算法来解决业务问题。

    1. 问题识别: 首先要做的是彻底了解手头的任务。如果是有监督的分类案例,可以使用逻辑回归、随机森林、决策树等算法。另一方面,如果是无监督的分类案例,则应该使用聚类算法。
    2. 数据集  的大小:数据集的大小也是您在选择算法时应该考虑的一个参数。由于很少有算法相对较快,因此最好切换到那些算法。如果数据集的大小很小,您可以坚持使用像朴素贝叶斯这样的低偏差/高方差算法。相反,如果数据集很大,特征数量很多,那么你应该使用高偏差/低方差算法,如 KNN、决策树和 SVM。
    3. 预测准确度: 模型的准确度是测试分类器好坏的参数。它反映了预测输出值与正确输出值的匹配程度。当然,更高的精度是可取的,但还应检查模型是否过拟合。
    4. 训练时间: 有时,像 SVM 和随机森林这样的复杂算法可能会占用大量计算时间。此外,更高的准确性和大数据集无论如何需要更多时间来学习模式。像逻辑回归这样的简单算法更容易实现并节省时间。
    5. 数据集的线性: 输入变量和目标变量之间并不总是存在线性关系。因此,必须分析这种关系并仔细选择算法,因为其中一些仅限于线性数据集。检查线性的最佳方法是拟合线性线或运行逻辑回归或 SVM 并查找残差。较高的误差表明数据是非线性的,需要实施复杂的算法。
    6. 特征数量: 有时,数据集可能包含不必要的许多特征,并且并非所有特征都相关。然后可以使用最适合这种情况的 SVM 等算法,或者使用主成分分析来确定哪些特征是重要的。

    展开全文
  • 若比邻分类信息网采用织梦核心,后台和注册页面经过简化和美观,去除不必要的繁琐功能。其他与一般信息网站相似。   特色功能: 1.积分控制会员信息发布 2.增加广告会员通过用金币自助...同类推荐:站长常用源码
  • 小偏参考了国内外的一些大型网站,整理了网页最常用的ClassName集合,共有100+个。希望对前端小朋友们有那么一点帮助。:) about 关于 account 账户 action 操作 ad,advertisment 广告 arrow 箭头图标 ...
  • 一个功能强大的分类信息(广告)系统,网软志成分类信息网正式版下载,地方门户系统,分类信息网模板,分类信息网淡红色风格版下载,仿快点8分类信息网门户网站系统源码,供求信息发布网站系统和信息发布网站程序,漂亮的...
  • 23000字,讲清信息流广告数据分析。

    千次阅读 2021-07-28 00:29:24
    本篇主要内容大纲:一、信息流广告基本介绍(一)信息流广告的定义和特点(二)信息流广告的行业发展(三)信息流广告在产业链中的主要角色(四)信息流广告常用术语二、广告投放流程(一)开户(二)充...
  • 一、文本分类 1、什么是文本分类? 文本分类,就是在预定义的分类体系下,根据文本的特征(内容或属性),将给定文本与一个或多个类别相关联的过程。 2、文本分类的具体步骤? (1)构建分类类别体系 (2)获取带有...
  • 【流量池】数字广告(4)

    千次阅读 2019-04-04 15:26:51
    文章目录一、数字广告的基本常识二、数字广告流量作弊的现状分析三、不同类型的数字广告与分析四、电商平台的流量获取五、落地页是第一生产力 概述: 我们知道传统广告购买链条遵循AIDMA法则 :指用户购买行为分成...
  • 互联网平台的广告费和流量费分类

    千次阅读 2018-03-09 11:00:36
    互联网平台的广告费和流量费有以下6种模式: 1.CPC模式,即每点击成本。网民的每一次点击就会为广告主带来真实的流量或是潜在的消费者。 2、CPM模式,即每千人成本。千人成本是一种媒体或媒体排期表送达1000人...
  • 机器学习多目标分类模型解法

    千次阅读 2019-09-18 17:44:24
    经典的机器学习建模数据是由特征列和单一目标列构成的,比如要做广告的CTR预测,其实模型关心的是一个广告曝光后是否会被点击,这是一个单一目标场景的建模过程。但是在实际应用场景中,往往有时候会出现“既要也要...
  • 总第479篇2021年 第049篇搜索广告在优化流量变现效率等商业指标之外,也需要重点优化用户体验,降低不相关广告对用户体验的损害,这样才能保证平台生态的健康发展。本文对预训练技术在广告相...
  • 程序化广告(5):广告投放

    千次阅读 2019-11-14 10:32:19
    广告提案(proposal):广告公司通过PPT或者其他表现方式向广告客户描述广告投放解决方案的报告,目的在于获取客户的认可和支持,赢得客户的广告投放预算。 广告提案重点要分析广告投放目标和KPI需求。以人为中心,...
  • 二、VR/AR 游戏的常用插件 三、模型构建/环境构建插件相关 四、Shader 相关插件 五、动画插件 六、网络/网络视频语音 插件 七、AI 相关 八、区块链相关 九、资源/数据相关插件 一、 UI / 2D 相关 1、...
  • 分类信息系统正式版下载

    热门讨论 2012-09-17 10:12:45
    各分站可以独立管理,如分站顶级或二级域名、网站基本设置、关健词优化、友情链接、常用电话、网址导航、广告、选用模板风格、分站权限分配。 完善的信息发布过滤系统 后台可设置信息发布是否需在通过审核、信息...
  • jQuery商城网站分类导航和幻灯片轮播特效,电商网站常用的导航菜单和宽屏广告图片轮播切换效果。
  • 本书主要介绍了搜索广告算法、非搜索(定向)广告算法和实时竞价广告算法,为读者梳理了广告中的常用概念如CTR、ECPM,一个广告系统如何组成,实践中还会考虑什么问题,没有涉及多的数学和算法模型。本书适合入门,...
  • 基于用户画像的广告定向技术普遍应用于品牌展示和精准竞价广告,然而现有的用户搜索画像技术存在着特征维度大、矩阵稀疏的问题。针对这一问题,本文采用...支持向量机在矩阵稀疏上分类性能优于其他常用的文本分类算法。
  • 精华机器学习,NLP,图像识别等人工智能领域学习资料,搜索,推荐,广告系统架构及算法技术资料吐血整理 你还在为学习算法摸不着头脑么?你还在为技术调研各种Google么?AI的牛b吹不上去?盯紧了,这里就是你的2020...
  • 如何用机器学习对文本分类

    千次阅读 2017-05-30 20:21:58
    ====广告时间,可直接跳过==== 公众号的菜单已分为“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”等,可能有一款适合你的胃口。 鄙人的新书...
  • 邮件分类消歧过程 主题规则学习过程 在第一阶段我们主要通过规则进行匹配,这里使用了之前DataCon黑产比赛的部分种子作为规则库,最早匹配出“涉H(中)”、“约会涉H(英)”、“论文培训”、“发票”、“广告”、...
  • 小编觉得CTR(广告点击率)预估的能力对于广告系统的意义和重要性,类似于在证券市场上预测股价的能力,优秀的CTR预测,通向美好和财富...(以下转载内容部分较为干货,文科生不易看懂是正常的,静静地欣赏数学之...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,235
精华内容 11,294
关键字:

常用的广告分类