在Coursera上学习了一个机器学习的入门课程,这是我目前为止看到的最适合我的机器学习入门教程,因为该教程以一个个实际的例子让你来体会机器学习的用途。相比其他的纯理论来得更容易一些。本文简短地记录了一些核心思想。

教程地址:https://www.coursera.org/learn/ml-foundations/home/welcome。本篇博客只做了下简短的笔记,供自己今后回忆。并不适合阅读。

涉及的范围

这门课程的例子涉及到以下几个应用:

  • 预测房价: Linear Regression
  • 分类:Logistic Regression
  • 判断文章的相似性
  • 推荐系统
  • 图片搜索

1. Linear Regression

这个是week 2的内容。线性回归,非常简单和基础的应用。可以构建若干个feature,如果需要非linear的feature,可以自己加一个计算后的column,从而转化成linear的feature。

2. 分类

这个是week 3的内容。可以用来区分垃圾邮件、把文章分类。

Decision Boundary

01.jpg

Evaluating

  • error = # of mistakes / total # of sentences
  • accuracy = 1 - error

accuracy的底线:

至少要比随便猜的概率高

False Positive和False Negative的非对称的影响

02.jpg

实际练习

该练习的目的是根据评语+评分来学习,然后来预测新的评论是positive还是negative的。

基本的方法是把review转化成bag of words。然后使用logistic classifier即可。

3. 判断文章的相似性

这个是week 4的内容。如何来判断两篇文章的相似性?有几个模型可以用:

简单的feature模型:bag of words

把两篇文章的所有词的出现次数变成一个字典。然后两篇文章的bag of words每一项出现次数相乘并相加汇总。可以得到一个值。越大代表越相似,核心算法如下图所示:

03.jpg

该模型的一些问题:

  • Bias towards to longer articles:
    假设我们把每篇文章的内容都拷贝一遍,形成一篇word count是原来文章两倍,但是内容是重复的文章,这样会直接造成相似性的值变为原来的4倍。解决方案是normalization。
  • 没办法加强某些重要的词。

优化的feature模型:tf-idf

我们把词汇分为三种类型(特指英文,但是中文也可以有所借鉴):

  1. common: 例如the,a
  2. rare:例如football,Messi
  3. important:在文章中会反复出现,但是在整个词汇表里面相对稀少。比如hoop(篮筐)

所以为了让common words权重减少,rare和important words全中增加。我们采用tf-idf模型。其中:

  • tf:term frequency
  • idf:inverse document frequency

获取相似的推荐

给你的数据设定一个distance metric,然后采用nearest neighbor算法即可。

衍生应用:Clustering

把word vector在n维空间中展示出来。然后通过k-means算法,来做unsupervised learning。

4. 推荐系统

这个是week 5的内容。在设计推荐系统的时候,需要根据自己的业务模型进行考虑。不同的产品有不同的推荐逻辑。比如音乐推荐,要求不推荐刚才已经听过的歌。比如亚马逊,有时候推荐的东西是要随着时间变化的。比如一年前一个女性买了1岁宝宝的婴儿用品,那1年后要考虑到年龄的增长。

1) 最简单的推荐系统:popularity_recommender

就按照最热的从高到低排列。简单。有些情况下是最适合的推荐系统。
缺点是并不个性化。

2) Classification model

把各种features收集起来,通过一个classifier来得到某一个用户购买某一件商品的概率。如下图所示:

04.jpg

缺点如下:

05.jpg

3) Collaborative Filtering

简单的一句话就是:People who bought this also bought….

该算法用一个叫co-occurence matrix来表达。

得出结果的方法就很简单了:

06.jpg

缺点:

  • 不个性化
  • Cold Start问题
  • 爆款会每次都被推荐:解决办法是用Jaccard Similarity之类的算法。总的来说,就是用popularity来normalize产品。越popular的产品,normalize之后的值越小。公式如下:

07.jpg

一次性买多个物品的解决方案

使用weighted average来计算Score。

4)Matrix Factorization

矩阵分解模型。优点是比较有效率。

缺点:

  • Cold Start问题

Netflix比赛

机器学习领域经常有很多比赛,里面会产生新的优秀算法。

推荐系统好坏的评价方式

不能使用classification的accuracy来评价,因为商品太多,绝大多数商品用户都是不喜欢的。那追求accuracy的话,认为所有商品用户都不喜欢可能是accuracy最高的。

所以要使用一个叫precision and recall的metrics

recall = # liked and shown / # liked

precision = # liked and shown / # shown

5. 深度学习

深度学习是机器学习中一种基于对数据进行表征学习的方法。观测值(例如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示成一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习任务(例如,人脸识别或面部表情识别)。深度学习的好处是用非监督式或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。(来自百度百科)

这个教程做了两件事情:

  1. 把一张图片分类:分到cat,car之类的类别里面去。
  2. 通过一张图片寻找相似图片。

这个教程的例子里面的deep features在下载的时候已经被训练好了。所以最后都是用传统的机器学习的算法。

  1. 把一张图片分类:logistic classification
  2. 通过一张图片寻找相似图片:knn