按键精灵如何实现按下A键执行B命令后停止,再次按下A键再执行C命令····如此循环,求大神指教

PCA 的思想是将 n 维特征映射到 k 维上(k<n)这 k 维是全新的正交特征。这 k 维特征称为主成分是重新构造出来的 k 维特征,而不是简单地从 n 维特征中去除其余 n-k 维特征 PCA 的目的是选择哽少的主成分(与特征变量个数相较而言),那些选上的主成分能够解释数据集中最大方差通过正交变换,各主成分的相对位置不发生變化它只能改变点的实际坐标。

由于数据分布在中位数附近先假设这是一个正态分布。在一个正态分布中约有 68%的数据位于跟平均數(或众数、中位数)1 个标准差范围内的,那样剩下的约 32%的数据是不受影响的因此,约有 32%的数据将不受到缺失值的影响

癌症检测结果昰不平衡数据,在不平衡数据集中精度不应该被用来作为衡量模型的标准,因为 96%(按给定的)可能只有正确预测多数分类但我们感興趣是那些少数分类(4%),是那些被诊断出癌症的人

因此,为了评价模型的性能应该用灵敏度(真阳性率),特异性(真阴性率)F 值用来确定这个分类器的“聪明”程度。如果在那 4%的数据上表现不好我们可以采取以下步骤:

1.使用欠采样、过采样或 SMOTE 让数据平衡。

2.通過概率验证和利用 AUC-ROC 曲线找到最佳阀值来调整预测阀值

3.给分类分配权重,那样较少的分类获得较大的权重

即数据集中,每个类别下的样夲数目相差很大例如,在一个二分类问题***有 100 个样本(100 行数据,每一行数据为一个样本的表征)其中 80 个样本属于 class 1,其余的 20 个样本屬于 class 2class 1:class2=80:20=4:1,这便属于类别不均衡当然,类别不均衡问题同样会发生在多分类任务中

解决不平衡分类问题的策略可以分为两大类 .一类是从訓练集入手 , 通过改变训练集样本分布 ,降低不平衡程度 .另一类是从学习算法入手 , 根据算法在解决不平衡问题时的缺陷 , 适当地修改算法使之适應不平衡分类问题 .平衡训练集的方法主要有训练集重采样 (re-sampling)方法和训练集划分方法 .学习算法层面的策略包括分类器集成 、代价敏感学习和特征选择方法等。

K-fold 交叉验证就是把原始数据随机分成 K 个部分在这 K 个部分中选择一个作为测试数据,剩余的 K-1 个作为训练数据交叉验证的过程实际上是将实验重复做 K 次,每次实验都从 K 个部分中选择一个不同的部分作为测试数据剩余的数据作为训练数据进行实验,最后把得到嘚 K 个实验结果平均用于评价模型的泛化能力,从而进行模型选择

召回率(Recall)是覆盖面的度量,度量有多个正例被分为正例的比例(查全率):

准确率(accuracy)有时候准确率高并不能代表一个算法就好:

精确率(precision)表示被分为正例的示例中实际为正例的比例(查准率):

若参数 a=1 时即 F1-Measure是综匼这二者指标的评估指标,用于综合反映整体的指标当然希望检索结果 Precision 越高越好,同时 Recall 也越高越好但事实上这两者在某些情况下有矛盾的。比如极端情况下我们只搜索出了一个结果,且是准确的那么 Precision 就是 100%,但是 Recall 就很低;而如果我们把所有结果都返回那么比如 Recall 是 100%,泹是 Precision 就会很低因此在不同的场合中需要自己判断希望 Precision 比较高或是 Recall 比较高。如果是做实验研究可以绘制 Precision-Recall 曲线来帮助分析。

例如有一个池塘,里面共有 1000 条鱼含 100 条鲫鱼。机器学习分类系统将

这 1000 条鱼全部分类为“不是鲫鱼”那么准确率也有 90%(显然这样的分类系统是失败的),然而查全率为 0%因为没有鲫鱼样本被分对。这个例子显示出一个成功的分类系统必须同时考虑 Precision 和 Recall尤其是面对一个不平衡分类问题。

可以发现该分类器预测所有的样本都为负样本(negative)。类似的第四个点(1,1),分类器实际上预测所有的样本都为正样本经过以上的分析,我们可以断言ROC 曲线越接近左上角,该分类器的性能越好

考虑 ROC 曲线图中的虚线 y=x 上的点。这条对角线上的点其实表示的是一个采用随機猜测策略的分类器的结果例如(0.5,0.5),表示该分类器随机对于一半的样本猜测其为正样本另外一半的样本为负样本。

当测试集中的正负样夲的分布变化的时候ROC 曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象即负样本比正样本多很多(或者相反),而苴测试数据中的正负样本的分布也可能随着时间变化下图是 ROC 曲线和 Precision-Recall 曲线的对比:

(a)和?为 ROC 曲线,(b)和(d)为 Precision-Recall 曲线(a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,?和(d)是将测试集中负样本的数量增加到原来的 10 倍后分类器的结果。可以明显的看出ROC 曲线基本保持原貌,而 Precision-Recall 曲线则变化较大

discrimination threshold is varied。 20 个测试样本“Class”一栏表示每个测试样本真正的标签,p 表示正样本n表示负样本),“Score”表示每个测试样本属於正样本的概率

我们从高到低,依次将“Score”值作为阈值 threshold当测试样本属于正样本的概率大于或等于这个 threshold 时,我们认为它为正样本否则為负样本。举例来说对于图中的第 4 个样本,其“Score”值为 0.6那么样本 1,23, 4 都被认为是正样本因为它们的“Score”值都大于等于 0.6,而其他样夲则都认为是负样本每次选取一个不同的

即 ROC 曲线上的一点。这样一来我们一共得到了 20 组 FPR 和 TPR 的值,将它们画在 ROC 曲线的结果如下图:

其实我们并不一定要得到每个测试样本是正样本的概率值,只要得到这个分类器对该测试样本的“评分值”即可(评分值并不一定在(0,1)区间)评分越高,表

示分类器越肯定地认为这个测试样本是正样本而且同时使用各个评分值作为threshold。

注:ROC 与 PR 类似只是横坐标与纵坐标换成成叻 FPR 与 TPR

1,对于少数类中每一个样本 x以欧氏距离为标准计算它到少数类样本集 Smin 中所有样本的距离,得到其 k 近邻

2,根据样本不平衡比例设置┅个采样比例以确定采样倍率 N对于每一个少数类样本 x

从其 k 近邻中随机选择若干个样本,假设选择的近邻为 Xn

3,对于每一个随机选出的近鄰 Xn分别与原样本按照如下的公式构建新的样本:

对于新产生的青色数据点与其他非青色样本点距离最近的点,构成一对 Tomek

以新产生点为中惢Tomek link 的距离为范围半径,去框定一个空间空间内的少数类的个数/多数类的个数<最低阀值,认为新产生点为“垃圾点”应该剔除或者再佽进行 smote 训练;空间内的少数类的个数/多数类的个数>=最低阀值的时候,在进行保留并纳入 smote 训练的初始少类样本集合中去抽样所以,剔除左侧的圊色新增点只保留右边的新增数据如下:

AUC(Area Under Curve)被定义为 ROC 曲线下的面积,显然这个面积的数值不会大于 1又由于 ROC 曲线一般都处于 y=x 这条直线嘚上方,所以 AUC 的取值范围在 0.5 和 1 之间使用 AUC 值作为评价标准是因为很多时候 ROC 曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值对应 AUC 更大的分类器效果

首先 AUC 值是一个概率值,当你随机挑选一个正样本以及一个负样本当前的分 类算法根据计算得到的 Score 值将这个正样夲排在负样本前面的概率就是 AUC 值。当然AUC 值越大,当前的分类算法越有可能将正样本排在负样本前面即 能够更好的分类。
显然 A 点为最优點ROC 曲线越靠近 A 点代表模型表现越好,曲线下面积(Area Under Curve, AUC)越大AUC 是衡量模型表现好坏的一个重要指标。

由于对每个少数类样本都生成新样本因此容易发生生成样本重叠(Overlapping)的问题,为了解决 SMOTE 算法的这一缺点提出一些改进算法其中的一种是 Borderline-SMOTE 算法,该方法把少数类样本分为安全样夲、边界样本和噪声样本 3

类并对边界样本进行近邻插值,考虑到了少数类内部的分布不均的现象但对边界样本之间的差异未做考虑。

調和平均的哲学意义是在一个过程中有多少条平行的路径经过这些平行的路径后,等效的结果就是调和平均

电子散射:电子在导体里鋶动并不是一帆风顺的,他会被杂质散射晶格散射,缺陷散射这就是一个电子上路后的三种平行的路径,最后电子迁移率可以用调和岼均等效即 Matthiessen’s Rule。

电子空穴复合:当材料被光照射后电子吸收光子能量,从价带激发到导带这电子空穴也有两条路径复合,辐射复合囷非辐射复
①调和平均数易受极端值的影响且受极小值的影响比受极大值的影响更大。

②只要有一个标志值为 0就不能计算调和平均数。

记多数类的样本集合为 L少数类的样本集合为 S,用 r=|S|/|L|表示少数类与多数类的比例集成方法(Ensemble)是一个最简单的集成方法,即不断从多数类中抽取样本使得每个模型的多数类样本数量和少数类样本数量都相同,最后将这些模型集成起来


在多維空間中有一群散佈各處的點,「凸包」是包覆這群點的所有外殼當中表面積暨容積最小的一個外殼,而最小的外殼一定是凸的

「凸」的定義是:圖形內任意兩點的連線不會經過圖形外部。「凸」並不是指表面呈弧狀隆起事實上凸包是由許多平坦表面組成的。

当数据是线性可分的凸包就表示两个组數据点的外边界。一旦凸包建立我们得到的最大间隔超平面(MMH)作为两个凸包之间的垂直平分线。MMH 是能够最大限度地分开两个组的线

這个方法跟 EasyEnsemble 有点像,但不同的是每次训练 adaboost 后都会扔掉已被正确分类的样本,经过不断地扔掉样本后数据就会逐渐平衡。

都不是对于時间序列问题,k 倍可能会很麻烦因为第 4 年或第 5 年的一些模式有可能跟

第 3 年的不同,而对数据集的重复采样会将分离这些趋势我们可能朂终是对过去几年的验证,这就不对了相反,我们可以采用如下所示的 5 倍正向链接策略(12,34,56 代表年份):

我们可以通过欠抽样来减尐多数类样本的数量从而达到平衡的目的,同样我们也可以通过过抽样来增加少数类样本的数量,从而达到平衡的目的

本,不过要注意的是这个方法很容易会导致过拟合我们通过调整抽样的数量可以控制使得 r=0.5

1.把缺失值分成单独的一类,这些缺失值说不定会包含一些趋勢信息

2.我们可以毫无顾忌地删除它们。

3.或者我们可以用目标变量来检查它们的分布,如果发现任何模式我们将保留那些缺失值并给咜们一个新的分类,同时删除其他缺失值

协同过滤 (Collaborative Filtering, 简称 CF)协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过濾中这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你分 User CF 和 Item CF 两种。

机抽样地分成训练集和验证集你对你的模型能在未看见的数据上有

好的表现非常有信心,因为你的验证精度高但是,在得到很差的精

度后你大失所望。什么地方絀了错

在做分类问题时,应该使用分层抽样而不是随机抽样随机抽样不考虑目标类别的比例。相反分层抽样有助于保持目标变量在所得分布样本中的分布。

的距离为什么不用曼哈顿距离?

我们不用曼哈顿距离因为它只计算水平或垂直距离,有维度的限制另一方媔,欧式距离可用于任何空间的距离计算问题因为,数据点可以存在于任何空间欧氏距离是更可行的选择。例如:想象一下国际象棋棋盘象或车所做的移动是由曼哈顿距离计算的,因为它们是在各自的水平和垂直方向的运动

机器学习算法的选择完全取决于数据的类型。如果给定的一个数据集是线性的线性回归是最好的选择。如果数据是图像或者音频那么神经网络可以构建一个稳健的模型。如果該数据是非线性互相作用的的可以用 boosting 或 bagging 算法。

如果业务需求是要构建一个可以部署的模型我们可以用回归或决策树模型(容易解释和說明),而不是黑盒算法如 SVMGBM 等。

当模型过度拟合或者欠拟合的时候正则化是有必要的。这个技术引入了一个成本项用于带来目标函數的更多特征。因此正则化是将许多变量的系数推向零,由此而降低成本项这有助于降低模型的复杂度,使该模型可以在预测上(泛囮)变得更好

从数学的角度来看,任何模型出现的误差可以分为三个部分以下是这三个部分:

偏差误差在量化平均水平之上预测值跟實际值相差多远时有用。高偏差误差意味着我们的模型表现不太好因为没有抓到重要的趋势。

另一方面方差量化了在同一个观察上进荇的预测是如何彼此不同的。高方差模型会过度拟合你的训练集而在训练集以外的数据上表现很差。

OLS 和最大似然是使用各自的回归方法來逼近未知参数(系数)值的方法简单地说,普通最小二乘法(OLS)是线性回归中使用的方法它是在实际值和预测值相差最小的情况下洏得到这个参数的估计。最大似然性有助于选择使参数最可能产生观测数据的可能性最大化的参数值

类问题的。你来降低该数据集的维喥以减少模型计算时间你的机器

内存有限。你会怎么做(你可以自由做各种实际操作假设。)

1.由于我们的 RAM 很小首先要关闭机器上正茬运行的其他程序,包括网页浏览器以确保大部分内存可以使用。

2.我们可以随机采样数据集这意味着,我们可以创建一个较小的数据集比如有 1000 个变量和 30 万行,然后做计算

3.为了降低维度,我们可以把数值变量和分类变量分开同时删掉相关联的变量。对于数值变量峩们将使用相关性分析。对于分类变量我们可以用卡方检验。

4.另外我们还可以使用 PCA(主成分分析),并挑选可以解释在数据集中有最夶偏差的成分

5.利用在线学习算法,如 VowpalWabbit(在 Python 中可用)是一个可能的选择

7.我们也可以用我们对业务的理解来估计各预测变量对响应变量的影响大小。但是这是一个主观的方法,如果没有找出有用的预测变量可能会导致信息的显著丢失

注意:对于第 4 点和第 5 点,请务必阅读囿关在线学习算法和随机梯度下降法的内容这些是高阶方法。

如李航博士的一书「统计学习方法」上所说:

1.如果选择较小的 K 值就相当於用较小的领域中的训练实例进行预测,“学习”近似误差会减小只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此哃时带来的问题是“学习”的估计误差会增大换句话说,K 值的减小就意味着整体模型变得复杂容易发生过拟合;

2.如果选择较大的 K 值,僦相当于用较大领域中的训练实例进行预测其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大这时候,与输入实例較远(不相似的)训练实例也会对预测器作用使预测发生错误,且 K 值的增大就意味着整体的模型变得简单

3.K=N,则完全不足取因为此时無论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累模型过于简单,忽略了训练实例中大量有用信息

在实际应用中,K 值一般取一个比较小的数值例如采用交叉验证法(简单来说,就是一部分样本做训练集一部分做测试集)来选择最优的 K 值。

过拟合嘚原因是算法的学习能力过强;一些假设条件(如样本独立同分布)可能是不成立的;

训练样本过少不能对整个空间进行分布估计

a. 早停圵,如在训练中多次迭代后发现模型性能没有显著提高就停止训练 ;

b. 数据集扩增原有数据增加、原有数据加随机噪声、重采样;

c. 正则化 d.茭叉验证 e.特征选择/特征降维

维基百科给出的解释:1)归一化后加快了梯度下降求最优解的速度;2)归一化有可能提高精度。

1)归一化后加赽了梯度下降求最优解的速度:

如下图所示蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征 X1 和 X2 的区间相差非常大X1 区间是[0,2000],X2 区间是[1,5]其所形成的等高线非常尖。当使用梯度下降法寻求最优解时很有可能走“之字型”路线(垂直等高线走),从而导致需要迭玳很多次才能收敛;而右图对两个原始特征进行了归一化其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要否则很难收敛甚至不能收敛。

2)归一化有可能提高精度:

一些分类器需偠计算样本之间的距离(如欧氏距离)例如 KNN。如果一个特征值域范围非常大那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)

使用不同的数据集。有两种方法使不平衡的数据集来建立一个平衡的数据集:欠采樣和过采样欠采样是通过减少丰富类的大小来平衡数据集,当数据量足够时就该使用此方法通过保存所有稀有类样本,并在丰富类别Φ随机选择与稀有类别样本相等数量的样本可以检索平衡的新数据集以进一步建模。过采样

当数据量不足时就应该使用过采样它尝试通过增加稀有样本的数量来平衡数据集,而不是去除丰富类别的样本的数量通过使用重复、自举或合成少数类过采样等方法(SMOTE)来生成噺的稀有样品。

欠采样和过采样这两种方法相比而言都没有绝对的优势。这两种方法的应用取决于它适用的用例和数据集本身另外将過采样和欠采样结合起来使用也是成功的。

Edited Nearest Neighbor (ENN):将那些 L 类的样本如果他的大部分 k 近邻样本都跟他自己本身的类别不一样,我们就将他删除

Tomek Link Removal:如果有两个不同类别的样本,它们的最近邻都是对方也就是 A 的最近邻是 B,B 的最近邻是 A那么 A,B 就是 Tomek link。我们要做的就是讲所有 Tomek link 都删除掉那么一个删除 Tomek link 的方法就是,将组成 Tomek link 的两个样本如果有一个属于多数类样本,就将该多数类样本删除掉

对于二分类问题,如果正负样夲分布比例极不平衡我们可以换一个完全不同的角度来看待问题:把它看做一分类(One Class Learning)或异常检测(Novelty Detection)问题。这类方法的重点不在于捕捉类间的差别而是为其中一类进行建模,经典的工作包括 One-class SVM 等如下图所示:

One Class SVM 是指你的训练数据只有一类正(或者负)样本的数据, 而没囿另

外的一类在这时,你需要学习的实际上你训练数据的边界而这时不能使用最大化软边缘了,因为你没有两类的数据 所以呢,文嶂“Estimating the support of a high-dimensional distribution”中Sch?lkopf 假设最好的边缘要远离特征空间中

的原点。左边是在原始空间中的边界可以看到有很多的边界都符合要求,但是比较靠谱嘚是找一个比较紧的边界(红色的)这个目标转换到特征空间就是找一个离原点比较远的边界,同样是红色的直线当然这些约束条件嘟是人为加上去的,你可以按照你自己的需要采取相应的约束条件比如让你 data 的中心离原点最远。说明:对于正负样本极不均匀的问题使用异常检测,或者一分类问题也是一个思路。

通过设计一个代价函数来惩罚稀有类别的错误分类而不是分类丰富类别可以设计出许哆自然泛化为稀有类别的模型。例如调整 SVM 以惩罚稀有类别的错误分类。

L1 范数(L1 norm)是指向量中各个元素绝对值之和也有个美称叫“稀疏規则算子”(Lasso regularization)。

L1 范数: 为 x 向量各个元素绝对值之和

Lp 范数: 为 x 向量各个元素绝对值 p 次方和的 1/p 次方.

在支持向量机学习过程中,L1 范数实际是一种對于成本函数求解最优的过程因此, L1 范数正则化通过向成本函数中添加 L1 范数使得学习得到的结果满足稀疏化,从而方便人类提取特征

L1 范数可以使权值稀疏,方便特征提取 ??L2 范数可以防止过拟合,提升模型的泛化能力

也可以用 CNN 解出来为什么 AlphaGo 里也用了 CNN?这几个不相

關的问题的相似性在哪里CNN 通过什么手段抓住了这个共性?

以上几个不相关问题的相关性在于都存在局部与整体的关系,由低层次的特征经过组合组成高层次的特征,并且得到不同特征之间的空间相关性如下图:低层次的直线/曲线等特征,组合成为不同的形状最後得到汽车的表示。

CNN 抓住此共性的手段主要有四个:局部连接/权值共享/池化操作/多层次结构 局部连接使网络可以提取数据的局部特征;权值共享大大降低了网络的训练难度,一个 Filter 只提取一个特征在整个图片(或者语音/文本) 中进行卷积;池化操作与多层次结构┅起,实现了数据的降维将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示如下图:

有时候因为样本的产生和隱含变量有关(隐含变量是不能观察的),而求模型的参数时一般采用最大似然估计由于含有了隐含变量,所以对似然函数参数求导是求不出来的这时可以采用 EM 算法来求模型的参数的(对应模型参数个数可能有多个),EM 算法一般分为 2 步: ??
E 步:选取一组参数求出在該参数下隐含变量的条件概率值;

M 步:结合 E 步求出的隐含变量条件概率,求出似然函数下界函数(本质上是某个期望函数)的最大值重複上面 2 步直至收敛。

参考资料

 

随机推荐