算法推荐分类
A. 用于数据挖掘的分类算法有哪些,各有何优劣
1、朴素贝叶斯(Naive Bayes, NB)
简单,就像做一些数数的工作。
如果条件独立假设成立的话,NB将比鉴别模型(如Logistic回归)收敛的更快,所以你只需要少量的训练数据。
如果你想做类似半监督学习,或者是既要模型简单又要性能好,NB值得尝试.
2.Logistic回归(Logistic Regression, LR)
LR有很多方法来对模型正则化。比起NB的条件独立性假设,LR不需要考虑样本是否是相关的。
如果你想要一些概率信息(如,为了更容易的调整分类阈值,得到分类的不确定性,得到置信区间),或者希望将来有更多数据时能方便的更新改进模型,LR是值得使用的.
3.决策树(Decision Tree, DT)
DT是非参数的,所以你不需要担心野点(或离群点)和数据是否线性可分的问题(例如,DT可以轻松的处理这种情况:属于A类的样本的特征x取值往往非常小或者非常大,而属于B类的样本的特征x取值在中间范围)。
DT的主要缺点是容易过拟合,这也正是随机森林(Random Forest, RF)(或者Boosted树)等集成学习算法被提出来的原因。
此外,RF在很多分类问题中经常表现得最好,且速度快可扩展,也不像SVM那样需要调整大量的参数,所以最近RF是一个非常流行的算法.
4.支持向量机(Support Vector Machine, SVM)
很高的分类正确率,对过拟合有很好的理论保证,选取合适的核函数,面对特征线性不可分的问题也可以表现得很好。
SVM在维数通常很高的文本分类中非常的流行。由于较大的内存需求和繁琐的调参,我认为RF已经开始威胁其地位了.
B. 关于算法
阿朱对于算法的了解不多,总结如下,希望多多交流,改正瑕疵。
算法推荐主要有5种方式:
基于内容推荐:这是基于用户个人兴趣的推荐。根据用户个体的历史行为,计算对内容特征的偏好程度,进而推荐出与用户特征偏好匹配的内容。
协同过滤算法:这是基于群体的推荐。基于用户的相似度、内容的共现度,以及基于人口特征将用户聚集为不同群体来推荐。(解释一下:常见的协同过滤算法有两种,一种是基于用户的(user-based),也即计算用户之间的相似性,如果A和B的兴趣相近,那么A喜欢的电影,B也很有可能喜欢。另一种是基于物品的(item-based),也即计算物品之间的相似性,如果电影C和电影D很相似,那么喜欢电影C的人,可能也会喜欢电影D。)
扩展推荐:基于用户兴趣点、内容类别等扩展。(你喜欢历史资讯,我推考古、寻宝的资讯给你)
新热推荐:基于全局内容的时效性、热度推荐。(在产品初期同时缺乏用户数据和内容数据时,内容分发效率很低。使用基于内容推荐算法效果不显着,而使用一些热点话题可在保证一定流量的同时,不断通过用户的个人行为(点赞、评论、浏览、收藏)来逐步精确用户画像和进行内容沉淀,为之后的个性化推荐做准备)。
环境特征:基于地域、时间、场景等推荐。(知乎上你们市的牙科诊所广告、婚庆广告)
每种算法的效果不一,组合味道更佳,因此很多公司都是采用“算法矩阵”的方式来推荐feed。(后文也会谈到这一点)
优势:
内容质量审核、社区治理(辱骂、撕逼),推荐商品,减少人工运营成本。
源源不断推荐给你感兴趣的feed,提升了用户粘性,商业化的潜力进一步加大。
让用户 kill time 的需求更好地被满足,增强用户体验
弊端:
1.算法本身或者算法背后的人产生技术错误——只要是人写的算法,就一定有出错的概率,比如德国居民凌晨发飙的智能音箱、失控的Uber自动驾驶汽车就是程序上的Bug导致的,这一类我们克服的办法其实相对简单。但对于另一种人为算计消费者的算法有时候可能我们就无能为力了,比如大数据杀熟现象,无论真实与否,这类问题往往很难识别,因此也加大了监管的难度;(抖音视频里你见不到“钱”字,只能看到“Q”来代替)
2.算法对于人性部分的忽略——现在的人工智能离真正理解人类的感情和行为依然有巨大的鸿沟,Facebook提醒你给去世的亲人发生日祝福背后本质的原因在于AI无法真正理解死亡对于人类意味着什么;因此需要人机结合(平台人工参与,用户举报等自治措施),不能单独依靠算法。
3.算法训练数据本身的偏见——目前人工智能的基本逻辑是先构建一个合适的机器学习模型,然后用大量的数据去训练模型,然后用训练好的模型再来预测新的数据,这里边有一个非常重要前提就是输入数据的重要性,比如变坏的微软机器人Tay之所以产生问题就是因为输入的数据中本身就存在偏见,如果现实世界数据本身就存在偏见,那么预测结果也一定会有偏见;
先下结论吧:算法不会导致“信息茧房”
“社交媒体和算法推荐导致信息茧房”这一判断成立的一个重要前提是:我们只会点击那些我们熟悉的、赞同的内容,不断让机器加深对我们的印象:原来他们只喜欢看这些!
但在现实中,这个前提是过于简化的,乃至是错误的。
在个体层面,我们有着多样的阅读动机,受到各种认知偏见的影响,可能倾向于点击某些特定类型的内容,但绝不仅仅局限于自己认同的那些。
在社交层面:我们在大多数APP上都存在着社交关系,以及主动选择关注的帐号,这些都对我们能接触到的内容产生重要影响。一个在APP上拥有一定社交关系的人,不太可能陷入狭窄的视野当中。
在技术层面:在算法的分类里说了,每种算法都有其利弊,因此很多公司都是采用“算法矩阵”的方式来推荐feed。但在普罗大众眼里,算法=基于内容的推荐算法,而忽略了“基于内容的推荐算法”只是算法种类里的一种,其他类型算法也会被产品使用。
在企业层面:没有一个商场的经理,希望顾客每一次来到商场都只关注同一类别的商品。用户兴趣窄化对于商业化目标并不是一个好的选择。
博弈:
推荐太强了,关注力量就会弱。抖音沉浸式交互和基于内容的算法推荐是 kill time 的利器,推荐feed刷的过瘾了,你还会去刷关注feed吗?
共生:
算法有弊端,关注可以弥补或有所增益。推荐feed是忽略了人"社交性“这个特点,以知乎为例,关注的内容生产者传递给我们价值,所以我们需要一个途径来知道那几十个或上百的关注对象的产出内容。朋友圈满足我们窥探的信息需求,也同理。(另外从结果反推过程,大家看一下手里的B站、知乎、抖音、快手就清楚了)
C. 推荐算法有哪些
推荐算法大致可以分为三类:基于内容的推荐算法、协同过滤推荐算法和基于知识的推荐算法。 基于内容的推荐算法,原理是用户喜欢和自己关注过的Item在内容上类似的Item,比如你看了哈利波特I,基于内容的推荐算法发现哈利波特II-VI,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给你,这种方法可以避免Item的冷启动问题(冷启动:如果一个Item从没有被关注过,其他推荐算法则很少会去推荐,但是基于内容的推荐算法可以分析Item之间的关系,实现推荐),弊端在于推荐的Item可能会重复,典型的就是新闻推荐,如果你看了一则关于MH370的新闻,很可能推荐的新闻和你浏览过的,内容一致;另外一个弊端则是对于一些多媒体的推荐(比如音乐、电影、图片等)由于很难提内容特征,则很难进行推荐,一种解决方式则是人工给这些Item打标签。 协同过滤算法,原理是用户喜欢那些具有相似兴趣的用户喜欢过的商品,比如你的朋友喜欢电影哈利波特I,那么就会推荐给你,这是最简单的基于用户的协同过滤算法(user-based collaboratIve filtering),还有一种是基于Item的协同过滤算法(item-based collaborative filtering),这两种方法都是将用户的所有数据读入到内存中进行运算的,因此成为Memory-based Collaborative Filtering,另一种则是Model-based collaborative filtering,包括Aspect Model,pLSA,LDA,聚类,SVD,Matrix Factorization等,这种方法训练过程比较长,但是训练完成后,推荐过程比较快。 最后一种方法是基于知识的推荐算法,也有人将这种方法归为基于内容的推荐,这种方法比较典型的是构建领域本体,或者是建立一定的规则,进行推荐。 混合推荐算法,则会融合以上方法,以加权或者串联、并联等方式尽心融合。 当然,推荐系统还包括很多方法,其实机器学习或者数据挖掘里面的方法,很多都可以应用在推荐系统中,比如说LR、GBDT、RF(这三种方法在一些电商推荐里面经常用到),社交网络里面的图结构等,都可以说是推荐方法。
D. 用于数据挖掘的分类算法有哪些,各有何优劣
常见的机器学习分类算法就有,不常见的更是数不胜数,那么我们针对某个分类问题怎么来选择比较好的分类算法呢?下面介绍一些算法的优缺点:
1. 朴素贝叶斯
比较简单的算法,所需估计的参数很少,对缺失数据不太敏感。如果条件独立性假设成立,即各特征之间相互独立,朴素贝叶斯分类器将会比判别模型,如逻辑回归收敛得更快,因此只需要较少的训练数据。就算该假设不成立,朴素贝叶斯分类器在实践中仍然有着不俗的表现。如果你需要的是快速简单并且表现出色,这将是个不错的选择。其主要缺点现实生活中特征之间相互独立的条件比较难以实现。
2. 逻辑回归
模型训练时,正则化方法较多,而且你不必像在用朴素贝叶斯那样担心你的特征是否相关。与决策树与支持向量机相比,逻辑回归模型还会得到一个不错的概率解释,你甚至可以轻松地利用新数据来更新模型(使用在线梯度下降算法)。如果你需要一个概率架构(比如简单地调节分类阈值,指明不确定性,获得置信区间),或者你以后想将更多的训练数据快速整合到模型中去,逻辑回归是一个不错的选择。
3. 决策树
决策树的分类过程易于解释说明。它可以毫无压力地处理特征间的交互关系并且是非参数化的,因此你不必担心异常值或者数据是否线性可分。它的一个缺点就是不支持在线学习,于是在新样本到来后,决策树需要全部重建。另一个缺点是容易过拟合,但这也就是诸如随机森林(或提升树)之类的集成方法的切入点。另外,随机森林经常是多分类问题的赢家(通常比支持向量机好上那么一点),它快速并且可调,同时你无须担心要像支持向量机那样调一大堆参数,所以随机森林相当受欢迎。
4. 支持向量机
高准确率,为避免过拟合提供了很好的理论保证,而且就算数据在原特征空间线性不可分,只要给个合适的核函数,它就能运行得很好。在超高维的文本分类问题中特别受欢迎。可惜内存消耗大,难以解释,运行和调参也有些烦人,所以我认为随机森林要开始取而代之了。
但是,好的数据却要优于好的算法,设计优良特征比优良的算法好很多。假如你有一个超大数据集,那么无论你使用哪种算法可能对分类性能都没太大影响(此时就根据速度和易用性来进行抉择)。
如果你真心在乎准确率,你一定得尝试多种多样的分类器,并且通过交叉验证选择最优。