机器学习

机器学习

记信息素养协会及数据挖掘小组第一次分享会

兴趣小组李新春 发表了文章 • 0 个评论 • 49 次浏览 • 2017-10-24 23:20 • 来自相关话题

    随着十九大的召开,习大大号召产业升级,推动互联网,大数据,人工智能和实体经济深度融合。近期,平地一声雷,Nature发表了关于AlphaZero在无知状态下学习围棋并打败他的弟弟AlphaGo 的文章。人工智能,大数据在如今的学术界,工业界打得一片火热。与他们密切相关的信息素养协会的小伙伴们又怎么能落后于这股潮流呢?
    秉着给信息素养协会的伙伴们造福利的理念,10月15日,信息管理学院的李新春和韩韬同学来给同学们分享一些编程和算法的基础知识。
    分享会首先由李新春开始介绍python的基础知识,包括python的简介、安装,另外从python变量、运算符、基础语法、数据结构等进行展开介绍,同时给大家展示了一下python和C,Java的区别。由于分享时间只有半小时左右,所以只能给大家一个初步的认识,希望可以帮到那些对python尚不了解的同学。PPT见附件,里面有一些学习资源的链接。






    另外,为了适应不同层次同学的学习需要,以及小组“数据挖掘”为主的本质,李新春又给大家介绍了机器学习十大算法之一,无监督学习的KMeans,以及KMeans在图像分割中的应用,同时用python实现给大家进行了简单的展示。






    从python基础到机器学习,再到图像分割的具体应用,可以说是一个由浅入深的过程,希望大家可以从中学到一些知识。之外,可能有的同学对python, 对Kmeans都比较熟悉了,所以本次分享会进入第二阶段,由韩韬同学给大家分享爬虫的知识。
    韩韬首先给出了爬虫的基本框架,然后由南京大学小百合的网站出发,给大家展示了浏览器“查看元素”功能的强大之处,在网络爬虫的开发中,浏览器查看元素的作用很重要。此外,韩韬用python的requests库给大家抓取了一些网页,到此如何爬取网页内容已经介绍给大家了。然后,韩韬给大家分享了如何用正则表达式,css选择器来抽取相应的元素。最后,关于一些编码问题,韩韬也做了一些介绍,同时给了大家一些展示。可以说,本次爬虫的分享内容十分丰富,也非常实用,希望各位同学后续可以在网上找一些教程实战一下。






    分享会已经过去一周了,现在才发总结,是不是有点晚了呢?不晚,因为今天是10月24号,1024,仅代表数据挖掘兴趣小组全体成员向所有的程序员祝福,生日快乐。不不不,节日快乐!

   查看全部
    随着十九大的召开,习大大号召产业升级,推动互联网,大数据,人工智能和实体经济深度融合。近期,平地一声雷,Nature发表了关于AlphaZero在无知状态下学习围棋并打败他的弟弟AlphaGo 的文章。人工智能,大数据在如今的学术界,工业界打得一片火热。与他们密切相关的信息素养协会的小伙伴们又怎么能落后于这股潮流呢?
    秉着给信息素养协会的伙伴们造福利的理念,10月15日,信息管理学院的李新春和韩韬同学来给同学们分享一些编程和算法的基础知识。
    分享会首先由李新春开始介绍python的基础知识,包括python的简介、安装,另外从python变量、运算符、基础语法、数据结构等进行展开介绍,同时给大家展示了一下python和C,Java的区别。由于分享时间只有半小时左右,所以只能给大家一个初步的认识,希望可以帮到那些对python尚不了解的同学。PPT见附件,里面有一些学习资源的链接。

1.jpg


    另外,为了适应不同层次同学的学习需要,以及小组“数据挖掘”为主的本质,李新春又给大家介绍了机器学习十大算法之一,无监督学习的KMeans,以及KMeans在图像分割中的应用,同时用python实现给大家进行了简单的展示。

3.jpg


    从python基础到机器学习,再到图像分割的具体应用,可以说是一个由浅入深的过程,希望大家可以从中学到一些知识。之外,可能有的同学对python, 对Kmeans都比较熟悉了,所以本次分享会进入第二阶段,由韩韬同学给大家分享爬虫的知识。
    韩韬首先给出了爬虫的基本框架,然后由南京大学小百合的网站出发,给大家展示了浏览器“查看元素”功能的强大之处,在网络爬虫的开发中,浏览器查看元素的作用很重要。此外,韩韬用python的requests库给大家抓取了一些网页,到此如何爬取网页内容已经介绍给大家了。然后,韩韬给大家分享了如何用正则表达式,css选择器来抽取相应的元素。最后,关于一些编码问题,韩韬也做了一些介绍,同时给了大家一些展示。可以说,本次爬虫的分享内容十分丰富,也非常实用,希望各位同学后续可以在网上找一些教程实战一下。

2.jpg


    分享会已经过去一周了,现在才发总结,是不是有点晚了呢?不晚,因为今天是10月24号,1024,仅代表数据挖掘兴趣小组全体成员向所有的程序员祝福,生日快乐。不不不,节日快乐!

  

第三篇--加法模型与提升方法boost

数据挖掘韩韬 发表了文章 • 3 个评论 • 159 次浏览 • 2017-03-24 23:43 • 来自相关话题

    开始记录算法,和前两篇相比是不是有点太突然?(本文断断续续写了一天,今天上三节课都迟到了……老油条的感慨)
    了解一个领域最重要的就是知道它的思维方式以及它在做什么事情。通过一些积累和总结,我们知道了机器学习就是认为:在掌握的数据和我们的任务之间存在某一个模式,我们要利用机器,学习出这个模式。
     我们仔细审视这句话。问题一:这些数据可以表达出这样的模式吗?问题二:机器怎怎么学习?问题三:怎样判断学出的这个模式的好坏?
     这几个问题会引申出很多讨论。问题一的回答引向数据清洗、特征工程,这决定了学习机器表现的上限;问题二的回答引出算法与优化,重要性不言而喻;问题三的回答引出性能评价方法,通常从具体任务的特性中抽象出来。

     上面的话基本……额……不是今天主要的内容。
     今天想讨论问题二——算法与优化,内容并不符合正常的学习顺序





一、加法模型
(注意:不同于统计学时间序列处理的加法模型)
基本逻辑:
      生活中有很多复杂的事情,单项较弱的个人能力,解决起来总是会有盲点,因此我们就想找人商量商量,组合成强的能力——“三个臭皮匠顶个诸葛亮”嘛(一只小企鹅不行,四个小企鹅就很(。・∀・)ノ゙嗨了)。这是下面我们开展工作的自然的逻辑。数学抽象为:





(M个人每个人的重要性是β(m),γ(m)是这个人的特点,x是这个问题,此人的建议就是b(x;γ(m)))
好的,以上就是加法模型, 的确就是这么简单。下面变换个说法,用基学习器代替人,用学习器权重代替重要性,每个人的特点就是学习器的参数,x就是训练数据集。
       有时候做分类任务时,弱分类器好做,强分类器难做,就适用加法模型了。但是弱分类器不能太差(比如精度小于50%),那说明和随机猜测没什么分别,不能饥不择食。
       不过实质上,还有更多的事情需要处理。显然的两个问题:第一、找什么样人讨论?(基学习器怎么生成)第二、每个人重要性怎么定(权重怎么确定)?这就是我们需要做的真正复杂的工作。
      思考:如果学习器都有同样的优缺点,那就造成冗余,而且没有提高的可能。所以最好是什么情况:各有所长,互缺点互补。(就算是十个臭皮匠,组合之后最多也是开一个臭·皮匠の店)
       好,那我们就利用数学和算法实现这个想法。
       首先,我们量化一下所谓的缺点,它的表示形式应当是训练中预测值与真实值的差距,也就是损失函数  L( y,f(x) ) (loss between real y and prediction f(x)).我们要把它降到最小,也就是:




       这个东西怎么求最小?有求和的公式,很复杂。利用算法思想——前向分步算法。前向就是沿着计算方向向前进行,不断加入新的学习器,分步就是一步一步优化总学习器。我们只需要在第m步(m>=1)求解参数β和γ,这就方便使得新加进学习器之后模型损失最小:




(一步步积累模型,在已有的f(m-1)基础上优化 f(m-1)+βb(x;γ). 显然这是一个greedy strategy)
以下算法描述来自《统计学习方法》




损失函数如何求最小值,这就需要数学解答了。通常没有约束容易求导,会使用梯度下降;有约束条件,常用拉格朗日橙子(杠掉)乘子,转化为对偶问题(dual problem)。




二、提升方法(boost)
当你理解加法模型后,你就知道,加法模型本身就是一种提升方法。
事实上,著名的Adaboost本身就是加法模型的特例。不过Adaboost我更感觉像是从一个学习器出发,根据他的弱点构造互补型学习器,最后将其进行加权线性组合。如何根据他的弱点构造呢?就是将前任做错的事情强迫他更“认真地”去做(加大分类错误样本惩罚权重)。具体的过程很有意思,可以看一看。
提升方法中对于树模型的提升研究较多。对于错误(损失函数)和"有错就改"这个思想的表达的不同分为很多boost算法。如下图所示:




需要说明的是,提升方法太多了,后面可能会讲的模型融合方法bagging、stacking、boosting……这是一个很广泛的理念。
 
不过这里实在是写不下了,我就不写了(费马脸.jpg)
其实整个学习过程就是一个自我教育的过程,机器学习应当归属教育学。
微信阅读不是很深刻,所以留条活路,写得轻松一点。
转载请 联系 注明(字字看来皆是困,一天辛苦不寻常)
不是很烦,可以关注





  查看全部
    开始记录算法,和前两篇相比是不是有点太突然?(本文断断续续写了一天,今天上三节课都迟到了……老油条的感慨)
    了解一个领域最重要的就是知道它的思维方式以及它在做什么事情。通过一些积累和总结,我们知道了机器学习就是认为:在掌握的数据和我们的任务之间存在某一个模式,我们要利用机器,学习出这个模式。
     我们仔细审视这句话。问题一:这些数据可以表达出这样的模式吗?问题二:机器怎怎么学习?问题三:怎样判断学出的这个模式的好坏?
     这几个问题会引申出很多讨论。问题一的回答引向数据清洗、特征工程,这决定了学习机器表现的上限;问题二的回答引出算法与优化,重要性不言而喻;问题三的回答引出性能评价方法,通常从具体任务的特性中抽象出来。

     上面的话基本……额……不是今天主要的内容。
     今天想讨论问题二——算法与优化,内容并不符合正常的学习顺序

0.png

一、加法模型
(注意:不同于统计学时间序列处理的加法模型)
基本逻辑:
      生活中有很多复杂的事情,单项较弱的个人能力,解决起来总是会有盲点,因此我们就想找人商量商量,组合成强的能力——“三个臭皮匠顶个诸葛亮”嘛(一只小企鹅不行,四个小企鹅就很(。・∀・)ノ゙嗨了)。这是下面我们开展工作的自然的逻辑。数学抽象为:

1.png

(M个人每个人的重要性是β(m),γ(m)是这个人的特点,x是这个问题,此人的建议就是b(x;γ(m)))
好的,以上就是加法模型, 的确就是这么简单。下面变换个说法,用基学习器代替人,用学习器权重代替重要性,每个人的特点就是学习器的参数,x就是训练数据集。
       有时候做分类任务时,弱分类器好做,强分类器难做,就适用加法模型了。但是弱分类器不能太差(比如精度小于50%),那说明和随机猜测没什么分别,不能饥不择食。
       不过实质上,还有更多的事情需要处理。显然的两个问题:第一、找什么样人讨论?(基学习器怎么生成)第二、每个人重要性怎么定(权重怎么确定)?这就是我们需要做的真正复杂的工作。
      思考:如果学习器都有同样的优缺点,那就造成冗余,而且没有提高的可能。所以最好是什么情况:各有所长,互缺点互补。(就算是十个臭皮匠,组合之后最多也是开一个臭·皮匠の店)
       好,那我们就利用数学和算法实现这个想法。
       首先,我们量化一下所谓的缺点,它的表示形式应当是训练中预测值与真实值的差距,也就是损失函数  L( y,f(x) ) (loss between real y and prediction f(x)).我们要把它降到最小,也就是:
3.jpg

       这个东西怎么求最小?有求和的公式,很复杂。利用算法思想——前向分步算法。前向就是沿着计算方向向前进行,不断加入新的学习器,分步就是一步一步优化总学习器。我们只需要在第m步(m>=1)求解参数β和γ,这就方便使得新加进学习器之后模型损失最小:
4.2_.png

(一步步积累模型,在已有的f(m-1)基础上优化 f(m-1)+βb(x;γ). 显然这是一个greedy strategy)
以下算法描述来自《统计学习方法》
5.jpg

损失函数如何求最小值,这就需要数学解答了。通常没有约束容易求导,会使用梯度下降;有约束条件,常用拉格朗日橙子(杠掉)乘子,转化为对偶问题(dual problem)。
6.jpg

二、提升方法(boost)
当你理解加法模型后,你就知道,加法模型本身就是一种提升方法。
事实上,著名的Adaboost本身就是加法模型的特例。不过Adaboost我更感觉像是从一个学习器出发,根据他的弱点构造互补型学习器,最后将其进行加权线性组合。如何根据他的弱点构造呢?就是将前任做错的事情强迫他更“认真地”去做(加大分类错误样本惩罚权重)。具体的过程很有意思,可以看一看。
提升方法中对于树模型的提升研究较多。对于错误(损失函数)和"有错就改"这个思想的表达的不同分为很多boost算法。如下图所示:
7.jpg

需要说明的是,提升方法太多了,后面可能会讲的模型融合方法bagging、stacking、boosting……这是一个很广泛的理念。
 
不过这里实在是写不下了,我就不写了(费马脸.jpg)
其实整个学习过程就是一个自我教育的过程,机器学习应当归属教育学。
微信阅读不是很深刻,所以留条活路,写得轻松一点。
转载请 联系 注明(字字看来皆是困,一天辛苦不寻常)
不是很烦,可以关注

8.png

 

#专题分享会第二期#SVM(支持向量机)算法简介

数据挖掘史昱天 发表了文章 • 0 个评论 • 121 次浏览 • 2016-12-07 15:56 • 来自相关话题

支持向量机SVM(Support Vector Machine)是一种原创性(非组合)的具有明显直观几何意义的分类算法,具有较高的准确率。源于Vapnik和Chervonenkis关于统计学习的早期工作(1971年),第一篇有关论文由Boser、Guyon、Vapnik发表在1992年。思想直观,但细节异常复杂,内容涉及凸分析算法、核函数、神经网络等高深的领域。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
其思路是简单情况,线性可分,把问题转化为一个凸优化问题,可以用拉格朗日乘子法简化,然后用既有的算法解决。复杂情况,线性不可分,用映射函数将样本投射到高维空间,使其变成线性可分的情形。利用核函数来减少高维度计算量。



















利用拉格朗日乘子法解决约束问题的求解










将该式代回得到以下推导










求对偶变量alpha的值,一般使用SMO算法,此处只介绍公式,不再展开,如果感兴趣可以参考文末链接(支持向量机通俗导论(理解SVM的三层境界)





接下来谈谈线性不可分的情况,因为线性可分这种假设实在是太有局限性了:下图就是一个典型的线性不可分的分类图,我们没有办法用一条直线去将其分成两个区域,每个区域只包含一种颜色的点。 要想在这种情况下的分类器,有两种方式,一种是用曲线去将其完全分开,曲线就是一种非线性的情况,跟之后将谈到的核函数有一定的关系。 






简而言之:在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射(核函数)将输入变量映射
到一个高维特征空间,在这个空间中构造最优分类超平面。我们使用支持向量机进行数据集分类工作的过程
首先是同预先选定的一些非线性映射将输入空间映射到高维特征空间










由于求解核函数的内容过多,且大多为公式和图片,如果有兴趣的同学可以直接到以下链接查看内容
http://blog.csdn.net/macyang/article/details/38782399/
支持向量机通俗导论(理解SVM的三层境界) 查看全部
支持向量机SVM(Support Vector Machine)是一种原创性(非组合)的具有明显直观几何意义的分类算法,具有较高的准确率。源于Vapnik和Chervonenkis关于统计学习的早期工作(1971年),第一篇有关论文由Boser、Guyon、Vapnik发表在1992年。思想直观,但细节异常复杂,内容涉及凸分析算法、核函数、神经网络等高深的领域。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
其思路是简单情况,线性可分,把问题转化为一个凸优化问题,可以用拉格朗日乘子法简化,然后用既有的算法解决。复杂情况,线性不可分,用映射函数将样本投射到高维空间,使其变成线性可分的情形。利用核函数来减少高维度计算量。
QQ截图20161207151748.png


2.png


3.png


4.png

利用拉格朗日乘子法解决约束问题的求解

5.png


6.png

将该式代回得到以下推导

7.png


8.png

求对偶变量alpha的值,一般使用SMO算法,此处只介绍公式,不再展开,如果感兴趣可以参考文末链接(支持向量机通俗导论(理解SVM的三层境界)

9.png

接下来谈谈线性不可分的情况,因为线性可分这种假设实在是太有局限性了:下图就是一个典型的线性不可分的分类图,我们没有办法用一条直线去将其分成两个区域,每个区域只包含一种颜色的点。 要想在这种情况下的分类器,有两种方式,一种是用曲线去将其完全分开,曲线就是一种非线性的情况,跟之后将谈到的核函数有一定的关系。 

10.png


简而言之:在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射(核函数)将输入变量映射
到一个高维特征空间,在这个空间中构造最优分类超平面。我们使用支持向量机进行数据集分类工作的过程
首先是同预先选定的一些非线性映射将输入空间映射到高维特征空间

11.png


12.png

由于求解核函数的内容过多,且大多为公式和图片,如果有兴趣的同学可以直接到以下链接查看内容
http://blog.csdn.net/macyang/article/details/38782399/
支持向量机通俗导论(理解SVM的三层境界)

机器学习推荐资料

数据挖掘刘伙玉 发表了文章 • 0 个评论 • 216 次浏览 • 2016-04-11 19:42 • 来自相关话题

我目前看过的或者正在学习的资源,觉得非常不错的,都列举在下面。
 书籍:
李航老师的《统计学习方法》
周志华老师的《机器学习》
 
Coursera免费视频课程:
林轩田老师的《机器学习》,如果感觉听英文课程吃力的可以先听这个课程,国语授课,英文PPT。
Andrew NG的《Machine Learning》
 
小象学院收费课程:
小象学院邹博的《机器学习》,现在开第二期,是一个阿里星朋友推荐给我的。
 
后续再不断更新! 查看全部
我目前看过的或者正在学习的资源,觉得非常不错的,都列举在下面。
 书籍:
李航老师的《统计学习方法》
周志华老师的《机器学习》
 
Coursera免费视频课程:
林轩田老师的《机器学习》,如果感觉听英文课程吃力的可以先听这个课程,国语授课,英文PPT。
Andrew NG的《Machine Learning》
 
小象学院收费课程:
小象学院邹博的《机器学习》,现在开第二期,是一个阿里星朋友推荐给我的。
 
后续再不断更新!

记信息素养协会及数据挖掘小组第一次分享会

兴趣小组李新春 发表了文章 • 0 个评论 • 49 次浏览 • 2017-10-24 23:20 • 来自相关话题

    随着十九大的召开,习大大号召产业升级,推动互联网,大数据,人工智能和实体经济深度融合。近期,平地一声雷,Nature发表了关于AlphaZero在无知状态下学习围棋并打败他的弟弟AlphaGo 的文章。人工智能,大数据在如今的学术界,工业界打得一片火热。与他们密切相关的信息素养协会的小伙伴们又怎么能落后于这股潮流呢?
    秉着给信息素养协会的伙伴们造福利的理念,10月15日,信息管理学院的李新春和韩韬同学来给同学们分享一些编程和算法的基础知识。
    分享会首先由李新春开始介绍python的基础知识,包括python的简介、安装,另外从python变量、运算符、基础语法、数据结构等进行展开介绍,同时给大家展示了一下python和C,Java的区别。由于分享时间只有半小时左右,所以只能给大家一个初步的认识,希望可以帮到那些对python尚不了解的同学。PPT见附件,里面有一些学习资源的链接。






    另外,为了适应不同层次同学的学习需要,以及小组“数据挖掘”为主的本质,李新春又给大家介绍了机器学习十大算法之一,无监督学习的KMeans,以及KMeans在图像分割中的应用,同时用python实现给大家进行了简单的展示。






    从python基础到机器学习,再到图像分割的具体应用,可以说是一个由浅入深的过程,希望大家可以从中学到一些知识。之外,可能有的同学对python, 对Kmeans都比较熟悉了,所以本次分享会进入第二阶段,由韩韬同学给大家分享爬虫的知识。
    韩韬首先给出了爬虫的基本框架,然后由南京大学小百合的网站出发,给大家展示了浏览器“查看元素”功能的强大之处,在网络爬虫的开发中,浏览器查看元素的作用很重要。此外,韩韬用python的requests库给大家抓取了一些网页,到此如何爬取网页内容已经介绍给大家了。然后,韩韬给大家分享了如何用正则表达式,css选择器来抽取相应的元素。最后,关于一些编码问题,韩韬也做了一些介绍,同时给了大家一些展示。可以说,本次爬虫的分享内容十分丰富,也非常实用,希望各位同学后续可以在网上找一些教程实战一下。






    分享会已经过去一周了,现在才发总结,是不是有点晚了呢?不晚,因为今天是10月24号,1024,仅代表数据挖掘兴趣小组全体成员向所有的程序员祝福,生日快乐。不不不,节日快乐!

   查看全部
    随着十九大的召开,习大大号召产业升级,推动互联网,大数据,人工智能和实体经济深度融合。近期,平地一声雷,Nature发表了关于AlphaZero在无知状态下学习围棋并打败他的弟弟AlphaGo 的文章。人工智能,大数据在如今的学术界,工业界打得一片火热。与他们密切相关的信息素养协会的小伙伴们又怎么能落后于这股潮流呢?
    秉着给信息素养协会的伙伴们造福利的理念,10月15日,信息管理学院的李新春和韩韬同学来给同学们分享一些编程和算法的基础知识。
    分享会首先由李新春开始介绍python的基础知识,包括python的简介、安装,另外从python变量、运算符、基础语法、数据结构等进行展开介绍,同时给大家展示了一下python和C,Java的区别。由于分享时间只有半小时左右,所以只能给大家一个初步的认识,希望可以帮到那些对python尚不了解的同学。PPT见附件,里面有一些学习资源的链接。

1.jpg


    另外,为了适应不同层次同学的学习需要,以及小组“数据挖掘”为主的本质,李新春又给大家介绍了机器学习十大算法之一,无监督学习的KMeans,以及KMeans在图像分割中的应用,同时用python实现给大家进行了简单的展示。

3.jpg


    从python基础到机器学习,再到图像分割的具体应用,可以说是一个由浅入深的过程,希望大家可以从中学到一些知识。之外,可能有的同学对python, 对Kmeans都比较熟悉了,所以本次分享会进入第二阶段,由韩韬同学给大家分享爬虫的知识。
    韩韬首先给出了爬虫的基本框架,然后由南京大学小百合的网站出发,给大家展示了浏览器“查看元素”功能的强大之处,在网络爬虫的开发中,浏览器查看元素的作用很重要。此外,韩韬用python的requests库给大家抓取了一些网页,到此如何爬取网页内容已经介绍给大家了。然后,韩韬给大家分享了如何用正则表达式,css选择器来抽取相应的元素。最后,关于一些编码问题,韩韬也做了一些介绍,同时给了大家一些展示。可以说,本次爬虫的分享内容十分丰富,也非常实用,希望各位同学后续可以在网上找一些教程实战一下。

2.jpg


    分享会已经过去一周了,现在才发总结,是不是有点晚了呢?不晚,因为今天是10月24号,1024,仅代表数据挖掘兴趣小组全体成员向所有的程序员祝福,生日快乐。不不不,节日快乐!

  

第三篇--加法模型与提升方法boost

数据挖掘韩韬 发表了文章 • 3 个评论 • 159 次浏览 • 2017-03-24 23:43 • 来自相关话题

    开始记录算法,和前两篇相比是不是有点太突然?(本文断断续续写了一天,今天上三节课都迟到了……老油条的感慨)
    了解一个领域最重要的就是知道它的思维方式以及它在做什么事情。通过一些积累和总结,我们知道了机器学习就是认为:在掌握的数据和我们的任务之间存在某一个模式,我们要利用机器,学习出这个模式。
     我们仔细审视这句话。问题一:这些数据可以表达出这样的模式吗?问题二:机器怎怎么学习?问题三:怎样判断学出的这个模式的好坏?
     这几个问题会引申出很多讨论。问题一的回答引向数据清洗、特征工程,这决定了学习机器表现的上限;问题二的回答引出算法与优化,重要性不言而喻;问题三的回答引出性能评价方法,通常从具体任务的特性中抽象出来。

     上面的话基本……额……不是今天主要的内容。
     今天想讨论问题二——算法与优化,内容并不符合正常的学习顺序





一、加法模型
(注意:不同于统计学时间序列处理的加法模型)
基本逻辑:
      生活中有很多复杂的事情,单项较弱的个人能力,解决起来总是会有盲点,因此我们就想找人商量商量,组合成强的能力——“三个臭皮匠顶个诸葛亮”嘛(一只小企鹅不行,四个小企鹅就很(。・∀・)ノ゙嗨了)。这是下面我们开展工作的自然的逻辑。数学抽象为:





(M个人每个人的重要性是β(m),γ(m)是这个人的特点,x是这个问题,此人的建议就是b(x;γ(m)))
好的,以上就是加法模型, 的确就是这么简单。下面变换个说法,用基学习器代替人,用学习器权重代替重要性,每个人的特点就是学习器的参数,x就是训练数据集。
       有时候做分类任务时,弱分类器好做,强分类器难做,就适用加法模型了。但是弱分类器不能太差(比如精度小于50%),那说明和随机猜测没什么分别,不能饥不择食。
       不过实质上,还有更多的事情需要处理。显然的两个问题:第一、找什么样人讨论?(基学习器怎么生成)第二、每个人重要性怎么定(权重怎么确定)?这就是我们需要做的真正复杂的工作。
      思考:如果学习器都有同样的优缺点,那就造成冗余,而且没有提高的可能。所以最好是什么情况:各有所长,互缺点互补。(就算是十个臭皮匠,组合之后最多也是开一个臭·皮匠の店)
       好,那我们就利用数学和算法实现这个想法。
       首先,我们量化一下所谓的缺点,它的表示形式应当是训练中预测值与真实值的差距,也就是损失函数  L( y,f(x) ) (loss between real y and prediction f(x)).我们要把它降到最小,也就是:




       这个东西怎么求最小?有求和的公式,很复杂。利用算法思想——前向分步算法。前向就是沿着计算方向向前进行,不断加入新的学习器,分步就是一步一步优化总学习器。我们只需要在第m步(m>=1)求解参数β和γ,这就方便使得新加进学习器之后模型损失最小:




(一步步积累模型,在已有的f(m-1)基础上优化 f(m-1)+βb(x;γ). 显然这是一个greedy strategy)
以下算法描述来自《统计学习方法》




损失函数如何求最小值,这就需要数学解答了。通常没有约束容易求导,会使用梯度下降;有约束条件,常用拉格朗日橙子(杠掉)乘子,转化为对偶问题(dual problem)。




二、提升方法(boost)
当你理解加法模型后,你就知道,加法模型本身就是一种提升方法。
事实上,著名的Adaboost本身就是加法模型的特例。不过Adaboost我更感觉像是从一个学习器出发,根据他的弱点构造互补型学习器,最后将其进行加权线性组合。如何根据他的弱点构造呢?就是将前任做错的事情强迫他更“认真地”去做(加大分类错误样本惩罚权重)。具体的过程很有意思,可以看一看。
提升方法中对于树模型的提升研究较多。对于错误(损失函数)和"有错就改"这个思想的表达的不同分为很多boost算法。如下图所示:




需要说明的是,提升方法太多了,后面可能会讲的模型融合方法bagging、stacking、boosting……这是一个很广泛的理念。
 
不过这里实在是写不下了,我就不写了(费马脸.jpg)
其实整个学习过程就是一个自我教育的过程,机器学习应当归属教育学。
微信阅读不是很深刻,所以留条活路,写得轻松一点。
转载请 联系 注明(字字看来皆是困,一天辛苦不寻常)
不是很烦,可以关注





  查看全部
    开始记录算法,和前两篇相比是不是有点太突然?(本文断断续续写了一天,今天上三节课都迟到了……老油条的感慨)
    了解一个领域最重要的就是知道它的思维方式以及它在做什么事情。通过一些积累和总结,我们知道了机器学习就是认为:在掌握的数据和我们的任务之间存在某一个模式,我们要利用机器,学习出这个模式。
     我们仔细审视这句话。问题一:这些数据可以表达出这样的模式吗?问题二:机器怎怎么学习?问题三:怎样判断学出的这个模式的好坏?
     这几个问题会引申出很多讨论。问题一的回答引向数据清洗、特征工程,这决定了学习机器表现的上限;问题二的回答引出算法与优化,重要性不言而喻;问题三的回答引出性能评价方法,通常从具体任务的特性中抽象出来。

     上面的话基本……额……不是今天主要的内容。
     今天想讨论问题二——算法与优化,内容并不符合正常的学习顺序

0.png

一、加法模型
(注意:不同于统计学时间序列处理的加法模型)
基本逻辑:
      生活中有很多复杂的事情,单项较弱的个人能力,解决起来总是会有盲点,因此我们就想找人商量商量,组合成强的能力——“三个臭皮匠顶个诸葛亮”嘛(一只小企鹅不行,四个小企鹅就很(。・∀・)ノ゙嗨了)。这是下面我们开展工作的自然的逻辑。数学抽象为:

1.png

(M个人每个人的重要性是β(m),γ(m)是这个人的特点,x是这个问题,此人的建议就是b(x;γ(m)))
好的,以上就是加法模型, 的确就是这么简单。下面变换个说法,用基学习器代替人,用学习器权重代替重要性,每个人的特点就是学习器的参数,x就是训练数据集。
       有时候做分类任务时,弱分类器好做,强分类器难做,就适用加法模型了。但是弱分类器不能太差(比如精度小于50%),那说明和随机猜测没什么分别,不能饥不择食。
       不过实质上,还有更多的事情需要处理。显然的两个问题:第一、找什么样人讨论?(基学习器怎么生成)第二、每个人重要性怎么定(权重怎么确定)?这就是我们需要做的真正复杂的工作。
      思考:如果学习器都有同样的优缺点,那就造成冗余,而且没有提高的可能。所以最好是什么情况:各有所长,互缺点互补。(就算是十个臭皮匠,组合之后最多也是开一个臭·皮匠の店)
       好,那我们就利用数学和算法实现这个想法。
       首先,我们量化一下所谓的缺点,它的表示形式应当是训练中预测值与真实值的差距,也就是损失函数  L( y,f(x) ) (loss between real y and prediction f(x)).我们要把它降到最小,也就是:
3.jpg

       这个东西怎么求最小?有求和的公式,很复杂。利用算法思想——前向分步算法。前向就是沿着计算方向向前进行,不断加入新的学习器,分步就是一步一步优化总学习器。我们只需要在第m步(m>=1)求解参数β和γ,这就方便使得新加进学习器之后模型损失最小:
4.2_.png

(一步步积累模型,在已有的f(m-1)基础上优化 f(m-1)+βb(x;γ). 显然这是一个greedy strategy)
以下算法描述来自《统计学习方法》
5.jpg

损失函数如何求最小值,这就需要数学解答了。通常没有约束容易求导,会使用梯度下降;有约束条件,常用拉格朗日橙子(杠掉)乘子,转化为对偶问题(dual problem)。
6.jpg

二、提升方法(boost)
当你理解加法模型后,你就知道,加法模型本身就是一种提升方法。
事实上,著名的Adaboost本身就是加法模型的特例。不过Adaboost我更感觉像是从一个学习器出发,根据他的弱点构造互补型学习器,最后将其进行加权线性组合。如何根据他的弱点构造呢?就是将前任做错的事情强迫他更“认真地”去做(加大分类错误样本惩罚权重)。具体的过程很有意思,可以看一看。
提升方法中对于树模型的提升研究较多。对于错误(损失函数)和"有错就改"这个思想的表达的不同分为很多boost算法。如下图所示:
7.jpg

需要说明的是,提升方法太多了,后面可能会讲的模型融合方法bagging、stacking、boosting……这是一个很广泛的理念。
 
不过这里实在是写不下了,我就不写了(费马脸.jpg)
其实整个学习过程就是一个自我教育的过程,机器学习应当归属教育学。
微信阅读不是很深刻,所以留条活路,写得轻松一点。
转载请 联系 注明(字字看来皆是困,一天辛苦不寻常)
不是很烦,可以关注

8.png

 

#专题分享会第二期#SVM(支持向量机)算法简介

数据挖掘史昱天 发表了文章 • 0 个评论 • 121 次浏览 • 2016-12-07 15:56 • 来自相关话题

支持向量机SVM(Support Vector Machine)是一种原创性(非组合)的具有明显直观几何意义的分类算法,具有较高的准确率。源于Vapnik和Chervonenkis关于统计学习的早期工作(1971年),第一篇有关论文由Boser、Guyon、Vapnik发表在1992年。思想直观,但细节异常复杂,内容涉及凸分析算法、核函数、神经网络等高深的领域。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
其思路是简单情况,线性可分,把问题转化为一个凸优化问题,可以用拉格朗日乘子法简化,然后用既有的算法解决。复杂情况,线性不可分,用映射函数将样本投射到高维空间,使其变成线性可分的情形。利用核函数来减少高维度计算量。



















利用拉格朗日乘子法解决约束问题的求解










将该式代回得到以下推导










求对偶变量alpha的值,一般使用SMO算法,此处只介绍公式,不再展开,如果感兴趣可以参考文末链接(支持向量机通俗导论(理解SVM的三层境界)





接下来谈谈线性不可分的情况,因为线性可分这种假设实在是太有局限性了:下图就是一个典型的线性不可分的分类图,我们没有办法用一条直线去将其分成两个区域,每个区域只包含一种颜色的点。 要想在这种情况下的分类器,有两种方式,一种是用曲线去将其完全分开,曲线就是一种非线性的情况,跟之后将谈到的核函数有一定的关系。 






简而言之:在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射(核函数)将输入变量映射
到一个高维特征空间,在这个空间中构造最优分类超平面。我们使用支持向量机进行数据集分类工作的过程
首先是同预先选定的一些非线性映射将输入空间映射到高维特征空间










由于求解核函数的内容过多,且大多为公式和图片,如果有兴趣的同学可以直接到以下链接查看内容
http://blog.csdn.net/macyang/article/details/38782399/
支持向量机通俗导论(理解SVM的三层境界) 查看全部
支持向量机SVM(Support Vector Machine)是一种原创性(非组合)的具有明显直观几何意义的分类算法,具有较高的准确率。源于Vapnik和Chervonenkis关于统计学习的早期工作(1971年),第一篇有关论文由Boser、Guyon、Vapnik发表在1992年。思想直观,但细节异常复杂,内容涉及凸分析算法、核函数、神经网络等高深的领域。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
其思路是简单情况,线性可分,把问题转化为一个凸优化问题,可以用拉格朗日乘子法简化,然后用既有的算法解决。复杂情况,线性不可分,用映射函数将样本投射到高维空间,使其变成线性可分的情形。利用核函数来减少高维度计算量。
QQ截图20161207151748.png


2.png


3.png


4.png

利用拉格朗日乘子法解决约束问题的求解

5.png


6.png

将该式代回得到以下推导

7.png


8.png

求对偶变量alpha的值,一般使用SMO算法,此处只介绍公式,不再展开,如果感兴趣可以参考文末链接(支持向量机通俗导论(理解SVM的三层境界)

9.png

接下来谈谈线性不可分的情况,因为线性可分这种假设实在是太有局限性了:下图就是一个典型的线性不可分的分类图,我们没有办法用一条直线去将其分成两个区域,每个区域只包含一种颜色的点。 要想在这种情况下的分类器,有两种方式,一种是用曲线去将其完全分开,曲线就是一种非线性的情况,跟之后将谈到的核函数有一定的关系。 

10.png


简而言之:在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射(核函数)将输入变量映射
到一个高维特征空间,在这个空间中构造最优分类超平面。我们使用支持向量机进行数据集分类工作的过程
首先是同预先选定的一些非线性映射将输入空间映射到高维特征空间

11.png


12.png

由于求解核函数的内容过多,且大多为公式和图片,如果有兴趣的同学可以直接到以下链接查看内容
http://blog.csdn.net/macyang/article/details/38782399/
支持向量机通俗导论(理解SVM的三层境界)

机器学习推荐资料

数据挖掘刘伙玉 发表了文章 • 0 个评论 • 216 次浏览 • 2016-04-11 19:42 • 来自相关话题

我目前看过的或者正在学习的资源,觉得非常不错的,都列举在下面。
 书籍:
李航老师的《统计学习方法》
周志华老师的《机器学习》
 
Coursera免费视频课程:
林轩田老师的《机器学习》,如果感觉听英文课程吃力的可以先听这个课程,国语授课,英文PPT。
Andrew NG的《Machine Learning》
 
小象学院收费课程:
小象学院邹博的《机器学习》,现在开第二期,是一个阿里星朋友推荐给我的。
 
后续再不断更新! 查看全部
我目前看过的或者正在学习的资源,觉得非常不错的,都列举在下面。
 书籍:
李航老师的《统计学习方法》
周志华老师的《机器学习》
 
Coursera免费视频课程:
林轩田老师的《机器学习》,如果感觉听英文课程吃力的可以先听这个课程,国语授课,英文PPT。
Andrew NG的《Machine Learning》
 
小象学院收费课程:
小象学院邹博的《机器学习》,现在开第二期,是一个阿里星朋友推荐给我的。
 
后续再不断更新!
  机器学习