本系列翻译自该学习笔记:http://www.holehouse.org/mlclass/index.html
课程地址:https://www.coursera.org/learn/machine-learning/
课程介绍
学习内容
- 前沿动态
- 如何实现
- 机器学习应用范畴
- 搜索引擎
- 图片标记
- 垃圾邮件过滤
- 使AI像人类一样聪明的梦想
- 许多人认为最好的方式是模仿人类如何学习
- 课程涵盖内容
- 了解最先进的算法
- 但仅了解其中的算法和数学本身是不够的
- 需要知道如何将理论运行到实际工作→练习
- 为何机器学习如此流行?
- 发源自人工智能领域
- 计算机的新能力–构建智能机器
- 你可以编程一台机器做一些简单的事情
- 大部分硬布线AI太难了
- 如果一台机器可以从输入中学习,
- 那么它将为您做好艰苦的工作
- 你可以编程一台机器做一些简单的事情
例子
- 数据库挖掘
- 机器学习最近进展迅速,是因为可利用大量生成的数据
- 来自自动化网络发展的大数据集
- 数据来源包括
- 网页数据(点击流或点击数据)
- 我们得以更好地了解用户
- 巨大的硅谷数据
- 病历
- 电子记录 - >转录记录
- 生物数据
- 基因序列,ML算法更好地了解人类基因组
- 工程信息
- 传感器数据,日志报告,照片等
- 网页数据(点击流或点击数据)
- 我们无法手工编程的应用程序
- 自主飞行的直升机
- 手写识别
- 这是非常便宜的,因为当您写信封时,算法可以自动将信封路由到帖子中
- 自然语言处理(NLP)
- 语言相关的AI
- 计算机视觉
- 视觉分析的AI
- 个性化推荐
- Netflix公司
- 亚马逊
- iTunes天才
- 获取用户信息
- 根据用户个体的行为进行学习
- 了解人类的学习和大脑
- 如果我们可以建立模仿(或尝试模拟)大脑如何工作的系统,这可能会推动我们对相关神经生物学的理解
机器学习是什么?
- Here we…
- Define what it is
- When to use it
- 不是一个明确定义的定义
- 几个例子,人们如何尝试定义它
- 亚瑟·塞缪尔(1959)
- 机器学习:“ 在进行特定编程的条件下给予计算机学习能力的领域”
- 萨缪尔斯写了一个跳棋程序
- 该程序自我对弈玩了10000场比赛
- 根据获胜/损失,确定哪些走法是好的
- 萨缪尔斯写了一个跳棋程序
- 机器学习:“ 在进行特定编程的条件下给予计算机学习能力的领域”
- 汤姆米歇尔(1999)
- 良好的学习问题: “ 一个计算机程序被认为能从经验E中学习解决任务T,达到性能度量值P,经过P评判, 程序在处理T时的性能有所提升。”
- 跳棋示例,
- E = 10000多局游戏
- T:下跳棋
- P:赢还是输
- 几种类型的学习算法
- 监督学习
- 教电脑如何做某事,然后让它使用它;新发现的知识做到这一点
- 无监督学习
- 让计算机学习如何做某事,并用它来确定数据中的结构和模式
- 强化学习
- 推荐系统
- 监督学习
- 这个课程
- 看一下应用学习算法的实用建议
- 学习一套工具以及如何应用它们
监督学习 - 介绍
- 可能是机器学习中最常见的问题类型
- 给出一个算法, 需要部分数据集已经有正确答案
- 从一个例子开始
- 我们如何预测房价
- 收集关于房价的数据,以及它们与面积的关系
- 示例问题: “鉴于这些数据,一个朋友有一个750平方英尺的房子 - 他们可以得到多少钱?
- 我们可以用什么方法来解决这个问题?
- 直线近似
- 也许是15万美元
- 二阶多项式
- 也许是20万美元
- 有一件事我们稍后讨论 - 如何选择直线或曲线?
- 这些方法中的每一种代表着监督学习的一种方式
- 直线近似
- 这是什么意思?
- 我们给出算法一个提供“正确答案”的数据集
- 所以我们知道房子的实际价格
- 这个想法是我们可以从训练集数据中获得使价格达到确定的某个价值的算法
- 然后,该算法应该根据新的训练数据产生更多关于那些我们尚未知道的价格的正确答案,
- 即预测价格
- 我们也称之为回归问题
- 预测连续性输出(价格)
- 没有真正的离散描绘
- 另一个例子
- 我们可以根据肿瘤大小定义乳腺癌是恶性还是良性
- 观察数据
- 每种五个
- 您可以根据肿瘤大小估计预后是否良性吗?
- 这是一个分类问题的例子
- 将数据分类为两个离散类之一 - 没有中间值,恶性,或者良性
- 在分类问题中,可以有一个离散数量的输出可能的值
- 例如可能有四个值
- 0 - 良性
- 1 - 类型1
- 2 - 类型2
- 3 - 类型4
- 例如可能有四个值
- 在分类问题中,我们可以用不同的方式绘制数据
- 只使用一个属性(大小)
- 其他问题可能有多个属性
- 例如,我们也可能同时知道年龄和肿瘤大小
- 基于该数据,您可以尝试通过以下方式定义单独的类
- 在两组之间画一条直线
- 使用更复杂的函数来定义两个组(稍后将讨论)
- 然后,当您具有特定肿瘤大小,特定年龄的个体时,您可以希望使用该信息将其放入您的一个类别
- 您可能需要考虑许多因素
- 肿瘤团块厚度
- 肿瘤细胞大小的均匀性
- 肿瘤细胞形状均匀
- 最令人兴奋的算法可以处理无限数量的特征
- 您如何处理无限数量的功能?
- 支持向量机的整齐数学技巧(稍后讨论)
- 如果你有一个无限长的列表 - 我们可以开发和算法来处理
- 总结
- 受监督的学习让你得到“正确”的数据结果
- 回归问题
- 分类问题
- 受监督的学习让你得到“正确”的数据结果
无监督学习 - 介绍
- 第二大问题类型
- 在无监督的学习中,我们得到了未标记的数据
- 仅仅被告知 - 这是一个数据集,你可以结构化它
- 这样做的一种方法是将数据聚类到组中
- 这是一个聚类算法
聚类算法
- 聚类算法示例
- 谷歌新闻
- 将新闻报导成凝聚力集团
- 谷歌新闻
- 用于任何其他问题
- 基因组学
- 微阵列数据
- 有一组个体
- 每个基因的测量表达
- 运行算法将个体聚类成人类
- 组织计算机集群
- 识别潜在的弱点或有效分配工作
- 社交网络分析
- 客户数据
- 天文数据分析
- 算法给出惊人的结果
- 本质上
- 你能自动生成结构
- 因为我们不给它答案,这是无监督的学习
鸡尾酒派对算法
- 鸡尾酒会问题
- 很多重叠的声音 - 很难听到每个人都在说话
- 两个人说话
- 与扬声器不同距离的麦克风
- 很多重叠的声音 - 很难听到每个人都在说话
- 根据麦克风的位置,记录不同版本的会话
- 但是依然重叠严重
- 录制来自每个麦克风的对话
- 给他们一个鸡尾酒会的算法
- 算法处理音频录音
- 确定有两个音频源
- 分离出两个来源
- 这是一个非常复杂的问题
- 算法可以用一行代码完成!
- [W,s,v] = svd((repmat(sum(x。* x,1),size(x,1),1)。* x)* x’);
- 不容易识别
- 但是,程序可以很短!
- 以octave(或MATLAB)为例
- 通常在octave/ MATLAB中的原型算法进行测试,因为它非常快
- 只有当你显示它工作迁移到C + +
- 提供更快捷的敏捷开发
- 了解这个算法
- svd - 内置于octave的线性代数程序
- 在C ++中这将非常复杂!
- 说明使用MATLAB进行快速原型是一个很好的方式
- svd - 内置于octave的线性代数程序