大資料 機器學習 演算法概論
視訊解析 https://edu.csdn.net/course/play/7813
演算法概述
演算法是電腦科學領域最重要的基石之一,計算機語言和開發平臺日新月異,但萬變不離其宗的是那些演算法和理論,資料結構和演算法是軟體開發必備的核心基礎,是內功心法。下面舉例拿推薦演算法和分類演算法的實際場景做下舉例:
推薦演算法的應用場景,各種app(偏資訊)的應用外的手機推薦:
上面可以看出有米飯資訊,優酷視訊,抖音短視訊等推薦,他們都傾向於在下班休息的碎片時間進行推送。他們有的是根據你的關注和興趣進行提醒,有的是根據當下社會熱點進行推薦,還有的就是優惠券性質的推送。
再有就是應用內的推薦:
可以看出手機購物時,當我們搜尋某家商店的某件商品時。系統會根據我們的搜尋歷史和購買歷史進行相似物品的推薦。
分類演算法(醫學上的腫瘤判斷)
如何判斷細胞是否屬於腫瘤細胞呢?腫瘤細胞和普通細胞,有差別。但是,需要非常有經驗的醫生,通過病理切片才能判斷。如果通過機器學習的方式,使得系統自動識別出腫瘤細胞。此時的效率,將會得到飛速的提升。並且,通過主觀(醫生)+客觀(模型)的方式識別腫瘤細胞,結果交叉驗證,結論可能更加靠譜。
如何操作?通過分類模型識別。簡言之,包含兩個步驟。首先,通過一系列指標刻畫細胞特徵,例如細胞的半徑、質地、周長、面積、光滑度、對稱性、凹凸性等等,構成細胞特徵的資料。其次,在細胞特徵寬表的基礎上,通過搭建分類模型進行腫瘤細胞的判斷。
對於我們來說最簡單的應用案例。請看如下程式碼應用
對於我們來說最簡單的應用案例。請看如下程式碼應用,根據班級同學不同的分段給出評級。一個班級裡不同分段的人數不是相等的,而是有著峰值和低谷。案例:將學生的百分制成績轉換為五分製成績:≥90 分: A,80~89分: B,70~79分: C,60~69分: D,<60分: E。一般程式寫法:
/** * @author 張晨光 * 測試成績結果演算法1 */ public class TestOne { public static String getGrade(int grade){ String result=""; if(grade<60){ result="E"; }else if(grade<70){ result="D"; }else if(grade<80){ result="C"; }else if(grade<90){ result="B"; }else{ result="A"; } return result; } }
如果學生的總成績資料有10000條,則5%的資料需 1 次比較,15%的資料需 2 次比較,40%的資料需 3 次比較,40%的資料需 4 次比較,因此10000 個資料比較的
次數為: 10000 (5%+2×15%+3×40%+4×40%)=31500次
此種形狀的二叉樹,需要的比較次數是:10000 (3×20%+2×80%)=22000次,顯然:兩種判別樹的效率是不一樣的。
因此,不同的演算法程式的執行效率是不一樣的,我們儘量找到最優演算法,提高程式的執行效率。就像你編遊戲,人口最高只敢100,否則機器就特慢,人家就敢讓人口到300;你的農民遇到石頭就停住了,人家的農民就能繞過去,找最近的路。這些都離不開演算法工程師的功勞。
所謂“演算法”是指解決問題的一種方法步驟或者一個過程。
一個演算法應該具有以下幾個重要的特徵。
(1)輸入:一個演算法應該有n(n≥0)個初始的輸入資料。
(2)輸出:一個演算法可以沒有或有一個或多個輸出資訊,它們與輸入資料之間會有著某種特定的關係。
(3)確定性:演算法中的每一個步驟都必須具有確切的含義,不能有二義性。
(4)可行性:演算法中描述的每一個操作步驟都必須是可以執行的,也就是說,都可以通過計算機實現。
(5)有窮性:一個演算法必須在經歷有限個步驟之後正常結束,不能形成死迴圈。
思考題,3個數中求最大值,比較下哪種演算法比較好!!!
/**
*
* @author 張晨光
* 求3個數中的最大值
*
*/
public class TestFour {
public static int getMax1(int a,int b,int c){
int max;
if(a>b&&a>c){
max=a;
}else if(c>a&&c>b){
max=c;
}else
max=b;
return max;
}
//第2種寫法,其他比較幼稚的寫法,暫時不再提供
public static int getMax2(int a,int b,int c){
int max=a;
if(b>max){
max=b;
}
if(c>max){
max=c;
}
return max;
}
//三元運算子;
public static int getMax3(int a,int b,int c){
int max=(a>b)?a:b;
max=(max>c)?max:c;
//或者老老司機寫的
max =((a > b ? a : b) > c) ? (a > b ? a : b) : c;
return max;
}
}
相關文章
- 【方法論】機器學習演算法概覽機器學習演算法
- 大資料到底怎麼學:資料科學概論與大資料學習誤區大資料資料科學
- 大資料概論(2)大資料
- 機器學習 大資料機器學習大資料
- 李巨集毅機器學習課程筆記-1.機器學習概論機器學習筆記
- 大資料技術概論大資料
- 機器學習概覽機器學習
- 大資料技術之大資料概論大資料
- 隨機過程學習筆記——概論隨機筆記
- Hadoop系列001-大資料概論Hadoop大資料
- 機器學習 10大演算法機器學習演算法
- 大資料與雲端計算概論大資料
- [譯] 資料科學領域十大必知機器學習演算法資料科學機器學習演算法
- 9 大主題!機器學習演算法理論面試題大彙總機器學習演算法面試題
- 機器學習緒論機器學習
- 機器學習-資料清洗機器學習
- 大資料技術之Hadoop(入門)第1章 大資料概論大資料Hadoop
- 初學機器學習必備10大演算法機器學習演算法
- 《資料庫系統概論》5.0——常見約束 大學生學習筆記(主鍵 外來鍵)資料庫筆記
- 資料庫事務概論資料庫
- 資訊保安概論複習3
- 資訊保安概論複習-2
- 資訊保安概論期末複習
- 機器學習新手必看十大演算法機器學習演算法
- 機器學習高質量資料集大合輯機器學習
- 使用 .NET 5 體驗大資料和機器學習大資料機器學習
- 【機器學習】深度解析機器學習五大流派中主演算法精髓機器學習演算法
- 機器學習十大演算法之EM演算法機器學習演算法
- 資料庫概論 (一)資料庫概念資料庫
- 機器學習演算法機器學習演算法
- 機器學習-- 資料轉換機器學習
- 機器學習之清理資料機器學習
- 「資料科學家」必備的10種機器學習演算法資料科學機器學習演算法
- 緒論 初識機器學習機器學習
- 做資料分析需要學習機器學習嗎?機器學習
- [大資料][機器學習]之Model Card(模型卡片)介紹大資料機器學習模型
- 機器學習演算法學習筆記機器學習演算法筆記
- Scikit-Learn 與 TensorFlow 機器學習實用指南學習筆記 5 —— 如何為機器學習演算法準備資料?機器學習筆記演算法