1. T检验和ANOVA都是用来看样本之间均值是否相等,但是两者又有什么区别呢?
卡方检验是用来看分类变量之间有没有相关性。 方差分析 从理论上讲,方差分析有两个前提条件,一是因变量Y需要满足正态性要求,二是满足方差齐检验。 方差不齐时可使用‘非参数检验’,同时还可使用welch 方差,或者Brown-Forsythe方差,非参数检验是避开方差齐问题
2. 介绍一下A/B测试
AB测试,是验证假设的好方法。 大家在实验中常用到实验思维,根据实验思维,我们要更好的进行归因实验,通常要满足以下条件: * 对照:有其他对照组作为对比,就能真正看出来效果。而且不同组间的效果差异要足够明显,才能验证我们的判断 * 随机:为了排除实验条件以外的干扰因素,我们需要确保两个组的用户是随机选取的,这是为了排除用户差异对实验结果的影响 * 大样本:这里的样本量是指数据量,包括用户、行为和时间跨度,样本量越大,越容易排除个体差异的影响,也更容易验证统计上的显著性
应用时要注意平台,不同平台的环境、用户、产品特点不同,要结合实际。
**实践:**
在企业里,一般做AB测试有3块工作要做。分别是流量分配、实验设计和数据统计。
**流量分配**
产品快速迭代时,会有很多AB测试需要同时做,而产品的流量又是有限的,因此我们需要进行充分的流量切分。分流的逻辑如下图所示: 域: 域是指整体流量的分区,域之间是互斥的。比如按照用户ID尾号奇偶性,将整体流量分为了1、2两个域,这个时候域1+域2=100%的流量,不同域之间的流量不会重叠。划分域的目的,是为了进行完全纯净的分区,更好的进行互不干扰的实验测试。 层: 层是指某个域内全部流量的一个观测角度。比如对同一个域内流量,你可以按照用户ID尾号进行细分,也可以按照用户ID首号码进行细分。不同的细分方法,对应的也就是不同的层。不难理解,层与层之间的关系是正交的,即彼此互不影响,相互独立。 桶: 在每个层中,我们使用独立的Hash函数对用户进行取模,将用户均匀的分配至N个实验桶中。桶与桶之间是互斥的。如下图所示,在A层中有A1/A2/A3/A4这4个桶,他们彼此互斥,互不重叠,彼此加和后等于层内的全部流量。我们可以用A1/A2进行X实验,同时用A3/A4进行Y实验 实验设计: 1.单因素实验设计 所谓单因素实验设计,是指实验中只有一个影响因素变量,其他的内容都保持不变的实验方法。举个例子,两个实验组,一组用广告图A,一组用广告图B,这两个组进行实验对比,最后发现A组比B组效果好,那么我们就可以认为这是A广告图的作用。 2.多因素实验设计 多因素实验设计,是指实验中有多个影响因素变量。比如你想同时测试广告图(AB)和广告弹出方式(AB)对转化率的影响,这里面有两个变量,对应的有4种组合条件: 广告A,弹出方式A 广告A,弹出方式B 广告B,弹出方式A 广告B,弹出方式B 多因素实验设计的好处在于,除了可以检测同一个变量、不同实验条件之间的差异之外,还能对变量之间的交互效果进行检验。用上个例子做说明,如果在单因素AB实验里,我们发现广告A比广告B的效果好,弹出方式A比弹出方式B的效果好,但是广告A+弹出方式A的组合情况却不是最好的,因为他们之间的组合,产生了化学作用。这种情况下,就必须使用多因素实验设计来做。 数据分析: 1.考虑空跑期差异 一个不用统计的简单分析方法,是考虑空跑期差异。所谓空跑期,就是指什么策略也不做,纯看两个组本身的固有差异,作为判断的基础。而后用实验期的差异减去空跑期差异,就得到了实验的真实收益。具体来说分这么几个步骤: 看两个组在空跑期的数据差异(百分比),判断组间差异基础 看两个组在实验期的数据差异(百分比),判断实验差异 用实验期的差异减去空跑期的差异,得到实验真实收益 2.统计检验: 不考虑空跑期差异,而是直接看实验期里两个组的明细数据,输入到统计软件中进行统计分析,看是否显著(P<0.05)。如果显著,说明两组有明显差异 常用的统计分析有两种: 独立样本T检验 方差分析 5%就是在统计学里称作 α , 它代表着我们这个试验结果的置信水平。与这个置信水平相对应的就是置信区间的置信度,由 1- α 得出,所以你在这里看到如果 α 是0.05,那置信度就是0.95,也就是说,如果我们容许自己出错的几率是5%,那我们将得到一个有 95% 的可能性包含真实的总体均值区间范围,如果你把这个 α 调整成0.07,那你的置信区间的置信度将变成93%。 由于 α 是我们自己设置的,那么当然需要通过数据去验证一下,这个通过计算出来的值就是 p-value , p 的定义就是,如果两个版本无差异的前提下,我们得到这个试验数据的概率。 p <= α 则意味着我们的测试得到了统计显著的结果, 因为只有我们得到的这个 p 的概率越小,我就可以越有信心的地根据小概率事件不会发生的判断依据,从而推翻原假设,接受备择假设。
3. 说一个简单的场景,问用什么统计检验方法可以比较两个样本的均值是不同
4. 知道哪些机器学习算法
线性回归 输出是连续值,用于研究输入与输出的关系,可基于线性回归方程进行预测 逻辑回归 输出是离散值,即0或1,二分类方法 y = 1 / (1+ e-x) sigmoid函数 逻辑回归与线性回归类似,两者的目标都是找出每个输入变量的权重值。不同的是逻辑回归模型是通过特殊的非线性函数来计算输入变量的加权和,逻辑函数或S形函数运行结果,以产生输出y。值小于0.5,类别为0,大于0.5,类别为1. KNN分类 K最近邻(KNN)分类的目的是将数据分为不同的类别,我们可以基于相似性度量(例如距离函数)对它们进行分类。 (1)计算测试数据与各个训练数据之间的距离 (2)按照递增关系进行排序 (3)选取距离最小的K个点 (4)确定前K个点所在类别的出现频率 (5)返回前K个点中出现频率最高的类别作为测试数据的类别 支持向量机 支持向量机(SVM)最初是用于数据分析。首先一组训练实例被输入到SVM算法中,它们分别属于一类别或另一个类别。然后,根据这些数据该算法建一个模型,然后将新的测试数据分配给它在训练阶段学习到的类别之一。 支持向量机是创建一个超平面,将该超平面作为类别之间的分界,新的测试数据出现在哪一侧就属于哪一类。 决策树 类似树的结构将输入数据根据不同分类标准进行分类,层层划分。 决策树的缺点是由于其固有的设计结构而易于过度拟合。 随机森林 一个随机森林算法旨在解决一些决策树的局限性。 随机森林由决策树组成,决策树是代表决策过程或统计概率的决策图。这些多个树映射到单个树,称为分类或回归(CART)模型。 随机森林是最流行和最强大的机器学习算法之一。它是一种被称为Bootstrap Aggregation或Bagging的集成机器学习算法。 bootstrap是一种强大的统计方法,用于从数据样本中估计某一数量,例如平均值。它会抽取大量样本数据,计算平均值,然后平均所有平均值,以便更准确地估算真实平均值。 在bagging中用到了相同的方法,但最常用到的是决策树,而不是估计整个统计模型。它会训练数据进行多重抽样,然后为每个数据样本构建模型。当你需要对新数据进行预测时,每个模型都会进行预测,并对预测结果进行平均,以更好地估计真实的输出值。 Bagging 步骤: 另原始数据集为D(n个样本), 1.for i=1 to T 2.从D中独立随机抽取m个数据(m<n),形成数据集
m
i
m_i
mi? 3.用
m
i
m_i
mi?训练一个分类器 4.end 5.所有分类器的判决结果投票决定最终的分类结果
人工神经网络 K-means聚类
递归神经网络(RNN) RNN本质上是一种神经网络,它在每个节点上都有一个存储器,这使得处理顺序数据变得容易,即一个数据单元依赖于前一个数据单元。 一种解释RNN优于常规神经网络的优势的方法是,我们应该逐个字符地处理一个单词。如果单词是" trading”,则正常的神经网络节点会在移动到“d”时忘记字符“t”,而递归神经网络会记住该字符,因为它具有自己的记忆。
线性判别分析 传统的逻辑回归仅限于二分类问题。 如果你有两个以上的类,那么线性判别分析算法(Linear Discriminant Analysis,简称LDA)是首选的线性分类技术。 LDA的表示非常简单。 它由你的数据的统计属性组成,根据每个类别进行计算。 对于单个输入变量,这包括: 1.每类的平均值。 2.跨所有类别计算的方差。
朴素贝叶斯 朴素贝叶斯是一种简单但极为强大的预测建模算法。 该模型由两种类型的概率组成,可以直接从你的训练数据中计算出来:1)每个类别的概率; 2)给定的每个x值的类别的条件概率。 一旦计算出来,概率模型就可以用于使用贝叶斯定理对新数据进行预测。 当你的数据是数值时,通常假设高斯分布(钟形曲线),以便可以轻松估计这些概率。
Boosting Boosting是一种从一些弱分类器中创建一个强分类器的集成技术。 它先由训练数据构建一个模型,然后创建第二个模型来尝试纠正第一个模型的错误。 不断添加模型,直到训练集完美预测或已经添加到数量上限。
AdaBoost AdaBoost是为二分类开发的第一个真正成功的Boosting算法,同时也是理解Boosting的最佳起点。 目前基于AdaBoost而构建的算法中最著名的就是随机梯度boosting。 AdaBoost常与短决策树一起使用。 在创建第一棵树之后,每个训练实例在树上的性能都决定了下一棵树需要在这个训练实例上投入多少关注。难以预测的训练数据会被赋予更多的权重,而易于预测的实例被赋予更少的权重。 模型按顺序依次创建,每个模型的更新都会影响序列中下一棵树的学习效果。在建完所有树之后,算法对新数据进行预测,并且通过训练数据的准确程度来加权每棵树的性能。
5. R和Python中有哪些机器学习包
Numpy数值计算工具包,底层由C实现,计算速度快 matplotlib绘图工具包 pandas 提供了高性能、易用的数据结构及数据分析工具,能像SQL那样对数据进行控制,python版的excel scikit-learn 机器学习Python包 ,包含了大部分的机器学习算法。 XGBoost/LightGBM | Gradient Boosting 算法的两种实现框架。 PyTorch/TensorFlow/Keras | 常用的深度学习框架。 Scipy科学计算包
6. Tableau和Power BI是自己学的还是实习用到,你觉得这两种有什么优缺点
Tableau是国际知名的BI工具。可视化功能是Tableau的王牌功能,可以通过单击或拖动感兴趣的维度(通常是离散的类别或特征)和度量值(值)来构建Tableau可视化效果。缺点就是价格太贵,而且国外的产品在国内往往由外包商承包实施。 Power BI包括用于Azure托管服务的Web界面和用于Windows桌面的power bi桌面应用程序。它的价格比竞争对手便宜得多,对于注重性价比的公司来说,它是一个不错的选择。对于某些数据源,Power BI具有预定义的图表、仪表盘和报表,这对用户来说比较方便。它的缺点是数据分析能力或图表控制力不如FineBI或tableau。数据分析师之BI工具对比
7. SPSS有哪些功能
SPSS 18.0由17个功能模组组成: Base System基础程式 Advanced Models高等统计模组(GEE/GLM/存活分析) Regression Models进阶回归模组 Custom Tables多变量表格 Forecasting时间序列分析 Categories类别资料分析/多元尺度方法 Conjoint联合分析 Exact Tests精确检定 Missing Value Analysis遗漏值分析 Neural Networks类神经网络 Decision Trees决策树 Data Preparation资料准备 Complex Samples抽样计划 Direct Marketing直销行销模组 Bootstrapping拔靴法 Data collection Data Entry资料收集 Programmability Extension扩充程式码能力
8. 每周要提交周report,但建模可能不会每周都有结果,在没有成果的周,你的report要怎么写
分析没有结果的原因。
9. 针对类别不平衡要怎么处理
是否能收集更多数据:我们首先想到的应该是如何能够收集到更多的数据,往往更多的数据能够战胜更好的算法。 重采样(过采样和欠采样):欠采样就是一个随机删除一部分多数类(数量多的类型)数据的过程,这样可以使多数类数据数量可以和少数类(数量少的类型)相匹配。第二种重采样技术叫过采样,这个过程比欠采样复杂一点。它是一个生成合成数据的过程,试图学习少数类样本特征随机地生成新的少数类样本数据。 人工生成数据集:对于典型的分类问题,有许多方法对数据集进行过采样,最常见的技术是SMOTE(Synthetic Minority Over-sampling Technique,合成少数类过采样技术)。简单地说,就是在少数类数据点的特征空间里,根据随机选择的一个K最近邻样本随机地合成新样本。 过采样之后特征相关性更明显了。在解决不平衡问题之前,大多数特征并没有显示出相关性,这肯定会影响模型的性能。除了会关系到整个模型的性能,特征性相关性还会影响ML模型的性能,因此修复类别不平衡问题非常重要。 尝试不同的分类算法:不同的算法对数据的敏感度不同,决策树在不平衡数据集处理上有较好的表现。 尝试对模型进行惩罚:你可以使用相同的分类算法但是使用一个不同的角度,比如说你的任务是识别小类,那么可以对分类器的小类样本数据增加权重,降低大类样本的权值(这张方法实际产生了新的数据分布)。如penalized-SVM、penalized LAD 尝试改变评价指标:当我的数据集是不平衡数据集时,准确率作为衡量指标往往会产生误导作用。机器学习之评价指标 尝试新的角度:把小样本看成异常点检测。 创新思维把大类化成小类,小类当做异常点
参考链接:一文看懂AB测试 机器学习的常见算法有哪些 一文教你如何处理不平衡数据集 机器学习-不平衡数据集 https://www.zhihu.com/question/422205636/answer/2009767834
|