也即是数据挖掘的目标:
数据挖掘的定义:
从大量的数据中挖掘那些令人感兴趣的、有用的、隐含的、先前未知的和可能有用的模式或者知识
数据挖掘的过程:
对数据进行初步的探究,以便了解数据的特征,为建模的变量选择和算法选择提供依据
描述性统计
描述统计包括均值、频率、众数、百分位数、中位数、极差、方差和百分位数等,一般来说描述统计均可以用来探索数据结构,它们均用于探索数据的不同属性
数据可视化
数据可视化就是将数据的总体特点以图形的
方式呈现,用以发现其中的模式。图形简明易懂,
这个在数据探索中起到很重要的作用,比如常用
的频次图(见右图)、散点图、箱体图等
数据探索的建模
一切可以用于建模的统计方法或计量模型
均可以用于数据探索
定义:
特点:
空间数据库是指在关系型数据库(DBMS)内部对地理信息进
行物理存储。空间数据库中存储的海量数据包括对象的空间
拓扑特征、非空间属性特征以及对象在时间上的状态变化
时间数据库和时序数据库都存放与时间有关的数据
定义:
特点:
遗产数据库定义:
特点:
弊端:属性失去可解释性,即降维后的属性都是原来所有属性的线性组合,现实意义无法解释
预测模型:
数据的定义:
大数据的定义:
数据由数据对象组成 , 数据对象由属性描述
定义:
定义:代表数据对象特征的一个字段 。也称为维、特征、变量(同义词)
属性的类型:
从各大数据源、数据库提取
为什么?
考虑两个方面:
4. 保证数据的正确性
数据挖掘的数据类型:
简单随机抽样、系统抽样、分层抽样、整群抽样、多阶段抽样
注数据统计方面的信息, 比如占比、方差、均值、分位数等
方面的信息,以此来了解这些数据包含的信息量程度
如何缺失的?
何为噪声?
定义:一个由测量得到的变量中存在的随机错误或偏差
不是随便选一个回归函数,你可以用线性回归试试,画个散点图
然后你会发现满屏红色,哈哈哈哈哈哈哈哈哈哈哈哈~
这很正常~
因为你的线性函数就是判断的标准,现实中的数据没有这么强的线性相关性,而且你还得考虑一个很重要的问题:多重共线性!
So,盘它,LASSO和岭回归或者弹性网就足够了,注意!你的目的不是让模型预测的有多准,而是来划分噪声,ok?
对于具有序列特征的变量用临近的若干数据的均值来替换原始数据的方法
Q:离群点如何产生的?
A:数据集中含有的数据有些不合理,偏离观测值,属于录入错误
通过聚类等方法来检测离群点,并将其删除,从而实现去噪的方法
数据符合正态分布: P ( ∣ x − μ ∣ > 3 σ ) < 0.003 P(|x-\mu|>3\sigma)<0.003 P(∣x−μ∣>3σ)<0.003外的数据视为异常,即 [ μ + 3 ∗ σ , μ − 3 σ ] [ \mu+3 *\sigma,\mu-3\sigma] [μ+3∗σ,μ−3σ]
因为剔除掉极值后,样本的方差可能发生变化了(正如文中所说,它不是一个稳健的估计量),每次剔除通常都会变化,所以需要重复的去做
数据不服从正态分布: z s c o r e zscore zscore远离平均值的多少倍标准差
Z-Score的计算:
Z score的计算公式为 Z = ( x − μ ) σ Z = \frac{(x-μ)}{σ} Z=σ(x−μ)
Alpha因子的zscore计算。只有当两个因子的分布都为近似正态分布时,基于均值-标准差标准化得到的zscore 才有可比性,否则样本偏度和峰度的影响会使得个股在某一个因子上的得分明显偏大或偏小,其在多因子中的效用被显著放大或缩小,也就是提到的Percential Ranking Problem
。
Box-Cox变换的一个显著优点是通过求变换参数来确定变换形式,而这个过程完全基于数据本身而无须任何先验信息,这无疑比凭经验或通过尝试而选用对数、平方根等变换方式要客观和精确。
Box-Cox变换的目的是为了让数据满足线性模型的基本假定,即线性、正态性及方差齐性,然而经Box-Cox变换后数据是否同时满足了以上假定,仍需要考察验证
经过这样的一个变换,例如就取对数,它会缩小数据之间的距离,这样可能会使得原来是异常值的点变为不是异常值,数据分布也不一定满足正态分布
只有取正值的数据才能使用Box-Cox变换
,对于一些数据是负数或者为零,在Box-Cox变换之前,需要在所有值上加一个正数
,使得所有数据为正。但这种移动是主观确定的针对均值标准差方法的改进,把均值和标准差替换成稳健统计量,样本均值用样本中位数代替,样本标准差用样本MAD代替,通常把偏离中位数三倍以上的数据作为异常值,和均值标准差方法比,中位数和MAD的计算不受极端异常值的影响,结果更加稳健
箱线图上其实也会注明异常值,假设Q1和Q3分别为数据从小到大排列的25%分位数 Q 1 Q1 Q1和75%分位数 Q 3 Q3 Q3(上下四分位数),记 I Q R (四分位距) = Q 1 − Q 3 IQR(四分位距)=Q1−Q3 IQR(四分位距)=Q1−Q3
( − ∞ , Q 1 − 3 ∗ I Q R ) ⋃ ( Q 3 + 3 ∗ I Q R , + ∞ ) (−∞,Q1−3∗IQR)⋃(Q3+3∗IQR,+∞) (−∞,Q1−3∗IQR)⋃(Q3+3∗IQR,+∞)区间里的数据标识为异常点
偏度调整:
样本偏度定义采用了MedCouple方法:
m d = m e d i a n ( x i , i = 1 , 2 , 3 , . . . , n ) md = median(x_i , i=1,2,3,...,n) md=median(xi,i=1,2,3,...,n)
m c = m e d i a n ( ( x i − m d ) − ( m d − x j ) x i − x j , x i > = m d ; x j < = m d ) mc = median(\frac{(x_i-md)-(md-x_j)}{x_i-x_j},x_i >= md ; x_j <= md) mc=median(xi−xj(xi−md)−(md−xj),xi>=md;xj<=md)
基于密度的离群点检测方法的关键步骤在于给每个数据点都分配一个离散度,其主要思想是:针对给定的数据集,对其中的任意一个数据点,如果在其局部邻域内的点都很密集,那么认为此数据点为正常数据点
而离群点则是距离正常数据点最近邻的点都比较远的数据点。通常有阈值进行界定距离的远近。在基于密度的离群点检测方法中,最具有代表性的方法是局部离群因子检测方法 (Local Outlier Factor, LOF)。
LOF通过计算一个数值score来反映一个样本的异常程度。这个数值的大致意思是:一个样本点周围的样本点所处位置的平均密度比上该样本点所在位置的密度。比值越大于1,则该点所在位置的密度越小于其周围样本所在位置的密度,这个点就越有可能是异常点。
d i s t a n c e ( A , B ) = m a x { d i s t a n c e k ( B ) , d i s t a n c e ( A , B ) } distance(A,B) = \\max\{distance_k(B),distance(A,B)\} distance(A,B)=max{distancek(B),distance(A,B)}
A 点局部可达密度 : l r d ( A ) = 1 ∑ B > N k ( A ) d i a t a n c e k ( A , B ) / k A点局部可达密度:lrd(A) = \frac{1}{\sum{_{B>N_k(A)}}diatance_k(A,B)/k} A点局部可达密度:lrd(A)=∑B>Nk(A)diatancek(A,B)/k1
N k ( A ) N_k(A) Nk(A)是A点的k距离邻域, 也就是要计算A点与邻域内每一个点的距离
给每个数据点都分配一个依赖于邻域密度的离群因子 LOF,进而判断该数据点是否为离群点。
代码:
import pandas as pd
from sklearn.neighbors import LocalOutlierFactor
def lof(data, predict=None, k=5, method=1, plot=False):
# 判断是否传入测试数据,若没有传入则测试数据赋值为训练数据
try:
if predict == None:
predict = data.copy()
except Exception:
pass
predict = pd.DataFrame(predict)
# 计算 LOF 离群因子
clf = LocalOutlierFactor(n_neighbors=k + 1, algorithm='auto', contamination=0.1, n_jobs=-1)
clf.fit(data)
# 记录 k 邻域距离
predict['k distances'] = clf.kneighbors(predict)[0].max(axis=1)
# 记录 LOF 离群因子,做相反数处理
predict['local outlier factor'] = -clf._decision_function(predict.iloc[:, :-1])
# 根据阈值划分离群点与正常点
outliers = predict[predict['local outlier factor'] > method].sort_values(by='local outlier factor')
inliers = predict[predict['local outlier factor'] <= method].sort_values(by='local outlier factor')
return outliers, inliers
clf.fit(data)
#获取第 k 距离邻域内的每一个点到中心点的距离
clf.kneighbors(data)
#获取每一个样本点的 LOF 值,该函数范围 LOF 值的相反数,需要取反号
-clf._decision_function(data)
clf._predict(data) 则按照原先设置的 contamination 输出判断结果(按比例给出判断结果,异常点返回-1,非异常点返回1)
致命缺点:
平均可达距离为零,局部可达密度就变为无穷大
大多数基于模型的异常检测算法会先 ”规定“ 正常点的范围或模式,如果某个点不符合这个模式,或者说不在正常范围内,那么模型会将其判定为异常点
孤立森林的创新点包括以下四个:
算法思想:
我们用一个随机超平面对一个数据空间进行切割,切一次可以生成两个子空间(也可以想象用刀切蛋糕)。接下来,我们再继续随机选取超平面,来切割第一步得到的两个子空间,以此循环下去,直到每子空间里面只包含一个数据点为止
这好像和决策树回归有异曲同工之妙!通过区域划分的思想来判断/预测值!
那到底怎么区分呢?
直观上来看,我们可以发现,那些密度很高的簇要被切很多次才会停止切割,即每个点都单独存在于一个子空间内,但那些分布稀疏的点,大都很早就停到一个子空间内了
算法过程:
异常得分S:
如果异常得分接近 1,那么一定是异常点;
如果异常得分远小于 0.5,那么一定不是异常点;
如果异常得分所有点的得分都在 0.5 左右,那么样本中很可能不存在异常点。
官方文档:
sklearn.ensemble.IsolationForest(
*,
n_estimators=100,
max_samples='auto',
contamination='auto',
max_features=1.0,
bootstrap=False,
n_jobs=None,
random_state=None,
verbose=0, warm_start=False)
例子:
# 加载模型所需要的的包
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest
# 模型训练
iforest = IsolationForest(n_estimators=100, max_samples='auto',
contamination=0.05, max_features=4,
bootstrap=False, n_jobs=-1, random_state=1)
# fit_predict 函数 训练和预测一起 可以得到模型是否异常的判断,-1为异常,1为正常
df['label'] = iforest.fit_predict(X)
# 预测 decision_function 可以得出 异常评分
df['scores'] = iforest.decision_function(X)
# 我们看看哪些预测为异常的
df[df.label==-1]
#可视化1
df['anomaly'] = df['label'].apply(lambda x: 'outlier' if x==-1 else 'inlier')
fig = px.histogram(df,x='scores',color='anomaly')
fig.show()
#可视化2
fig = px.scatter_3d(df,x='petal width (cm)',
y='sepal length (cm)',
z='sepal width (cm)',
color='anomaly')
fig.show()
元数据集成:将多个数据源中的数据整合到一个一致的存储中
注意的问题
:实体识别问题,要匹配来自不同数据源的现实世界中的实体(比如两个表中两个不同的属性代表着一个含义)属性集成:对现实世界中的同一实体,来自不同数据源的属性值可能是不
同的
注意的问题
:数据表示不同、数据的度量不同原因:
数据仓库中往往存有海量数据,在其上进行复杂的数据分
析与挖掘需要很长的时间
通过数据归约可以得到比元数据小得多的数据集,但可以
产生相同的(或几乎相同的)分析结果
目的:
得到能够与原始数据集近似等效甚至更好但数据量却较少的数据集
定义:将数据从一种表示形式变为另一种表现形式的过程
离散化指把连续型数据切分为若干“段”,也就是分箱的过程
离散化就是把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。
例如:
原数据为:{ 1, 999 , 100000 ,15 } 处理之后为:{ 1,3,4,2 }
原数据为:{100,200},{20,50000},{1,400}; 处理之后为:{3,4},{2,6},{1,5};
模型中,同一线性系数应该对所有可能的计数值起作用。过大的计数值对无监督学习方法也会造成破坏,比如k-均值聚类,它使用欧氏距离作为相似度函数来测量数据点之间的相似度。数据向量某个元素中过大的计数值对相似度的影响会远超其他元素,从而破坏整体的相似度测量
value, cutoff = pd.cut(df['mean radius'], bins=4, retbins=True, precision=2)
value, cutoff = pd.qcut(s1, 3, retbins=True)
通过聚类算法(K-Means算法)将连续属性值进行聚类,处理聚类之后的到的k个簇。聚类考虑数据属性值的分布以及数据点的邻近性,因此可以产生高质量的离散化结果
model_kmeans = KMeans(n_clusters=4,random_state=0)
kmeans_result = model_kmeans.fit_predict(data_reshape)
df['amount_cut'] = kmeans_result
信息熵可以衡量区分能力,当特征按照某个分隔点划分为上下两部分后能达到最大的信息增益,那么这就是一个好的分隔点
利用信息增益最大化的方法寻找连续变量的最优切点,当切点确定后,将连续变量一分为二,分为两部分数据集,在这两部分数据集中用同样的方法循环切分,直到信息增益的值小于停止标准为止
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.tree import DecisionTreeClassifier
import numpy as np
# bc = load_breast_cancer()
# df = pd.DataFrame.from_records(data=bc.data, columns=bc.feature_names)
# df['target'] = bc.target
print(df.sample(5)[["mean radius","target"]])
print("-----------------")
dt = DecisionTreeClassifier(criterion='entropy', max_depth=3) # 树最大深度为3
dt.fit(df['mean radius'].values.reshape(-1, 1), df['target'])
print(dt.tree_.feature) # 存放每个节点所采用的特征
print(dt.tree_.threshold) # 存放每个节点特征的阈值
print(dt.tree_.children_left) # 存放经过特征和阈值分裂之后的左孩子
print(dt.tree_.children_right) # 存放经过特征和阈值分裂之后右孩子
print("-----------------")
# 取出这课决策树的所有叶节点的分割点的阈值
print(np.where(dt.tree_.children_right > -1))
qtsr = dt.tree_.threshold[np.where(dt.tree_.children_right > -1)]
print(qtsr)
print(np.where(dt.tree_.children_left > -1))
qts = dt.tree_.threshold[np.where(dt.tree_.children_left > -1)]
print(qts)
print("-----------------")
qts = np.sort(qts)
res = [np.round(x, 3) for x in qts.tolist()]
print(res)
它主要包括两个阶段:初始化阶段和自底向上的合并阶段。
1、初始化阶段:
首先按照属性值的大小进行排序(对于非连续特征,需要先做数值转换,然后排序),然后每个属性值单独作为一组。
2、合并阶段:
(1)对每一对相邻的组,计算卡方值。
(2)根据计算的卡方值,对其中最小的一对邻组合并为一组。
(3)不断重复(1),(2)直到计算出的卡方值都不低于事先设定的阈值或者分组数达到一定的条件(如,最小分组数5,最大分组数8)。
简单来讲,卡方分箱就是不断的计算相邻区间的卡方值(卡方值越小表示分布越相似),将分布相似的区间(卡方值最小的)进行合并,直到相邻区间的分布不同,达到一个理想的分箱结果。理想的分箱是在同一个区间内标签的分布是相同的。
feature_selection.chi2
距离聚类:
最小距离距离:挑类间最小距离的两个点合并,合并计算新距离矩阵时,选取距离小的
最大距离距离:挑类间最小距离的两个点合并,合并计算新距离矩阵时,`选取距离大的
构造衍生变量:通过已有变量,通过不同形式的组合而衍生出的变量
方法:
Q - Q 图: 一个分布到另一个分布的漂移程度
频繁项集定义:
项集X的支持度计数是否大于最小支持度,大于等于,则为频繁项集
推理:项集X为某闭频繁项集的子集,一定频繁。
强规则:频繁且置信度大于最小置信度的规则
闭频繁项集:
极大频繁项:项集X是频繁项集,X的所有超集均是非频繁项集,那么X为极大频繁项集
基本思想:
算法过程:
因为需要统计项集的支持度
)笛卡儿积
+支持度筛选)
给定一个k项集,只需要判断它的k-1项集是否频繁就行
置信度高并非可信
D=10000
{DVD}=7500
{Tape}=6000
{DVD,Tape}=4000
S(Tape -> DVD)=4000/10000 = 0.4
C(Tape -> DVD)=4000/6000 = 0.66
Apriori算法:需要重复扫描数据库,生成候选集集合,再筛选出频繁项集
FP-Growth:
算法流程
分类过程:
考量数据是否可以进行聚类
熵:可以反馈特征子集的聚类质量
E = ∑ i = 1 m [ p i l o g ( p i ) + ( 1 − p i ) l o g ( 1 − p i ) ] E = \sum^m_{i=1}[p_ilog(p_i)+(1-p_i)log(1-p_i)] E=∑i=1m[pilog(pi)+(1−pi)log(1−pi)]
霍普金统计:空间统计量,描述数据的空间分布特征
H = ∑ i = 1 n d s i ∑ i = 1 n d s i + d r i H=\frac{\sum^n_{i=1}d_{si}}{\sum^n_{i=1}d_{si}+d_{ri}} H=∑i=1ndsi+dri∑i=1ndsi
思想:现有数据集D,dri从D中采集所得,又从D中采样数据得到d_si,如果D是均匀分布的,dri和dsi相接近,H=0.5 ; 如果D不是均匀分布,dsi大于dri,那么H>0.5
均方误差:
J = ∑ ∣ ∣ x − m i ∣ ∣ 2 m i = 1 n i ∑ x J = \sum||x-m_i||^2 \\ m_i= \frac{1}{n_i}\sum x J=∑∣∣x−mi∣∣2mi=ni1∑x
J = ∑ ∣ ∣ x i − y i ∣ ∣ J= \sum ||x_i-y_i|| J=∑∣∣xi−yi∣∣
每个簇都是一个概率分布,该概率分布的参数在训练中获得,一般由EM算法估计
思想:
将图映射到多维空间,进行切图,使得切图的总代价最小(子图内点对之间权值大,子图间边权值较小)
自底向上:
单链接:i和j更新过程中取最小值
全连接:i和j更新过程中先最大、后最小值
平均链接:取i和j的平均距离
均值链接: 取i和j距离的绝对值
自顶向下:
聚类特征CF(超球体)
CF(N,(x1,x2…),(x1^2, x2^2…))
CF的三个统计量:
多阶段聚类
算法流程:
步骤:
描述:
- 生成一个概率模型,一般选分布函数(高斯分布、伯努利分布),由模型参数确定
- 训练过程中,找出最佳的拟合观测参数
半径r,密度p
聚类簇数的选择
1.对于n个点的数据集,迭代计算k(从1到n),每次聚类完成后计算每个点到其所属的簇中心的距离平方和(簇内方差和)
2. 平方和逐渐减少直到0
3. 在这个平方和变化时,会出现一个拐点,即下降率突然变缓,这个拐点的k值即为所求
轮廓系数
对于其中的一个点 i 来说:
可见轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优。
思想:
FindCBLOF:
聚类,按类别数量降序排序,分为大簇和小簇
赋予每个点一个基于簇的离群点检测因子CBLOF
CBLOF的值越大,与该簇越相似,越不是离群点
计算CBLOF因子,也就是一个点到最近的大簇的距离。
one-class SVM :二分类的思想,只用判别是或者不是
SVDD:采用一个超球体而不是一个超平面来做划分
AR(p):
I(d):
MA(q):
对称属性:属性的取值同等重要
非对称属性:属性的取值不同等重要
标称属性(nominal attribute):
序数属性:
数值属性:
影响距离计算的因素
马氏距离:到分布中心点的距离
IOSMAP:测地距离
不寻常相似度的重要意义:
TF-IDF = TF * IDF
阻尼函数f(x):针对词频(xi)的,将词频取根号,或者log
TF-IDF = f(TF)* IDF
形象综述:
“袋鼠跳”问题
既然我们把函数曲线理解成一个一个山峰和山谷组成的山脉。那么我们可以设想所得到的每一个解就是一只袋鼠,我们希望它们不断的向着更高处跳去,直到跳到最高的山峰(尽管袋鼠本身不见得愿意那么做)。所以求最大值的过程就转化成一个“袋鼠跳”的过程。
作为对比下面简单介绍“袋鼠跳”的几种方式。
爬山法(最速上升爬山法):
从搜索空间中随机产生邻近的点,从中选择对应解最优的个体,替换原来的个体,不断重复上述过程。因为爬山法只对“邻近”的点作比较,所以目光比较“短浅”,常常只能收敛到离开初始位置比较近的局部最优解上面。对于存在很多局部最优点的问题,通过一个简单的迭代找出全局最优解的机会非常渺茫。(在爬山法中,袋鼠最有希望到达最靠近它出发点的山顶,但不能保证该山顶是珠穆朗玛峰,或者是一个非常高的山峰。因为一路上它只顾上坡,没有下坡。)
模拟退火:
这个方法来自金属热加工过程的启发。在金属热加工过程中,当金属的温度超过它的熔点(Melting Point)时,原子就会激烈地随机运动。与所有的其它的物理系统相类似,原子的这种运动趋向于寻找其能量的极小状态。在这个能量的变迁过程中,开始时,温度非常高, 使得原子具有很高的能量。随着温度不断降低,金属逐渐冷却,金属中的原子的能量就越来越小,最后达到所有可能的最低点。
利用模拟退火的时候,让算法从较大的跳跃开始,使到它有足够的“能量”逃离可能“路过”的局部最优解而不至于限制在其中,当它停在全局最优解附近的时候,逐渐的减小跳跃量,以便使其“落脚 ”到全局最优解上。(在模拟退火中,袋鼠喝醉了,而且随机地大跳跃了很长时间。运气好的话,它从一个山峰跳过山谷,到了另外一个更高的山峰上。但最后,它渐渐清醒了并朝着它所在的峰顶跳去。)
遗传算法:
模拟物竞天择的生物进化过程,通过维护一个潜在解的群体执行了多方向的搜索,并支持这些方向上的信息构成和交换。是以面为单位的搜索,比以点为单位的搜索,更能发现全局最优解。(在遗传算法中,有很多袋鼠,它们降落到喜玛拉雅山脉的任意地方。这些袋鼠并不知道它们的任务是寻找珠穆朗玛峰。但每过几年,就在一些海拔高度较低的地方射杀一些袋鼠,并希望存活下来的袋鼠是多产的,在它们所处的地方生儿育女。)(或者换个说法。从前,有一大群袋鼠,它们被莫名其妙的零散地遗弃于喜马拉雅山脉。于是只好在那里艰苦的生活。海拔低的地方弥漫着一种无色无味的毒气,海拔越高毒气越稀薄。可是可怜的袋鼠们对此全然不觉,还是习惯于活蹦乱跳。于是,不断有袋鼠死于海拔较低的地方,而越是在海拔高的袋鼠越是能活得更久,也越有机会生儿育女。就这样经过许多年,这些袋鼠们竟然都不自觉地聚拢到了一个个的山峰上,可是在所有的袋鼠中,只有聚拢到珠穆朗玛峰的袋鼠被带回了美丽的澳洲。)
遗传算法的实现过程实际上就像自然界的进化过程那样。
首先寻找一种对问题潜在解进行“数字化”编码的方案。(建立表现型和基因型的映射关系)然后用随机数初始化一个种群
(那么第一批袋鼠就被随意地分散在山脉上),种群里面的个体就是这些数字化的编码。
接下来,通过适当的解码过程之后
(得到袋鼠的位置坐标),用适应性函数对每一个基因个体作一次适应度评估
(袋鼠爬得越高,越是受我们的喜爱,所以适应度相应越高)。
用选择函数按照某种规定择优选择
(我们要每隔一段时间,在山上射杀一些所在海拔较低的袋鼠,以保证袋鼠总体数目持平。)。让个体基因变异(让袋鼠随机地跳一跳)。
然后产生子代(希望存活下来的袋鼠是多产的,并在那里生儿育女)。
所以我们总结出遗传算法的一般步骤:
开始循环直至找到满意的解。
1.评估每条染色体所对应个体的适应度。
2.遵照适应度越高,选择概率越大的原则,从种群中选择两个个体作为父方和母方。
3.抽取父母双方的染色体,进行交叉,产生子代。
4.对子代的染色体进行变异。
5.重复2,3,4步骤,直到新种群的产生。
结束循环。
编码方式: 二进制、浮点数
选择的作用:优胜劣汰,适者生存;
交叉的作用:保证种群的稳定性,朝着最优解的方向进化;
变异的作用:保证种群的多样性,避免交叉可能产生的局部收敛。
物竞――适应度函数(fitness function)
自然界生物竞争过程往往包含两个方面:生物相互间的搏斗与及生物与客观环境的搏斗过程。但在我们这个实例里面,你可以想象到,袋鼠相互之间是非常友好的,它们并不需要互相搏斗以争取生存的权利。它们的生死存亡更多是取决于你的判断。因为你要衡量哪只袋鼠该杀,哪只袋鼠不该杀,所以你必须制定一个衡量的标准。而对于这个问题,这个衡量的标准比较容易制定:袋鼠所在的海拔高度。(因为你单纯地希望袋鼠爬得越高越好。)所以我们直接用袋鼠的海拔高度作为它们的适应性评分。即适应度函数直接返回函数值就行了。
天择――选择函数(selection)
自然界中,越适应的个体就越有可能繁殖后代。但是也不能说适应度越高的就肯定后代越多,只能是从概率上来说更多。
参考链接
模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合一定的概率突跳
特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。
结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,那么具体的更新解的机制是什么呢?如果新解比当前解更优,则接受新解,否则基于Metropolis准则判断是否接受新解。接受概率为:
如上公式,假设当前时刻搜索的解为 x t x_t xt,对应的系统能量(目标函数)为E_t,对搜索点施加随机扰动,产生新解 x t + 1 x_{t+1} xt+1,相应地,系统能量为E_{t+1},那么系统对搜索点 x t x_t xt到 x t + 1 x_{t+1} xt+1转变的接受概率就为上公式
假设开始状态在A,随着迭代次数更新到B局部最优解,这时发现更新到B时,能量比A要低,则说明接近最优解了,因此百分百转移.
状态到达B后,发现下一步能量上升了,如果是梯度下降则是不允许继续向前的,而这里会以一定的概率跳出这个坑,这个概率和当前的状态、能量等都有关系.
如果B最终跳出来了到达C,又会继续以一定的概率跳出来,直到到达D后,就会稳定下来。
算法实质分两层循环,在任一温度水平下,随机扰动产生新解,并计算目标函数值的变化,决定是否被接受。由于算法初始温度比较高,这样,使E增大的新解在初始时也可能被接受,因而能跳出局部极小值,然后通过缓慢地降低温度,算法就最终可能收敛到全局最优解,具体流程为:
鸟被抽象为没有质量和体积的微粒(点),并延伸到N维空间,粒子i在N维空间的位置表示为矢量Xi=(x1,x2,…,xN)
,飞行速度表示为矢量Vi=(v1,v2,…,vN)
。
每个粒子都有一个由目标函数决定的适应值(fitness value),并且知道自己到目前为止发现的最好位置(pbest)和现在的位置Xi。这个可以看作是粒子自己的飞行经验。
除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(gbest)(gbest是pbest中的最好值),这个可以看作是粒子同伴的经验。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。
公式(1)的第①部分称为【记忆项】,表示上次速度大小和方向的影响;
公式(1)的第②部分称为【自身认知项】,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;
公式(1)的第③部分称为【群体认知项】,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。
1)初始化一群微粒(群体规模为N),包括随机位置和速度;
2)评价每个微粒的适应度;
3)对每个微粒,将其适应值与其经过的最好位置pbest作比较,如果较好,则将其作为当前的最好位置pbest;
4)对每个微粒,将其适应值与其经过的最好位置gbest作比较,如果较好,则将其作为当前的最好位置gbest;
5)根据公式(2)、(3)调整微粒速度和位置;
6)未达到结束条件则转第2)步。
迭代终止条件根据具体问题一般选为最大迭代次数Gk或(和)微粒群迄今为止搜索到的最优位置满足预定最小适应阈值。
参考链接
算法基本思想:
流行度:物品的流行度指对物品产生过行为的用户的总数
召回率
精度
覆盖率:推荐商品的数量占总商品数的比例
协同:就是利用群体的行为来做决策(推荐),生物上有协同进化的说法,通过协同的作用,让群体逐步进化到更佳的状态。
过滤:就是从可行的决策(推荐)方案(标的物)中将用户喜欢的方案(标的物)找(过滤)出来。
协同过滤分为基于用户的协同过滤和基于标的物(物品)的协同过滤两类算法。
w i j = ∣ N ( i ) ∩ N ( j ) ∣ ∣ N ( i ) ∣ w_{ij} = \frac{|N(i)\cap N(j)|}{|N(i)|} wij=∣N(i)∣∣N(i)∩N(j)∣
分子:同时喜欢物品i和j的用户数
公式理解:
问题:
缓解:加阻尼函数,惩罚权重
w i j = ∣ N ( i ) ∩ N ( j ) ∣ ∣ N ( i ) ∣ ∗ ∣ N ( j ) ∣ w_{ij} = \frac{|N(i)\cap N(j)|}{\sqrt{|N(i)|*|N(j)|}} wij=∣N(i)∣∗∣N(j)∣∣N(i)∩N(j)∣
建立用户-物品倒排表:
def ItemSimilarity(train):
#通过用户计算物品的相似度
C = dict{}
N = dict{} # 记录用户/物品遍历次数,用于归一化
for users,items in train.items():
for i in items:
N[i] += 1
for j in items:
if i==j : # 矩阵对角线排除
continue
C[i][j] += 1
# 计算最后的相似度系数矩阵
W = dict{}
for i,related_items in C.items():
for j , cij in related_items():
W[u][v] = cij / math.sqrt(N[i]*N[j]) # cij本身就是两物品出现次数的加和,这里就行归一化
return W
得到物品的相似度矩阵后,计算用户u对一个物品的兴趣:
p u j = ∑ i ∈ N ( u ) ∩ S ( j , K ) w j i ∗ r u i p_{uj}= \sum_{i\in N(u) \cap S(j,K)}w_{ji} * r_{ui} puj=i∈N(u)∩S(j,K)∑wji∗rui
"""
生成推荐排名 rank , K 是个比较关键的超参数
"""
def recommondation(train, user_id ,W ,K):
rank = dict{}
ru = train[user_id] #(物品,兴趣) :用户喜欢某个物品,和对该物品的兴趣
for i,pi in ru.items(): # 遍历用户的喜欢物品的集合和兴趣
# 遍历和物品i最相似的top K 个物品,用相似度矩阵该物品行的相似度就行排序
for j,wj in sorted(W[i].items(),\
key=itemgetter(1),reverse=True)[0:K]:
if j in ru: # 去除掉用户已经喜欢的,即已经在用户喜欢列表内的
continue
# 剩下的就隐含的、可能喜欢的,同时进行解释哪些物品参与了贡献
rank[j].weight += pi * wj
rank[j].reason[i] = pi * wj
return rank
100万个商品,有一个用户买了80%的商品,那他的相似度矩阵相当的大,80w * 80w,但他是商户,买东西不是自己的兴趣,那么他的贡献度应该很小才对
提出了IUF,用户活跃度对数的倒数的参数:活跃的用户对物品的贡献度应该低于不活跃的用户
w i j = ∑ u ∈ N ( i ) ∩ N ( j ) l o g ( 1 + ∣ N ( u ) ∣ ) ∣ N ( i ) ∣ ∣ N ( j ) ∣ w_{ij}=\sum_{u \in N(i)\cap N(j)}\frac{log(1+|N(u)|)}{\sqrt{|N(i)||N(j)|}} wij=u∈N(i)∩N(j)∑∣N(i)∣∣N(j)∣log(1+∣N(u)∣)
为什么这样做呢?
一般情况下,ItemCF类内的相似度要大于类间的相似度,这样的话推荐的都是一类的。这样归一化后,类间和类内的推荐几率和数目应该一样
人以群分,就是我们可以将与该用户相似的用户喜欢过的标的物的标的物推荐给该用户(而该用户未曾操作过),这就是基于用户的协同过滤。
def UserSimilarity(train):
W = dict{} # 通过物品集建立用户相似度矩阵
for u in train.keys():
for v in train.keys():
if u==v:
continue
W[u][v] = len(train[u] & train[v])
W[u][v] /= math.sqrt(train[u])*len(train[v])
return W
错误想法: 详细来说就是,用户的物品列表长度不一,直接存的话方阵大部分是空的,给0的话开销也很大,用物品的倒排表的意义就是,减少物品列表很长的用户和物品列表很短的
存储开销无法避免,计算开销可以
) 不要计算为0的相似度,倒过来去计算不为0的,只要分子不为0,相似度必不为0def UserSimilarity(train):
# 建立倒排表
item_users = dict{}
for u,items in train.items():
for i in item.keys(): # 遍历物品列表
if i not in item_users:
item_users[i] = set()
item_users.add(u)
# 计算频率
C = dict{}
N = dict{}
for i,users in item_users.items():
for u in users:
N[u] += 1
for v in users:
if u==v:
continue
C[u][v]+=1
# 计算相似度
W = dict{}
for u, related_users in C.items():
for v, cuv in related_users.item():
W[u][v]= cuv / math.sqrt(N[u]*N[v])
return W
def Recommend(user,train,W):
rank = dict{}
interacted_items = train[user]
# 相似度Top K 排序
for v, wuv in sorted(W[u].items, key=itemgetter(1), \
reverse=True) [0:K]:
if i in interacted_items:
# 已知用户喜欢列表的东西就不推荐了
continue
rank[i] += wuv * rvi
return rank
协同过滤的核心是怎么计算标的物之间的相似度以及用户之间的相似度
公式的分子:就是下图矩阵中对应的i列和j列中同一行中的两个元素(红色矩形中的一对元素)相乘,并且将所有行上第i列和第j列的元素相乘得到的乘积相加
公式中分母:是第i行与第i行按照上面类似的方法相乘再相加后开根号的值,再乘以第j行与第j行按照上面类似的方法相乘再相加后开根号的值。
数据挖掘导论课后习题:
专栏
第二章
第三章
第四章
第一章 绪论
一.判断题(共10题,83.0分)
下面各项是否是数据挖掘任务?
1根据性别划分公司的顾客
我的答案:× 得分: 8.3分正确答案:× 答案解析: 这属于简单的数据库查询
2根据可盈利性划分公司的顾客
我的答案:× 得分: 8.3分正确答案:× 答案解析: 这是简单的会计计算
3计算公司的总销售额
我的答案:× 得分: 8.3分正确答案:× 答案解析: 这是简单的会计计算
4按学生的标识号对学生数据库进行排序
我的答案:× 得分: 8.3分正确答案:× 答案解析: 这是简单的数据库查询
5 预测掷骰子的结果
我的答案:× 得分: 8.3分正确答案:× 答案解析: 由于每一面都是同等概率,属于概率计算;如果概率是不同等,根据历史数据预测结果则更类似于数据挖掘任务
6 使用历史记录预测某公司未来的股价价格
我的答案:√ 得分: 8.3分正确答案:√ 答案解析: 需要建立模型来预测股票价格,属于数据挖掘领域中的预测模型,可以使用回归来建模,或使用时间序列分析
7 监测病人心率的异常变化
我的答案:√ 得分: 8.3分正确答案:√ 答案解析: 需要建立正常心率行为模型,并预警非正常心率行为。这属于数据挖掘领域的异常检测。若有正常和非正常心率行为样本,则可看作一个分类问题
8 监视地震活动的地震波
我的答案:√ 得分: 8.3分正确答案:√ 答案解析: 需要建立与地震活动相关的不同波形的模型,并预警波形活动。这属于数据挖掘领域的分类问题
9 提取声波的频率
我的答案:× 得分: 8.3分正确答案:× 答案解析: 属于信号处理问题
10 为用户提供电影推荐
我的答案:√ 得分: 8.3分正确答案:√ 答案解析: 典型推荐问题
二.简答题(共2题,17.0分)
1 举例说明数据挖掘、数据分析、机器学习、人工智能的概念以及区别。
正确答案:
数据挖掘是:从海量的业务数据中识别出巨量数据中有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程。数据挖掘受到很多学科领域的影响,其中数据库、机器学习、统计学无疑影响最大。简言之,对数据挖掘而言,数据库提供数据管理技术,机器学习和统计学提供数据分析技术。
数据分析,是指使用适当的统计分析方法(如聚类分析、相关性分析等)对收集来的大量数据进行分析,从中提取有用信息和形成结论,并加以详细研究和概括总结的过程。
机器学习:利用经验(以数据的形式存在)来改善计算机系统自身的性能,是人工智能的核心研究领域之一,也是计算机科学的子领域,同时也是人工智能的一个分支和实现方式。同时给出了形式化的描述:对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么就称这个计算机程序在从经验E学习。
人工智能:是使计算机模拟或实现人类的学习行为,以获取新的知识和技能,使之不断改善自身的性能。
区别:我们可以把数据挖掘理解为一种类型的工作,或工作中的某种成分,机器学习是帮助完成这个工作的方法,所以说机器学习和数据库是数据挖掘的两大支撑技术。统计学、数据库和人工智能共同构造了数据挖掘技术的三大支柱,许多成熟的统计方法构成了数据挖掘的核心内容。数据分析是把数据变成信息的工具,数据挖掘是把信息变成认知的工具,如果我们想要从数据中提取一定的规律(即认知)往往需要数据分析和数据挖掘结合使用。从数据分析的角度来看,绝大多数数据挖掘技术都来自机器学习领域,但机器学习研究往往并不把海量数据作为处理对象,因此,数据挖掘要对算法进行改造,使得算法性能和空间占用达到实用的地步。同时,数据挖掘还有自身独特的内容,即关联分析。
我的答案:
一、 概念
数据挖掘:一般是指从大量的数据中通过算法搜索隐藏于其中信息的过程。
数据分析:是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程;
机器学习:通过计算机实现并采用特定算法学习和识别被测对象的隐含规律和联系,并做出智能决策;
人工智能:是使计算机模拟或实现人类的学习行为,以获取新的知识或技能,使之不断改善自身的性能;
二、区别
1、数据挖掘通常与计算机科学有关,更多针对内部企业行业小众化的数据挖掘,数据挖掘主要发现的是问题和诊断;
2、数据分析就是进行做出针对性的分析和诊断;
3、机器学习强调学习(任务➡训练过程➡模型表现P),而不是计算机程序;
4、人工智能包括了数据挖掘和机器学习,人工智能是目的、结果。机器学习是方法、工具; 批语 回答正确
2 当前主流的数据挖掘工具有哪些?下载其中一个工具,尝试简单操作。
正确答案: 1、 Weka WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。 2、 Rapid Miner RapidMiner是世界领先的数据挖掘解决方案,在一个非常大的程度上有着先进技术。它数据挖掘任务涉及范围广泛,包括各种数据艺术,能简化数据挖掘过程的设计和评价。 3、 Orange Orange是一个基于组件的数据挖掘和机器学习软件套装,它的功能即友好,又很强大,快速而又多功能的可视化编程前端,以便浏览数据分析和可视化,基绑定了 Python以进行脚本开发。它包含了完整的一系列的组件以进行数据预处理,并提供了数据帐目,过渡,建模,模式评估和勘探的功能。其由C++ 和 Python开发,它的图形库是由跨平台的Qt框架开发。 4、 Knime KNIME (Konstanz Information Miner) 是一个用户友好,智能的,并有丰演的开源的数据集成,数据处理,数据分析和数据勘探平台。 5、 jHepWork jHepWork是一套功能完整的面向对象科学数据分析框架。 Jython宏是用来展示一维和二维直方图的数据。该程序包括许多工具,可以用来和二维三维的科学图形进行互动。 6、 Apache Mahout Apache Mahout 是 Apache Software Foundation (ASF) 开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 在许可下免费使用。该项目已经发展到了它的最二个年头,目前只有一个公共发行版。Mahout 包含许多实现,包括集群、分类、CP 和进化程序。此外,通过使用 Apachehadoop库,Mahout 可以有效地扩展到云中。 7、 ELKI ELKI(Environment for Developing KDD-Applications Supported by Index-Structures)主要用来聚类和找离群点。ELKI是类似于weka的数据挖掘平台,用java编写,有GUI图形界面。可以用来寻找离群点。 8、 Rattle Rattle(易于学习的 R 分析工具)提供数据的统计和可视化摘要,将数据转换成容易建模的形式,从数据中构建无监督和监督模型,以图形方式呈现模型的性能,并得出新的数据集。
第二章 数据仓库
一.简答题(共5题,100.0分)
1 数据仓库与数据库的本质区别是什么?
我的答案: 1、数据库用于事务处理,数据仓库用于决策分析; 2、数据库保持事务处理的当前状态,数据仓库既保存过去的数据又保存当前的数据; 3、数据仓库的数据是大量数据库的集成; 4、对数据库的操作比较明确,操作数据量少,对数据仓库操作不明确,操作数据量大。5、数据库是细节的、在存取时准确的、可更新的、一次操作数据量小、面向应用且支持管理; 6、数据仓库是综合或提炼的、代表过去的数据、不更新、一次操作数据量大、面向分析且支持决策。 数据库:是一种逻辑概念,用来存放数据的仓库。通过数据库软件来实现。数据库由很多表组成,表是二维的,一张表里可以有很多字段。字段一字排开,对应的数据就一行一行写入表中。数据库的表,在于能够用二维表现多维关系。目前市面上流行的数据库都是二维数据库。如:Oracle、DB2、MySQL、Sybase、MS SQL Server等。 数据仓库:是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件实现的存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大得多。数据仓库主要用于数据挖掘和数据分析,辅助领导做决策。
2 OLAP、OLTP全称是什么?两者有何区别?
我的答案: 操作型处理:叫联机事务处理OLTP(On-Line Transaction Processing,),也可以称面向交易的处理系统, 1、它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。2、OLTP是传统关系数据库的主要应用,主要是基本的、日常的事务处理,如银行交易。 分析型处理:叫联机分析处理OLAP(On-Line Analytical Processing), 1、是数据仓库的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。2、OLAP具有汇总、合并和聚集功能,以及从不同角度观察信息的能力,支持多维分析和决策。
3 说明数据仓库与数据挖掘的关系
我的答案: 1一般情况下,进行数据挖掘之前,都会先用各个数据库中的数据构建数据仓库,再在数据仓库的基础之上进行挖掘。2数据挖掘是在数据仓库中进行数据深层分析的一种必不可少的手段。3数据仓库并不是进行数据挖掘必需的条件,数据挖掘可以不在建立数据仓库的基础上进行。
4 什么是元数据?元数据在数据仓库中有什么作用?
我的答案: 元数据:是对数据描述的基础,是数据的数据。
元数据的作用:
1用来对数据仓库中的各种数据进行描述。
2用来组织和管理并挖掘信息资源。
3描述系统的具体功能要求、执行程序和系统的整体过程。
4为数据模型提供存储说明和存储格式,便于扩展。
5 说明数据仓库的4个特点
我的答案: 1、数据仓库的数据是面向主题的
2、数据仓库的数据是集成的
3、数据仓库的数据是不可更新的
4、数据仓库的数据是随时间不断变化的
第三章 分类
一.单选题(共10题,50.0分)
1 决策树中不包含一下哪种结点
A、 根结点 B、 内部结点 C、 外部结点 D、 叶结点
正确答案: C 我的答案:C得分: 5.0分
2 以下哪项关于决策树的说法是错误的
A、 冗余属性不会对决策树的准确率造成不利的影响
B、 子树可能在决策树中重复多次
C、 决策树算法对于噪声的干扰非常敏感
D、 寻找最佳决策树是NP完全问题
正确答案: C 我的答案:C得分: 5.0分
3 以下关于人工神经网络(ANN)的描述错误的有
A、 神经网络对训练数据中的噪声非常鲁棒
B、 可以处理冗余特征
C、 训练ANN是一个很耗时的过程
D、 至少含有一个隐藏层的多层神经网络
正确答案: A 我的答案:A得分: 5.0分
4 在ID3算法中信息增益是指
A、 信息的溢出程度 B、 信息的增加效益 C、 熵增加的程度最大 D、 熵减少的程度最大
正确答案: D 我的答案:D得分: 5.0分
5 分类是一种( )学习
A、 无监督 B、 半监督 C、 监督 D、 以上都错
正确答案: C 我的答案:C得分: 5.0分
6 朴素贝叶斯分类算法是基于( )的朴素假定
A、 类条件相关 B、 类条件独立 C、 类条件正相关 D、 类条件负相关
正确答案: B 我的答案:B得分: 5.0分
7 下列哪项说法不正确
A、 人工智能是对人类智能的模拟
B、 人工神经元是对生物神经元的模拟
C、 生物神经信号由树突传递给轴突
D、 人工神经元的激活函数可以有多种设计
正确答案: C 我的答案:C得分: 5.0分
8 贝叶斯网络起源于贝叶斯统计学,是以( )为基础的有向图模型,它为处理不确定知识提供了有效方法。
A、 线性代数 B、 逻辑学 C、 概率论 D、 信息论
正确答案: C 我的答案:C得分: 5.0分
9 SVM算法的性能取决于( )
A、 核函数的选择 B、 软间隔参数 C、 核函数的参数 D、 以上所有
正确答案: D 我的答案:D得分: 5.0分
10 以下有关支持向量机说法不正确的是( )
A、 具有很好的推广能力 B、 采用结构化风险最小化原理
C、 是凸二次优化问题 D、 得到的是局部最优解
正确答案: D 我的答案:D得分: 5.0分
二.判断题(共10题,50.0分)
1 神经网络对噪音数据具有高承受能力,并能对未经过训练的数据具有分类能力,但其需要很长的训练时间,因而对于有足够长训练时间的应用更合适。
我的答案:√ 得分: 5.0分正确答案:√
2 数据分类由两步过程组成:第一步,建立一个聚类模型,描述指定的数据类集或概念集;第二步,使用模型进行分类。
我的答案:× 得分: 5.0分正确答案:×
3 分类规则的挖掘方法通常有:决策树法、贝叶斯法、人工神经网络法、粗糙集法和遗传算法。
我的答案:√ 得分: 5.0分正确答案:√
4 对于SVM分类算法,待分样本集中的大部分样本不是支持向量,移去或者减少这些样本对分类结果没有影响。
我的答案:√ 得分: 5.0分正确答案:√
5 Bayes法是一种在已知后验概率与类条件概率的情况下的模式分类方法,待分样本的分类结果取决于各类域中样本的全体。
我的答案:× 得分: 5.0分正确答案:×
6 分类是预测数据对象的离散类别,预测是用于数据对象的连续取值。
我的答案:√ 得分: 5.0分正确答案:√
7 反向传播算法中要先计算靠近输入层参数的梯度,再计算靠近输出层参数的梯度
我的答案:× 得分: 5.0分正确答案:×
8 贝叶斯网络具有的条件独立性是结点与其后代结点条件独立
我的答案:× 得分: 5.0分正确答案:×
9 支持向量是最靠近决策表面的数据点
我的答案:√ 得分: 5.0分正确答案:√
10 数据有噪声,有重复值,不会导致SVM算法性能下降
我的答案:× 得分: 5.0分正确答案:×
第四章 数据预处理
一.单选题(共10题,100.0分)
1 假设16个销售价格记录组已经排序如下:21, 68,15 , 57 , 95 ,30, 126 , 89 , 50, 5, 34, 70, 46, 2,108, 10。将它们划分成四个箱。等频划分时,50在第几个箱子内?( )
A、 第一个 B、 第二个 C、 第三个 D、 第四个
正确答案: C 我的答案:C得分: 10.0分
2 下面哪个不属于数据的属性类型:( )
A、 标称 B、 相异 C、 区间 D、 序数
正确答案: B 我的答案:B得分: 10.0分
3 下列关于等距离分箱的说法中错误的是()
A、 等距离分箱能使每个区间内包含的取值个数大致相同
B、 等距离分箱可能导致属于某些的取值非常多,而某些由非常少
C、 若区间个数为k,每个区间的间距为L=(max-min)/k
D、 又称为等宽度分箱
正确答案: A
4 下列关于数据规范化说法错误的是()
A、 数据规范化是为了避免不同属性的不平等地位
B、 数据规范化又称数据标准化
C、 数据规范化是将属性的取值范围统一
D、 数据规范化是为了给重要的属性赋予更大的权重
正确答案: D 我的答案:D得分: 10.0分
5 数据预处理的任务不包括()
A、 数据规范化和离散化 B、 特征提取和特征选择 C、 数据分类 D、 数据清洗
正确答案: C 我的答案:C得分: 10.0分
6 缺失值处理方法中错误的是()
A、 对于所有属性都可以使用均值 B、 对于离散属性或定性属性使用众数
C、 转换为分类问题或数值预测问题 D、 对于分类属性,使用同类对象属性值的均值
正确答案: A 我的答案:A得分: 10.0分
7 使用零均值规范化方法,年收入属性的均值为65,标准差为12,则年收入59万元规范化后为()
A、 -0.2 B、 0.2 C、 0.5 D、 -0.5
正确答案: D 我的答案:D得8 使用最小-最大法进行数据规范化,需要映射的目标区间为【0,100】,原来的取值范围是【-10,10】。根据等比映射的原理,一个值8映射到新区间后的值是()
A、 80 B、 85 C、 90 D、 95
正确答案: C 我的答案:C得分: 10.0分
9 列哪些选项能表示序数属性的数据集中趋势度量()
A、 标准差 B、 四分位数 C、 极差 D、 众数
正确答案: D 我的答案:D得分: 10.0分
10 下列对客户相关属性描述中,不是标称属性的是()
A、 身份证号 B、 性别 C、 年龄 D、 婚姻状况
正确答案: C 我的答案:C得分: 10.0分
第五章 聚类
一.单选题(共10题,100.0分)
1 下列描述正确的是( )
A、 分类和聚类都是有指导的学习
B、 分类和聚类都是无指导的学习
C、 分类是有指导的学习,聚类是无指导的学习
D、 分类是无指导的学习,聚类是有指导的学习
正确答案: C
2 简单地将数据对象集划分成不重叠的子集,使得每个数据对象恰在一个子集中,这种聚类类型称作( )
A、 层次聚类 B、划分聚类 C、非互斥聚类 D、模糊聚类
正确答案: B 我的答案:B得分: 10.0分
3 关于K均值聚类说法不正确的是()
A、算法可能终止于局部最优解 B、簇的数目k必须事先给定
C、对噪声和离群点数据敏感 D、适合发现非凸形状的簇
正确答案: D 我的答案:D得分: 10.0分
4 闵可夫斯基距离表示为曼哈顿距离时p为()
A、1 B、2 C、3 D、4
正确答案: A 我的答案:A得分: 10.0分
5 有关聚类的说法中错误的是()
A、无须有标记的样本
B、可以用于提取一些基本特征
C、可以解释观察数据的一些内部结构和规律
D、聚类分析一个簇中的数据之间具有高差异性
正确答案: D 我的答案:D得分: 10.0分
6 K中心点算法每次迭代的计算复杂度是()
A、 O(1) B、 O(k) C、 O(nk) D、 O(k(n-k)2)
正确答案: D 我的答案:D得分: 10.0分
7 如果有m个点,DBSCAN算法在最坏的情况下的时间复杂度为( )
A、 O(m) B、 O(mlogm) C、 O(m2) D、 O(logm)
正确答案: C 我的答案:C得分: 10.0
8 DBSCAN能够聚类以下哪种形状的数据( )
A、 球形 B、 环状 C、 方型 D、 以上都可以
正确答案: D 我的答案:D得分: 10.0分
9 DBSCAN之所以难以有效处理高维数据,其主要原因是( )
A、 数据的形状太复杂 B、 簇的大小未知 C、 噪声点过多 D、 开销过大
正确答案: D 我的答案:
10 K均值算法中,当相似度函数采用( )时,合适的质心是簇中各点的中位数。 A、 曼哈顿距离 B、 欧几里得距离 C、 余弦距离 D、 马氏距离
正确答案: A 我的答案:A得分: 10.0分