机器学习快速便签

 

  • 分类

-nb
朴素贝叶斯分类有一个限制条件,就是特征属性必须有条件独立或基本独立(实际上在现实应用中几乎不可能做到完全独立)。当这个条件成立时,朴素贝叶斯分类法的准确率是最高的,但不幸的是,现实中各个特征属性间往往并不条件独立,而是具有较强的相关性,这样就限制了朴素贝叶斯分类的能力。

-dt
-rf
-svm
-lr

[聚类]
-kmeans
流程:
任意选择k个对象作为初始的簇中心
repeat
根据簇中心(簇中对象的平均值),将每个对象(重新)赋予最类似的簇
更新簇中心(簇中对象的平均值)
until
簇中心不再变化(或变化足够小)

-h
根据层次分解顺序是自底向上还是自顶向下,层次聚类算法分为凝聚型和分裂型。凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。
流程:
将每个对象看作一个簇,计算两两之间的最小距离
repeat
将距离最小的两个簇合并成一个新簇
重新计算新簇与其它簇之间的距离
until
所有簇最后合并成一个簇(或满足终结条件)

-dbscan

回归
-ols

p1
p2

交叉验证

    交叉验证 Cross Validation,是一种科学的检验模型泛化能力(generalization ability)的方法。其核心思想是将原始数据一部分作为训练集(training set),另一部分作为验证/测试集(validation set or test set),并迭代交换数据集的角色。

K折交叉验证 K-fold Cross Validation

    数据集被随机的划分成k个(一般同等大小)的集合,每次使用1个集合作为测试集,剩下的k-1个集合合起来作为训练集。一些特例:

  • Double Cross Validation:将数据集平均分成两份,一份训练集,一份测试集。然后再把训练集和测试集交换。
  • Leave-one-out Cross Validation:每次使用数据集的1个元素作为测试集,剩下的n-1个元素作为训练集(n为数据集元素总数)。

交叉验证的应用场景

    交叉验证的本质作用(检验模型泛化能力)决定了其主要应用场景。

  • 模型选择:模型选择指的是选择分类器种类(如DT、RF还是SVM),而非选择分类器参数(模型参数永远是由训练集求出)。故模型选择时,其实是在考察各个分类器的泛化能力,即比较交叉验证迭代得到的所有性能结果平均值。所以使用交叉验证,并不能得到一个具体模型(如规则树)。
  • 参数选择:参数选择是选择模型超参数。往往(在训练集中)划分出训练集和验证集,然后使用不同超参数,对于同种分类器进行泛化能力评估,选择使得分类器泛化能力最强的超参数。

    最后还有一个为什么说交叉验证可以防止过拟合的问题:无论模型选择还是参数选择,都是经过交叉验证后,选取平均性能最好的模型。这说明该模型的泛化能力最好,因此能够避免过拟合(想想什么是泛化能力)。

口袋妖怪版本说明

gen 1为最初的RGBY红绿蓝黄
gen 2则是GSC,金银水晶
gen 3为RS红宝石蓝宝石,以及复刻gen 1的RG,FRLG,火红叶绿
gen 4则为DP,钻石珍珠,以及复刻gen 2的HGSS,心金银魂
gen 5为WB/W2B2,黑白和他们的资料片黑2白2,这一世代没有复刻前作
gen 6为最新的XY,以及复刻gen 3的ORAS,omega红宝石和alpha蓝宝石

R语言rpart应用示例

数据源示例:
[text]
ServerIP,ServerHost,ClientIP,RSIP,RM,HR,UDR,SR,CT_html,CT_json,CT_plain,CT_xml,CL,CL_chunked,PI,TI,Label
117.135.171.220,ui.ptlogin2.qq.com,112.54.3.7,112.25.37.48,1,0,0.02,0,0,0,0,0,6604,0,-0.03,0,FALSE
58.61.39.130,58.61.39.130,112.54.3.7,112.25.37.48,2,0,0.00,0,0,0,0,0,100,0,-0.01,1,FALSE
221.181.195.52,k.youku.com,112.54.3.7,112.25.37.48,1,1,0.65,1,1,0,0,0,0,0,0.06,2,TRUE
111.13.100.162,suggestion.baidu.com,112.54.3.7,112.25.37.48,1,0,0.02,0,0,1,0,0,170,0,0.18,3,FALSE
221.228.204.31,rq.cct.cloud.duba.net,112.54.3.7,112.25.37.48,2,0,0.02,0,0,0,1,0,54,0,0.20,4,FALSE
211.137.39.24,group.store.qq.com,112.54.3.7,112.25.37.48,1,0,0.02,0,0,0,0,0,22212,0,0.20,5,FALSE
120.198.199.170,v.gdt.qq.com,112.54.3.7,112.25.37.48,1,0,0.02,0,0,0,0,0,15,0,0.35,6,FALSE
[/text]

1-SE rule:
在剪枝理论中,比较著名的规则就是1-SE(1标准差)规则,其意思是:首先要保证预测误差(通过交叉验证获得,在程序中表示为xerror)尽量小,但不一定要取最小值,而是允许它在“最小的误差±一个相应标准差”的范围内,然后在此范围内选取尽量小的复杂性参量,进而以它为依据进行剪枝。这个规则体现了兼顾树的规模(复杂性)和误差大小的思想,因为一般说来,随着拆分的增多,复杂性参量会单调下降(纯度越来越高),但是预测误差则会先降后升,这样,就无法使复杂性和误差同时降到最低,因此允许误差可以在一个标准差内波动。

总之,使用1-SE时,找到最小的xerror,求出其xerror + (它本身的)xstd。然后选择xerror比这个值小且具有最少分割点的树(We need to find that split that has least splits and is smaller than this number)。需注意,选择cp时,要确保最少节点树能被包含。

cp: complexity parameter
nsplit: the number of splits
rel error: the relative error rate for predictions for the data that generated the tree
xerror: cross-validated error.x in xerror is an abbreviation for cross-validated
xstd: the standard derivation of cross-validated

Python dict按key按value排序

R语言 MLE Linear Regression

[text]
# Log-Linear with maximum likelihood estimation
# ln(y) = ln(x) + c
LL <- function(c, sigma) {
R = log(n30) – log(n7) – c
R = suppressWarnings(dnorm(R, 0, sigma, log = TRUE))
-sum(R)
}
fit = mle(LL, start = list(c = 1, sigma = 1))
fit@coef

LL <- function(c, mu, sigma) {
R = log(n30) – log(n7) – c
R = suppressWarnings(dnorm(R, mu, sigma, log = TRUE))
-sum(R)
}
fit = mle(LL, start = list(c = 1, mu = 0, sigma = 1))
fit@coef
[/text]

MLE中的似然函数,是对所有观察值出现概率的计算(因为独立,所以单独概率相乘)而形成的关于待估计参数的函数。取对数,则变成了相加。

dnorm函数给定观察值,返回概率。

Python time常用示例

结果如下:

[text]
1450697550.36
Mon Dec 21 19:32:30 2015
time.struct_time(tm_year=2015, tm_mon=12, tm_mday=21, tm_hour=19, tm_min=32, tm_sec=30, tm_wday=0, tm_yday=355, tm_isdst=0)
2015-12-21 19:32:30
[/text]

Switching WordPress Editor TinyMCE Enter and Shift-Enter

In TinyMCE (the editor WordPress use), there’s an option called forced_root_block. We can filter the default using tiny_mce_before_init filter. We can add this code in theme functions.php or using functionality plugin.

英文描述图表

图表的四大趋势,分别是「上升」、「下降」、「波动」及「不变」。
数据(Data)在某一个时间段固定不变:fixed in time
在一系列的时间段中转变:changes over time
持续变化的data在不同情况下:
增加:increase/raise/rise/go up
减少:decrease/grow down/drop/fall
波动:fluctuate/rebound/undulate/wave
稳定:remain stable/stabilize/level off

在形容四大趋势时,我们可灵活运用名词、动词及短语,而尽量做到用字不太重覆。例如:如要多次表达上升时,开头可用“There was a significant rise.” (名词),接著可用“It increased substantially.” (动词),最后便可用“It showed an upward trend.”(短语)。正因为趋势不外这四种,如不停重覆使用”increased”的话,虽然能把资料准确地传递,但却非常乏味,把本来已经是沉闷的报告变得更加闷气,加速读者或听众在办公时入睡。

以下是一些用来描述图表的常用实用句式,供读者参考:
The table/ graph/ pie chart shows (reveals, illustrates, demonstrates, depicts, describes, indicates)…
According to the table,…
As shown in the graphs,…
It can be seen from the figures/ statistics that…
It is clear/ apparent from the figures/ statistics that…
On the top of the list is…, which accounts for 75% of …
At the bottom of the list is…, which constitutes 10% of …
The figure reached the highest/ lowest point in…
A has about/ approximately/ exactly/ precisely the same number/ proportion/ amount of… as B.
The difference between A and B lies in..
The number increased/ rose suddenly/ dramatically/ rapidly/ substantially/ considerably/ sharply from…to…
During 2013–2014, there was a sudden rapid/ dramatic/ substantial/ considerable boom in the number of computer tablets from…to…
The ten-year period from 2000 – 2010 witnessed/ saw a steady growth of mobile phones from…to…
The number of…increased/ rose/ fell/ dropped/ declined/ decreased by 15%.
The number of mobile phones was roughly/ about/ approximately doubled/ tripled between 2004 to 2014.
We can conclude from the chart that…
In short/ In brief/ In conclusion, …
To conclude/ To sum up, it seems clear that…
It is clear/ apparent from the chart/ graph/ table/ diagram that…