對於那些非電腦科學行業的人,你會如何向他們解釋機器學習和資料探勘? 史丹福大學的印度學生、機器學習愛好者 pararth shah 在2023年12月22日的回覆,非常經典,得讚數有 3700+。下面內容,由@jiqihuman 翻譯。
假設有一天你準備去買點芒果。有個小販擺放了一車。你可以乙個乙個挑,然後小販根據你挑的芒果的斤兩來算錢(在印度的典型情況)。顯然,你想挑最甜最熟的芒果對吧(因為小販是按芒果的重量來算錢,而不是按芒果的品質來算錢的)。可是你準備怎麼挑呢?
你記得奶奶和你說過, 嫩黃的芒果比暗黃的甜。 所以你有了乙個簡單的判斷標準:只挑嫩黃的芒果。你檢查各個芒果的顏色, 挑了些嫩黃的,買單,走人,爽不?
可沒那麼簡單。
你回到家,開始慢慢品嚐你的芒果。你發現有一些芒果沒有想的那麼甜。你焦慮了。顯然,奶奶的智慧型不夠啊。挑芒果可不是看看顏色那麼簡答的。
經過深思熟慮(並且嘗了各種不同型別的芒果), 你發現那些大個兒的,嫩黃的芒果絕對是甜的,而小個兒,嫩黃的芒果,只有一半的時候是甜的(比如你買了100個嫩黃的芒果,50個比較大,50個比較小,那麼你會發現50個大個兒的芒果是甜的,而50個小個兒的芒果,平均只有25個是甜的)。
你對自己的發現非常開心,下次去買芒果的時候你就將這些規則牢牢的記在心裡。但是下次再來到市集的時候,你發現你最喜歡的那家芒果攤搬出了鎮子。於是你決定從其它賣芒果的小販那裡購買芒果,但是這位小販的芒果和之前那位產地不同。現在,你突然發現你之前學到的挑芒果辦法(大個兒的嫩黃的芒果最甜)又行不通了。你得從頭再學過。你在那位小販那裡,品嚐了各類芒果,你發現在這裡,小個兒、暗黃的芒果其實才是最甜的。
沒多久,你在其它城市的遠房表妹來看你。你準備好好請她吃頓芒果。但是她說芒果甜不甜無所謂,她要的芒果一定要是最多汁的。於是,你又用你的方法品嚐了各種芒果,發現比較軟的芒果比較多汁。
之後,你搬去了其它國家。在那裡,芒果吃起來和你家鄉的味道完全不一樣。你發現綠芒果其實比黃芒果好吃。
再接著,你娶了一位討厭芒果的太太。她喜歡吃蘋果。你得天天去買蘋果。於是,你之前積累的那些挑芒果的經驗一下子變的一文不值。你得用同樣的方法,去學習蘋果的各項物理屬性和它的味道間的關係。你確實這樣做了,因為你愛她。
現在想象一下,最近你正在寫乙個電腦程式幫你挑選芒果(或者蘋果)。你會寫下如下的規則:
現在想象一下,最近你正在寫乙個電腦程式幫你挑選芒果(或者蘋果)。你會寫下如下的規則:12
if
(顏色是嫩黃 and 尺寸是大的 and 購自最喜歡的小販): 芒果是甜的
if
(軟的): 芒果是多汁的
等等等等。
你會用這些規則來挑選芒果。你甚至會讓你的小弟去按照這個規則列表去買芒果,而且確定他一定會買到你滿意的芒果。
但是一旦在你的芒果實驗中有了新的發現, 你就不得不手動修改這份規則列表。你得搞清楚影響芒果質量的所有因素的錯綜複雜的細節。
如果問題越來越複雜, 則你要針對所有的芒果型別,手動地制定挑選規就變得非常困難。你的研究將讓你拿到芒果科學的博士學位(如果有這樣的學位的話)。
可誰有那麼多時間去做這事兒呢。
機器學習演算法是由普通的演算法演化而來。通過自動地從提供的資料中學習,它會讓你的程式變得更「聰明」。
你從市場上的芒果裡隨機的抽取一定的樣品(訓練資料), 製作一張**, 上面記著每個芒果的物理屬性, 比如顏色, 大小, 形狀, 產地, 賣家, 等等。(這些稱之為特徵)。
還記錄下這個芒果甜不甜, 是否多汁,是否成熟(輸出變數)。你將這些資料提供給乙個機器學習演算法(分類演算法/回歸演算法),然後它就會學習出乙個關於芒果的物理屬性和它的質量之間關係的模型。
下次你再去市集, 只要測測那些芒果的特性(測試資料),然後將它輸入乙個機器學習演算法。演算法將根據之前計算出的模型來**芒果是甜的,熟的, 並且/還是多汁的。
該演算法內部使用的規則其實就是類似你之前手寫在紙上的那些規則(例如, 決策樹),或者更多涉及到的東西,但是基本上你就不需要擔心這個了。
瞧,你現在可以滿懷自信的去買芒果了,根本不用考慮那些挑選芒果的細節。更重要的是,你可以讓你的演算法隨著時間越變越好(增強學習),當它讀進更多的訓練資料, 它就會更加準確,並且在做了錯誤的**之後自我修正。但是最棒的地方在於,你可以用同樣的演算法去訓練不同的模型, 比如**蘋果質量的模型, 桔子的,香蕉的,葡萄的,櫻桃的,西瓜的,讓所有你心愛的人開心:)
這,就是專屬於你的機器學習,是不是很酷啊。
機器學習:讓你的演算法更聰明, 所以你就可以偷懶嘍 :)
C 如何向外部類新增事件
作為初學者考慮外部的乙個類中的乙個的訊號我怎麼觸發在我主類裡面的訊號。如果是已有的控制項你只要找到它委託的型別 this.textbox1.textchanged new system.eventhandler this.textbytemax 委託型別就是 system.eventhandler ...
趣文 如何成為Google軟體工程師?(二)
我們會根據每個人的情況安排有針對性的面試 面試內容包括標準演算法,設計,編碼能力 討論 所有的面試官都具有博士學位 google軟體工程師如是說 問 在google工作,最擔心的一點是什麼?答 公司的零食太多了,在google工作要防止長胖 問 在google工作,最輕鬆的事情是什麼?答 坐在桌子上...
趣文 如何成為Google軟體工程師?(二)
我們會根據每個人的情況安排有針對性的面試 面試內容包括標準演算法,設計,編碼能力 討論 所有的面試官都具有博士學位 google軟體工程師如是說 問 在google工作,最擔心的一點是什麼?答 公司的零食太多了,在google工作要防止長胖 問 在google工作,最輕鬆的事情是什麼?答 坐在桌子上...