Machine Learning Chinese NLP :::: Unsupervised Learning - Chad Salinas ::: Data Scientist
Life and times of Chad Salinas
Chad Salinas, golf caddy, data scientist, chad rPubs, recovering chess addict, daddy caddy
1124
post-template-default,single,single-post,postid-1124,single-format-standard,qode-listing-1.0.1,qode-social-login-1.0,qode-news-1.0,qode-quick-links-1.0,qode-restaurant-1.0,ajax_fade,page_not_loaded,,qode-title-hidden,qode_grid_1300,qode-theme-ver-12.0.1,qode-theme-bridge,bridge,wpb-js-composer js-comp-ver-5.4.2,vc_responsive

Machine Learning Chinese NLP :::: Unsupervised Learning

Unsupervised Learning

  1. 在这段视频中 我们要讲
    第二种主要的机器学习问题
    叫做无监督学习
    在上一节视频中 我们已经讲过了监督学习
    回想起上次的数据集
    每个样本
    都已经被标明为
    正样本或者负样本
    即良性或恶性肿瘤
    因此 对于监督学习中的每一个样本
    我们已经被清楚地告知了
    什么是所谓的正确答案
    即它们是良性还是恶性
    在无监督学习中
    我们用的数据会和监督学习里的看起来有些不一样
    在无监督学习中
    没有属性或标签这一概念
    也就是说所有的数据
    都是一样的 没有区别
    所以在无监督学习中 我们只有一个数据集
    没人告诉我们该怎么做
    我们也不知道
    每个数据点究竟是什么意思
    相反 它只告诉我们 现在有一个数据集
    你能在其中找到某种结构吗?
    对于给定的数据集
    无监督学习算法可能判定
    该数据集包含两个不同的聚类
    你看 这是第一个聚类
    然后这是另一个聚类
    你猜对了 无监督学习算法
    会把这些数据分成两个不同的聚类
    所以这就是所谓的聚类算法
    实际上它被用在许多地方
    我们来举一个聚类算法的栗子
    Google 新闻的例子
    如果你还没见过这个页面的话
    你可以到这个URL
    news.google.com
    去看看
    谷歌新闻每天都在干什么呢?
    他们每天会去收集
    成千上万的
    网络上的新闻
    然后将他们分组 组成一个个新闻专题
    比如 让我们来看看这里
    这里的URL链接
    连接着不同的
    有关BP油井事故的报道
    所以 让我们点击
    这些URL中的一个
    恩 让我们点一个
    然后我们会来到这样一个网页
    这是一篇来自华尔街日报的
    有关……你懂的
    有关BP油井泄漏事故的报道
    标题为《BP杀死了Macondo》
    Macondo 是个地名
    就是那个漏油事故的地方
    如果你从这个组里点击一个不同的URL
    那么你可能会得到不同的新闻
    这里是一则CNN的新闻
    是一个有关BP石油泄漏的视频
    如果你再点击第三个链接
    又会出现不同的新闻
    这边是英国卫报的报道
    也是关于BP石油泄漏
    所以 谷歌新闻所做的就是
    去搜索成千上万条新闻
    然后自动的将他们聚合在一起
    因此 有关同一主题的
    新闻被显示在一起
    实际上
    聚类算法和无监督学习算法
    也可以被用于许多其他的问题
    这里我们举个它在基因组学中的应用
    下面是一个关于基因芯片的例子
    基本的思想是
    给定一组不同的个体
    对于每个个体
    检测它们是否拥有某个特定的基因
    也就是说,你要去分析有多少基因显现出来了
    因此 这些颜色 红 绿
    灰 等等 它们
    展示了这些不同的个体
    是否拥有一个特定基因
    的不同程度
    然后你能做的就是
    运行一个聚类算法
    把不同的个体归入不同的类
    或归为不同类型的人
    这就是无监督学习
    我们没有提前告知这个算法
    这些是第一类的人
    这些是第二类的人
    这些是第三类的人等等
    相反我们只是告诉算法 你看 这儿有一堆数据
    我不知道这个数据是什么东东
    我不知道里面都有些什么类型 叫什么名字
    我甚至不知道都有哪些类型
    但是
    请问你可以自动的找到这些数据中的类型吗?
    然后自动的
    按得到的类型把这些个体分类
    虽然事先我并不知道哪些类型
    因为对于这些数据样本来说
    我们没有给算法一个
    正确答案
    所以 这就是无监督学习
    无监督学习或聚类算法在其他领域也有着大量的应用
    它被用来组织大型的计算机集群
    我有一些朋友在管理
    大型数据中心 也就是
    大型计算机集群 并试图
    找出哪些机器趋向于
    协同工作
    如果你把这些机器放在一起
    你就可以让你的数据中心更高效地工作

    第二种应用是用于社交网络的分析

    所以 如果可以得知
    哪些朋友你用email联系的最多
    或者知道你的Facebook好友
    或者你Google+里的朋友
    知道了这些之后
    我们是否可以自动识别
    哪些是很要好的朋友组
    哪些仅仅是互相认识的朋友组

    还有在市场分割中的应用

    许多公司拥有庞大的客户信息数据库
    那么 给你一个
    客户数据集 你能否
    自动找出不同的市场分割

    并自动将你的客户分到不同的
    细分市场中
    从而有助于我在
    不同的细分市场中
    进行更有效的销售

    这也是无监督学习
    我们现在有
    这些客户数据
    但我们预先并不知道
    有哪些细分市场
    而且
    对于我们数据集的某个客户
    我们也不能预先知道
    谁属于细分市场一
    谁又属于细分市场二等等
    但我们必须让这个算法自己去从数据中发现这一切

    最后
    事实上无监督学习也被用于
    天文数据分析
    通过这些聚类算法 我们发现了许多
    惊人的、有趣的 以及实用的
    关于星系是如何诞生的理论
    所有这些都是聚类算法的例子
    而聚类只是无监督学习的一种
    现在让我来告诉你另一种
    我先来介绍一下鸡尾酒宴问题

    恩 我想你参加过鸡尾酒会的 是吧?
    嗯 想象一下
    有一个宴会 有一屋子的人
    大家都坐在一起
    而且在同时说话
    有许多声音混杂在一起
    因为每个人都是在同一时间说话的
    在这种情况下你很难听清楚你面前的人说的话
    因此 比如有这样一个场景
    宴会上只有两个人

    两个人
    同时说话
    恩 这是个很小的鸡尾酒宴会
    我们准备好了两个麦克风
    把它们放在房间里
    然后
    因为这两个麦克风距离这两个人
    的距离是不同的
    每个麦克风都记录下了
    来自两个人的声音的不同组合

    也许A的声音
    在第一个麦克风里的声音会响一点
    也许B的声音
    在第二个麦克风里会比较响一些
    因为2个麦克风
    的位置相对于
    2个说话者的位置是不同的
    但每个麦克风都会录到
    来自两个说话者的重叠部分的声音

    这里有一个

    来自一个研究员录下的两个说话者的声音
    让我先放给你听第一个
    这是第一个麦克风录到的录音:
    一 (UNO) 二 (DOS)
    三 (TRES) 四 (CUATRO) 五 (CINCO)
    六 (SEIS) 七 (SIETE)
    八 (ocho) 九 (NUEVE) 十 (Y DIEZ)

    好吧 这大概不是什么有趣的酒会……
    ……在这个酒会上 有两个人
    各自从1数到10
    但用的是两种不同语言
    你刚才听到的是
    第一个麦克风的录音 这里是第二个的:

    一 (UNO) 二 (DOS) 三 (TRES)
    四 (CUATRO) 五 (CINCO) 六 (SEIS) 七 (SIETE)
    八 (ocho) 九 (NUEVE) 十 (Y DIEZ)
    所以 我们能做的就是把
    这两个录音输入
    一种无监督学习算法中
    称为“鸡尾酒会算法”
    让这个算法
    帮你找出其中蕴含的分类
    然后这个算法
    就会去听这些
    录音 并且你知道
    这听起​​来像
    两个音频录音
    被叠加在一起
    所以我们才能听到这样的效果
    此外 这个算法
    还会分离出
    这两个被
    叠加到一起的
    音频源
    事实上
    这是我们的鸡尾酒会算法的第一个输出

    一 二 三 四
    五 六 七 八 九 十

    所以我在一个录音中
    分离出了英文声音

    这是第二个输出
    Uno dos tres quatro cinco
    seis siete ocho nueve y diez
    听起来不错嘛

    再举一个例子 这是另一个录音
    也是在一个类似的场景下
    这是第一个麦克风的录音:
    一 二 三 四 五 六
    七 八 九 十

    OK 这个可怜的家伙从
    鸡尾酒会回家了
    他现在独自一人坐在屋里 对着录音机自言自语

    这是第二个麦克风的录音

    一 二 三 四 五 六 七 八 九 十

    当你把这两个麦克风录音
    送给与刚刚相同的算法处理
    它所做的还是
    告诉你 这听起来有
    两种音频源 并且

    算法说
    这里是我找到的第一个音频源

    一 二 三 四
    五 六 七 八 九 十

    恩 不是太完美
    提取到了人声
    但还有一点音乐没有剔除掉
    这是算法的第二个输出

    还好 在第二个输出中
    它设法剔除掉了整个人声
    只是清理了下音乐
    剔除了从一到十的计数

    所以 你可以看到
    像这样的无监督学习算法
    也许你想问 要实现这样的算法
    很复杂吧?
    看起来 为了
    构建这个应用程序
    做这个音频处理
    似乎需要写好多代码啊
    或者需要链接到
    一堆处理音频的Java库
    貌似需要一个
    非常复杂的程序
    分离出音频等

    实际上
    要实现你刚刚听到的效果
    只需要一行代码就可以了
    写在这里呢

    当然 研究人员
    花了很长时间才想出这行代码的 ^-^
    我不是说这是一个简单的问题
    但事实上 如果你
    使用正确的编程环境 许多学习
    算法是用很短的代码写出来的

    所以这也是为什么在
    这门课中我们要
    使用Octave的编程环境

    Octave是一个免费的
    开放源码的软件
    使用Octave或Matlab这类的工具
    许多学习算法
    都可以用几行代码就可以实现
    在后续课程中
    我会教你如何使用Octave
    你会学到
    如何在Octave中实现这些算法
    或者 如果你有Matlab 你可以用它

    事实上 在硅谷
    很多的机器学习算法
    我们都是先用Octave
    写一个程序原型
    因为在Octave中实现这些
    学习算法的速度快得让你无法想象

    在这里 每一个函数
    例如 SVD
    意思是奇异值分解
    但这其实是解线性方程
    的一个惯例
    它被内置在Octave软件中了

    如果你试图
    在C + +或Java中做这个
    将需要写N多代码
    并且还要连接复杂的C + +或Java库
    所以 你可以在C++或
    Java或Python中
    实现这个算法 只是会
    更加复杂而已

    在教授机器学习
    将近10年后
    我得出的一个经验就是
    如果你使用Octave的话
    会学的更快
    并且如果你用
    Octave作为你的学习工具
    和开发原型的工具
    你的学习和开发过程
    会变得更快

    而事实上在硅谷
    很多人会这样做
    他们会先用Octave
    来实现这样一个学习算法原型
    只有在确定
    这个算法可以工作后
    才开始迁移到
    C++ Java或其它编译环境
    事实证明 这样做
    实现的算法
    比你一开始就用C++
    实现的算法要快多了

    所以 我知道
    作为一个老师
    我不能老是念叨:
    “在这个问题上相信我“
    但对于
    那些从来没有用过这种
    类似Octave的编程环境的童鞋
    我还是要请你
    相信我这一次
    我认为
    你的时间 研发时间
    是你最宝贵的资源之一

    当见过很多的人这样做以后
    我觉得如果你也这样做
    作为一个机器学习的
    研究者和开发者
    你会更有效率
    如果你学会先用Octave开发原型
    而不是先用其他的编程语言来开发

    最后 总结一下
    这里有一个问题需要你来解答

    我们谈到了无监督学习
    它是一种学习机制
    你给算法大量的数据
    要求它找出数据中
    蕴含的类型结构
    以下的四个例子中
    哪一个
    您认为是
    无监督学习算法
    而不是监督学习问题
    对于每一个选项
    在左边的复选框
    选中你认为
    属于无监督学习的
    选项
    然后按一下右下角的按钮 提交你的答案
    所以 当视频暂停时
    请回答幻灯片上的这个问题

    恩 没忘记垃圾邮件文件夹问题吧?
    如果你已经标记过数据
    那么就有垃圾邮件和
    非垃圾邮件的区别 我们会将此视为一个监督学习问题

    新闻故事的例子
    正是我们在本课中讲到的
    谷歌新闻的例子
    我们介绍了你可以如何使用
    聚类算法这些文章聚合在一起
    所以这是无监督学习问题

    市场细分的例子
    我之前有说过
    这也是一个无监督学习问题
    因为我是要
    拿到数据 然后要求
    它自动发现细分市场

    最后一个例子 糖尿病
    这实际上就像我们
    上节课讲到的乳腺癌的例子
    只不过这里不是
    好的或坏的癌细胞
    良性或恶性肿瘤我们
    现在是有糖尿病或
    没有糖尿病 所以这是
    有监督的学习问题
    像处理那个乳腺癌的问题一样
    我们会把它作为一个
    有监督的学习问题来处理

    好了 关于无监督学习问题
    就讲这么多了
    下一节课中我们
    会涉及到更具体的学习算法
    并开始讨论
    这些算法是如何工作的
    以及我们如何来实现它们 【教育无边界字幕组】翻译:碳老师 校对:linuxfish 审核:所罗门捷列夫

No Comments

Sorry, the comment form is closed at this time.