原创 機器學習(七):決策樹

決策樹(Decision Tree)可以算是分類算法中最著名的模型了,因爲它是基於人們最能理解的規則來構造分類器,且每一次分支都能給出解釋。 決策樹大家族十分龐大,這裏只介紹基於決策樹的單一分類模型,不包括基於深度學習的GBDT

原创 機器學習(九):k-means與聚類

k均值是基於劃分的聚類技術,其特徵爲聚類的結果趨向於類球形,而k值就是需要發現的k個類,一般由使用者指定。 k-means k均值通常用於n維連續空間(數值類型)中的數據,其算法思想比較簡單: 選擇k個初始質心,然後將樣本中的每

原创 深度學習(一):神經網絡和反向傳播

從這一節開始,將介紹神經網絡的相關內容。 博客不以介紹基本概念爲主,而是注重一些淺顯的推到和證明過程,以幫助理解。 如果你對神經網絡一竅不通,你應該去看神經網絡與深度學習 該博客可以看做是對於該文章的摘要。 概念圖 上述

原创 java(十四):transient與序列化

transient譯作臨時的,瞬態的意思,指的是在序列化的時候,被該關鍵字修飾的變量將不會被持久化。 比如用戶的密碼,身份證號,當希望將其保存到文件而又過濾掉這些敏感信息時,就可以使用該關鍵字修飾。 說道序列化,需要說明的是,

原创 機器學習(三):梯度下降法

本博客大部分參考了這篇博文 梯度 在微積分裏面,對多元函數的參數求∂偏導數,把求得的各個參數的偏導數以向量的形式寫出來,就是梯度。 比如函數f(x,y) , 分別對x,y求偏導數,求得的梯度向量就是(∂f/∂x,∂f/∂y)

原创 機器學習(二):邏輯迴歸

邏輯迴歸(Logistic Regression),是機器學習中的一個分類模型。 按理說邏輯迴歸並不是分類模型中最簡單的一個(最簡單的應該是KNN),但爲什麼要從該模型開始呢? 原因有二:1.邏輯迴歸涉及到的一些知識點是後面機

原创 java(十三):volatile與內存模型

作爲深入理解java中的鎖,首先應該掌握volatile的含義和用法。 線程之間的可見性 可見性對於java初學者並不是一個從字面上就可以簡單理解的名詞。 往深了說,要真正掌握volatile關鍵字,還需要有基本的jvm的知識,

原创 算法(三):動態規劃

不從定義等角度來考慮動態規劃的含義,而只是從解決問題的思路上來說明如何將問題化繁爲簡。 問題特點 通過一個經典的動態規劃來了解動態規劃問題。 如下一個圖,求出從起始點到終止點的最短路徑: 初看起來,這個問題就是一個最短路徑

原创 機器學習(五):KNN與維度災難

作爲一個過渡,這一節記錄關於knn的知識。 這篇博客不貼關於knn的具體細節了,knn是十分容易理解的,關於knn可參考的博客一大堆,貼一個講的好的吧一隻兔子理解knn KNN 選擇樣本數據集中與待預測值前k個最相似的樣本,取

原创 算法(一):排序

插入排序 插入排序的思想是:每次將一個待排序的元素排在該元素的前面已排序的子序列中。 直接插入排序 該排序是插入排序最直接的實現。 在排序過程中,進行了n-1趟,每趟操作都有比較和移動的操作,時間複雜度爲O(n^2),穩定。 折

原创 算法(二):樹,以及變形

二叉樹 從二叉樹說起, 先序遍歷:先訪問根,先序遍歷左子樹,先序遍歷右子樹 中序遍歷:中序遍歷左子樹,訪問根,中序遍歷右子樹 後序遍歷:後序遍歷左子樹,後序遍歷右子樹,訪問根 即,X序遍歷,指的是相對根而言。 由遍歷構造

原创 jvm(三):對象引用與垃圾回收

上一節講到,堆裏存放着java幾乎所有的對象實例,而對象只有不再被使用時,纔會被回收。 對象引用 如何判斷一個對象是否還被需要呢?其實唯一的準則就是是否還有變量引用它。 比如 Object o = new Object(); o

原创 java筆記(十一):Collections

作爲java集合框架的最後一部分,本節介紹下集合框架的內置功能以及實現這些功能的算法。 Collections類中的方法都是靜態方法,用於完成某一特定的功能,比如排序,查找等。下面從源碼層面介紹各種方法。 首先,需要對於一些名

原创 java(十二):線程池和ThreadPoolExecutor

閱讀前請確保對於Thread和Runnable熟悉,可以參考多線程,Thread和Runnable 本博客從源碼層面講起,到最後常用的四個線程池。 Executor 這是線程池實現的最底層的接口,只包含一個方法: public

原创 jvm(二):對象加載淺談

通過第一節的介紹,知道了對象實際上是分配在堆空間上的。那麼具體的對象分配過程是怎樣的呢? 虛擬機遇到一條new 指令時,先檢查該指令對應的方法(初始化方法)能否在方法區(具體來說是常量池)找到,並檢查對應的類是否被加載、解析和初