{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 机器学习算法清单\n",
    "\n",
    "1. k-近邻（kNN）\n",
    "1. 决策树 ID3 算法\n",
    "1. 朴素贝叶斯分类算法\n",
    "1. 感知机\n",
    "1. 支持向量机（SVM）\n",
    "1. 逻辑回归（logistic regression）\n",
    "1. AdaBoost（adaptive boosting）\n",
    "\n",
    "### 生成模型 vs. 判别模型\n",
    "\n",
    "生成方法和判别方法是对监督学习算法的分类，由判别方法学到的模型叫做判别模型，由生成方法学到的模型叫做生成模型。\n",
    "\n",
    "判别方法由数据直接学习决策函数 $Y=f(X)$ 或者条件概率分布 $P(Y|X)$ 作为预测的模型，即判别模型。基本思想是有限样本条件下建立判别函数，不考虑样本的产生模型，直接研究预测模型。典型的判别模型包括k-近邻，感知机，决策树，支持向量机等。\n",
    "\n",
    "生成方法由数据学习联合概率密度分布 $P(X,Y)$，然后求出条件概率分布 $P(Y|X)$ 作为预测的模型，即生成模型 $P(Y|X) = \\frac{P(X,Y)}{P(X)}$。基本思想是首先建立样本的联合概率概率密度模型 $P(X,Y)$，然后再得到后验概率 $P(Y|X)$，再利用它进行分类。典型的生成模型是朴素贝叶斯算法。\n",
    "\n",
    "判别方法更多的关注各个类别之间的区别，而生成方法更多关注各个类别内部的相似度。判别方法画一条线，明确这种差别，线左边是类别A，线右边是类别B；生成方法拿样本去比较两个类别的已有数据，看看这个样本生成自哪个类别的可能性更大。\n",
    "\n",
    "由生成模型可以得到判别模型，但由判别模型得不到生成模型。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
