最近在搞数据挖掘和推荐系统的项目,借着项目,自己简单吧常用的算法总结了一下,记录下来便于自己理解以及后期的学习,如有不对的地方请大家指出!
1.ALS算法原理?
答:对于user-product-rating数据,als会建立一个稀疏的评分矩阵,其目的就是通过一定的规则填满这个稀疏矩阵。
als会对稀疏矩阵进行分解,分为用户-特征值,产品-特征值,一个用户对一个产品的评分可以由这两个矩阵相乘得到。
通过固定一个未知的特征值,计算另外一个特征值,然后交替反复进行最小二乘法,直至差平方和最小,即可得想要的矩阵。
2、kmeans算法原理?
随机初始化中心点范围,计算各个类别的平均值得到新的中心点。
重新计算各个点到中心值的距离划分,再次计算平均值得到新的中心点,直至各个类别数据平均值无变化。
3、canopy算法原理?
根据两个阈值来划分数据,以随机的一个数据点作为canopy中心。
计算其他数据点到其的距离,划入t1、t2中,划入t2的从数据集中删除,划入t1的其他数据点继续计算,直至数据集中无数据。
4、朴素贝叶斯分类算法原理?
对于待分类的数据和分类项,根据待分类数据的各个特征属性,出现在各个分类项中的概率判断该数据是属于哪个类别的。
5、关联规则挖掘算法apriori原理?
一个频繁项集的子集也是频繁项集,针对数据得出每个产品的支持数列表,过滤支持数小于预设值的项,对剩下的项进行全排列,重新计算支持数,再次过滤,重复至全排列结束,可得到频繁项和对应的支持数。
分类算法(离散值)
6.决策树
-- ID3 算法通过使用还未被划分的属性的最高信息增益,信息熵的下降速度来确定根节点或分支的测试属性.
ID3通过计算每个数据的信息增益,认为信息增益高的是好属性,依次重复计算未划分的属性增益.
-- C4.5算法是通过将属性集A内属性快熟排序,取相邻两个属性值的平均数计算信息增益比率,取增益比率最高的作为根节点.
对缺失处理:策略是为属性A的每个可能值赋予一个概率。
后减枝方式:
-- cart减枝方式.
将树的代价复杂度看作树中叶子结点的个数和树的错误率的函数。它从树的底部开始,对于每个内部结点Node,计算Node处的子树的代价复杂度和该子树剪枝Node处子树(即用一个叶子结点替换)的代价复杂度。 比较这两个值,如果剪去Node结点的子树导致较小的代价复杂度,则剪去该子树;否则保留该子树。一般最小化代价复杂度的最小决策树是首选
-- 悲观剪枝方式:
错误率函数e与Node结点中分类错误的元组数E、真实的误差率q、置信度c和置信度标准差z等相关,用此上限为结点Node错误率做一个悲观的估计,通过判断剪枝前后e的大小,从而决定是否需要剪枝。
-- 贝叶斯分类
-- 贝叶斯定律 p(H|X) = P(X|H)P(H)/P(X)
-- 朴树贝叶斯分类前提:在给定分类特征条件下,描述属性值之间是相互条件独立的。
-- 增强朴树贝叶斯(TAN):
7.神经网络算法
-- 前馈神经网络 (算法:误差后向传播 BP) 用于分类算法
8.支持向量机(:Support Vector Machine:svm使用了支持向量的算法,求解决策边界)
-- 基本原理:如果训练数据分布在二维平面上的点,它们按照其分类聚集在不同的区域。基于分类边界的分类算法的目标是,通过训练,找到这些分类之间的边界(如果是直线的,称为线性划分,如果是曲线的,称为非线性划分)
-- 梯度下降求解最优解
-- 拉格朗日乘子法
-- 特点:
-- 由于SVM的求解最后转化成二次规划问题的求解,因此SVM的解是全局唯一的最优解。
-- SVM在解决小样本、非线性及高维模式识别问题中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。
-- SVM是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了 通常的分类和回归等问题
-- SVM的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。
-- 由于少数支持向量决定了最终结果,这不但有助于抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。
-- 改进算法:概率SVM、多分类SVM、最小二乘SVM、结构化SVM、多核SVM、支持向量聚类、半监督SVM
回归算法(连续值)
-- 线性回归、非线性回归和逻辑回归
-- 最小二乘法优化
9.一元线性回归分析
10.多元线性回归分析
11.非线性回归分析
12.逻辑回归分析(
-- 二分类:二分逻辑回归
13.时序分析
-- 度确定性时序预测方法
-- 随机时许预测方法
--平稳性 ,自回归模型(AR)
--移动回归模型(MA)
--自回归移动平均(ARMA)
聚类算法
14.基于划分的聚类算法
k-均值(k-means)算法
-- 过程:
-- 输入k值(k个分类或分组)
-- 随机选取k个数据点作为族心
-- 逐个计算数据点到k的距离,取最小的距离划分族群
-- 更具得到的族群,重新计算平均数为族心
-- 如果满足期望结束,否则迭代3-5
优缺点:
-- 复杂度:O(tkn),其中n 是对象的数目,k 是簇的数目,t 是迭代的次数。 通常k、t << n。
-- 通常以局部最优结束。 使用遗传算法技术可以达到全球最优。
缺点
只有在簇的平均值被定义的情况下才能使用,那当涉及有分类属性的数据时该怎么办?
需要事先给出k,即簇的数目
不能处理噪声数据和孤立点
不适合发现非凸面形状的簇
二分k-均值算法
-- 思想:为了得到k个簇,将所有点的集合分为两个簇,从这些簇中选取一个继续分裂,如此下去,直到产生k个簇
-- 过程
-- 任意选择k个对象作为k个中心点。
-- 计算每个非中心点对象到每个中心点的距离。
-- 把每个非中心点对象分配到距离它最近的中心点所代表的簇中。
-- 随机选择一个非中心点对象oi,计算用oi代替某个簇Cx的中之点ox所能带来的好处(用△E表示代替后和代替前误差函数值之差,意思是使误差E增加多少)。
-- 若△E<0,表示代替后误差会减少,则用oi代替ox,即将oi作为簇Cx的中心点;否则,不代替。
-- 重复②~④,直到k个中心点不再发生改变。
16.层次聚类算法
DIANA 算法(层次分裂聚类算法)
-- 度量方式
-- 簇的直径 在一个簇中任意两个数据点的距离中的最大
-- 平均相异度(平均距离)
-- 过程
-- 将所有对象作为一个初始簇
-- 计算簇中最大直径的簇,将平均相异度u 最大的点放入 splinter group,
-- 将 old内找到到到splinter的中心最近距离不大于到old中心的点,放入splinter。
AFGNES 算法(至低向上凝聚)
-- 过程
-- 将两个簇中最近的数据点找到最近的两个簇,
-- 合并两个簇,
-- 重复以上步骤直到达到簇数目
BIRCH 算法
-- 聚类特征(CF)
-- CF = (N ,LS,SS)N代表对象个数,LS代表对象线性和,SS代表N个对象的平方和。
-- 聚类特征树(CF树)
-- CF树是一个高度平衡的树,有两个参数:分支因子B和阀值T
-- CF树构造过程和b树构造相识(对象不断插入的过程),BIRCH支持增量聚类
-- BIRCH算法过程
-- 扫描数据库。将对象填入叶节点,构建初始CF树
-- 选用聚类算法,将CF树的叶节点进行聚类,把稀疏点当作立群点删除,把密集簇合并成更大簇
CURE算法
-- 特点
-- 是自顶向下和自低向上的中间方法
-- 一旦选定代表点,便以一个特定的收缩因子a将他们向簇中心收缩
-- 过程
-- 从数据集D中抽取一个随机样本。样本中包含点的数目s可以由经验公式得到;
-- 把样本划分成p份,每个划分的大小相等,即为s/p个点。
-- 对每个划分进行局部聚类,将每个划分中的点聚类成个s/(pq)子簇,共得到总共s/p个子簇。
-- 对局部簇进一步合并聚类,对落在每个新形成的簇中的代表点(个数为c)根据收缩因子收缩或向簇中心移动,直到只剩下k个簇。在此过程中若一个子簇增长得太慢,就去掉它,另外在聚类结束的时候,删除非常小子簇;
-- 用相应的簇标签来标记数据点;
ROCH算法(凝聚层次聚类算法-链的鲁棒聚类算法)
-- Jaccard系数 事务之间的相似度
-- 过程
-- 根据所给数据集的相似矩阵(由所有两个点的相似度构成的矩阵)和相似度阈值,构造出一个松散图,
-- 然后在这一松散图上应用一个层次聚类算法产生最终聚类结果。
Chameleon算法(变色龙算法)
-- 特点:利用动态模型的层次聚类算法
-- 思想:依据簇中对象的相对互连度和簇的相对接近度来定义簇之间的相似度,即如果两个簇的互连性都很高且它们又靠得很近则将其合并
-- k-最近邻图:k-最近邻图Gk中的每个点表示数据集中的一个数据点
--定义:若数据点pi到另一个数据点pj的距离值是所有数据点到数据点pj的距离值中k个最小值之一,则称数据点pi是数据点pj的k-最近邻点,则在这两个点之间加一条带权边,边的权重表示这两个数据点 之间的相似度,即它们之间的距离越大,则它们之间的相似度越小,它们之间的边的权重也越小
-- 过程:
-- 首先由数据集构造成一个k-最近邻图Gk,
-- 再通过一个多层图划分算法将图Gk划分成大量的子图,每个子图代表一个初始子簇,
-- 最后用一个凝聚的层次聚类算法反复合并子簇,找到真正的结果簇
--组成:稀释化,图划分,层次聚类
17.基于密度的聚类方法
DBSCAN算法
-- 思想:如果一个点p和另一个点q是密度相连的,则p和q属于同一个簇
-- 定义:
-- ç-邻域:以ç为半径的圆区域点数据点集合称为P的ç-领域
-- 核心点:给定MinPts 如果数据集D中的一个点p的ç-邻域至少包含MINPts个点,这称为核心点
-- 给定数据集D的两点,p,q如果q在p的ç-邻域内而p为核心点, 点q是从点p出发直接密度可达
-- 对于给定的ε和MinPts,如果数据集D中存在一个点链p1、p2、…、pn,p1=q,pn=p,对于piD(1≤i -- 对于给定的ε和MinPts,如果数据集D中存在如果存在点oD,使点p和q都是从o出发密度可达的,那么点p到q是密度相连的 -- 过程 : -- 首先选取一个未标记类别的核心点,并创建一个新簇; -- 然后,寻找所有从该核心点出发关于ε和MinPts密度可达的点,并标记为该簇。 -- 重复这个过程,直至处理完所有点,即没有未标记簇的核心点。 OPTICS算法 -- 特点: OPTICS并不显示的产生结果簇,而是为聚类分析生成一个增广的簇排序(比如以可达距离为纵轴,样本点输出次序为横轴的坐标图),这个排序代表了各样本点基于密度的聚类结构。 它包含的信息等价于从一个广泛的参数设置所获得的基于密度的聚类,换句话说,从这个排序中可以得到基于任何参数ε和MinPts的DBSCAN算法的聚类结果 -- 算法产生的排序: 产生了数据集的排序,并为每个点存储了核心距离和相应的可达距离。 也就是说,OPTICS的结果是将所有点按照其直接密度可达的最近的核心点的可达距离进行排序,称为簇排序。然后可以基于OPTICS产生的排序信息来提取簇,对于从该排序中提取小于ε的每个距离值ε'的聚类已经足够