머신러닝을 활용한 웹 최적화 - A/B 테스트, 메타휴리스틱, 슬롯머신 알고리즘에서 베이즈 최적화까지
이쓰카 슈헤이 지음, 김연수 옮김 / 한빛미디어 / 2021년 6월
평점 :
장바구니담기



미국대통령 선거에서 오바마가 공식 웹사이트에서 여러이미지와 버튼의 조합중

조합의 등록률을 살표본결과 가족과 함꼐 찍은 이미지와 learn more 이라고 적힌 버튼의 조합이 가장 많은 등록률이 높았다고 한다.

이처럼 작은 변화가 웹사이트에 큰 영향을 끼치는 영향에 대해 이책은 방향을 제시하는 책이라 볼수있다.

1장에서는 머신러닝에 대해나 이론적인 내용을 주로 다루고 있다.


# 0이상 1이하의 범위를 1001개로 분할한 배열 thetas를 준비한다. import numpy as np thetas = np.linspace(0, 1, 1001) print(thetas) #가능도 함수 likelihood를 작성한다. likelihood = lambda r: thetas if r else (1 - thetas) #사후부포는 가능도 함수와 사전함수의 곱이 합계가 1이 되도록 정규화 한다. def posterior(r, prior): lp = likelihood(r) * prior return lp / lp.sum() #각 theta 가 같은 확률을 갖도록 확률을 나눕니다. p = np.array([1 / len(thetas) for _ in thetas]) print(p) #베이즈 추론을 한다. 클릭이 한번 일어났을때 r =1이 주어졌을때의 사후분포를 계산한다. p = posterior(1, p) # 클릭 print(p) #맵플롯립은 그래프를 그리기 위한 모듈이다. from matplotlib import pyplot as plt #가로축에는 thetas 세로축에는 p를 전달한다. plt.plot(thetas, p) plt.xlabel(r'$\theta$') plt.ylabel(r'$p(\theta)$') plt.show()




clicks = 2 noclicks = 38 p = np.array([1 / len(thetas) for theta in thetas]) for _ in range(clicks): p = posterior(1, p) for _ in range(noclicks): p = posterior(0, p) plt.plot(thetas, p) plt.xlabel(r'$\theta$') plt.ylabel(r'$p(\theta)$') plt.show()


시각화 과 0.05 부근으로 폭이 넓어지는 곡선이 생겼다.


조금씩 따라해보면서 이해해고 있는데 생각보다 내용이 쉽지는 않았다.

하지만 생소한 또하나의 분석기법이 될것같아 해당분야에 관심이 있는 사람이라면

머신러닝을 활용한 또하나의 분야를 파악해보는 계기가 될 것 같다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
유튜브 채널 운영을 위한 포토샵 디자인 - 채널 꾸미기부터 영상 편집 디자인 소스까지 한 권으로 끝낸다!
우디(서영열) 지음 / 제이펍 / 2021년 5월
평점 :
장바구니담기


유튜버한테는 유튜브 채널의 눈에 띄는 프로필이 중요한데

매 프로필마다 비용을 들이기에는 아깝다.

이책은 그런 독자에게 해결 능력을 스스로 키워주는 책이라 볼수있다.

초보자들을 위해 직접 유튜브 와 예제파일을 다운로드 하여

실습이 가능하다. photoshop 도 해년마다 버전이 나오면서 조금씩 달라지다 보니, 저자의 유튜브 강의가 고마울수 밖에 없다.


똑같은 폰트는 없어서 다른 폰트로 따라 해보았는데 , 대충 모양이 나오지만 잘해볼려면 좀더 연습이 필요할것 같다.

실습을 하면서 큰 어려움은 없었으나, 제작과정이 재법 정성이 필요하다는 것을 알게되고, 이밖에도 유튜브 채널 에 도움이되는 디자인들이 많다.

버전에 따라 실습하는데 조금 어려움이 있을수 있으니, 되도록이면 저자의cloud 버전과 일치하는게 좋을것 같다.

"제이펍"으로부터 제공받은 리뷰입니다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
김상형의 SQL 정복 - Oracle, MSSQL, MariaDB 기반 실습환경 소문난 명강의
김상형 지음 / 한빛미디어 / 2021년 5월
평점 :
절판


이책은 oracle mssql maria db 3가지의 db를 모두 체험할수 있다는 장점이있다.

그장점은 사용자가 dbms를 선택해야될 조건이있을때 해당 체험이 유용하게 작용할것이라 생각된다.

이책은 말그대로 sql에 대한 모든내용을 포함하고 있다.

앞장은 데이터 베이스 설명과 각 데이터 베이스별 설치환경을 구성하는 정보가 담겨져 있다.

기본적은 쿼리에서 사용하는 insert문이나 집계 함수나 select문 정보를 포함한다.

뒤에는 모델링에서 부터, 고급 함수들과 분석통계 등 다양한 기능들을 활용할수 있는 방법이 제공되고 있다.



커서나 고급 프로시저를 다루는 부분까지 세세하게 설명되어있고, 다양한 그림과 예제로 설명되어 있어, 기본기를 익히기에 정말 좋은책이다.

이책은 출간된지 얼마안되서 최신 버전으로 설명이 되어있으므로, 전체 sql 내용을 이해해야 하는 사람들에게 이책을 추천하고싶다.

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
MongoDB 완벽 가이드 - 실전 예제로 배우는 NoSQL 데이터베이스 기초부터 활용까지, 3판
크리스티나 초도로우 외 지음, 김인범 옮김 / 한빛미디어 / 2021년 3월
평점 :
장바구니담기


이 글에는 스포일러가 포함되어 있습니다.

몽고 db는 NoSQL 기반으로 의 DBMS다.


NoSQL


“Non Relational Operation Database SQL” 의 줄임말로써 “관계형 데이터베이스가 아닌 SQL” 입니다.


일반적인 관계형 데이터베이스에서는 데이터의 중복을 제거하고 무결성을 보장하기 위해서 정규화를 하게 되는데 이러한 정규화가 과도한 JOIN으로 인해 성능 저하가 있을 수 있다고한다.


이책은 이러한 문제를 잘극복할수있도록 처음 설치부터 컬렉션을 다루는 방법까지 자세하게 해당 책에서 내용을 담고있다.

몽고 db의 쉘은 자바스크립트 해석기이고, 자바스크립트 프로그램이 실행이 가능하다. > x = 200; 200 > x / 5; 40 > Math.sin(Math.PI /2) 1 > new Date("2019/1/1"); ISODate("2018-12-31T15:00:00Z") > "Hello, World!".replace("World","MongoDB"); Hello, MongoDB! replace 를 통해 글자를 수정가능하다. //현재 db조회 > db test //데이터베이스 선택 > use video switched to db video > db video //db변수에서 컬랙션에 접근한다. > db.movies video.movies //movie 변수를 생성한다. > movie={"title":"Star Wars:Episode IV -A New Hope","director":George Lucas","year":1977} 2021-04-03T20:20:48.637+0900 E QUERY [js] SyntaxError: missing } after property list @(shell):1:68 > movie={"title":"Star Wars:Episode IV -A New Hope","director":George Lucas","year":1977}; 2021-04-03T20:20:55.541+0900 E QUERY [js] SyntaxError: missing } after property list @(shell):1:68 > movie={"title":"Star Wars:Episode IV -A New Hope","director":"George Lucas","year":1977}; { "title" : "Star Wars:Episode IV -A New Hope", "director" : "George Lucas", "year" : 1977 }

collection을 다루고 있는 만큼 key,value 형식으로 값을 입력이 가능했다.

//무비컬렉션에 값을 저장한다. > db.movies.insertOne(movie) { "acknowledged" : true, "insertedId" : ObjectId("6068501d5890e9d90fadf7ea") } find를 통해 결과를 확인한다. > db.movies.find().pretty() { "_id" : ObjectId("6068501d5890e9d90fadf7ea"), "title" : "Star Wars:Episode IV -A New Hope", "director" : "George Lucas", "year" : 1977 } find와 findone은 컬렉션을 쿼리하는데 사용한다. > db.movies.findOne() { "_id" : ObjectId("6068501d5890e9d90fadf7ea"), "title" : "Star Wars:Episode IV -A New Hope", "director" : "George Lucas", "year" : 1977 }

해당 책을 통해 기본 부터, 활용하는데 익히는데 큰무리가 없었다.

몽고db를 익히고자 하는 데에 이책을 추천하고싶다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
처음 배우는 리액트 네이티브 - 크로스 플랫폼 앱 개발을 위한 실전 입문서
김범준 지음 / 한빛미디어 / 2021년 2월
평점 :
장바구니담기


이 글에는 스포일러가 포함되어 있습니다.


리액트 네이티브는 요즘 플로터와 더불어 인기를 끌고 있는 모바일 개발 플랫폼이다. .

리액트 자체가 좀 어렵고, 혼자 해볼생각이 두려웠는데 입문서가 쉽게 나온것같아 책을 접하게 되었다.


기본 환경설정부터 내용이 자세히 나와있어서 설치하는데 어려움 없이 설치 할수 있었다.

기본 설치환경이 기존에 프로그램이 설치되어있으면 충돌이 날수도있으므로, 지우고 새로운 버전으로 설치 해보는게 좋은것같다.

첫 에뮬 에서 실행을 하는데에 좀 기존 설치된 것과, 충돌이 나는 부분이 있어서, 노드를 삭제 하고 재설치 하고 우여곡절 끝에 첫화면을 띄우는데 성공하였다.

import { StatusBar } from 'expo-status-bar'; import React,{Fragment} from 'react'; import { StyleSheet, Text, View } from 'react-native'; // import {Text} from 'react-native' export default function App() { const name = "Hanbit"; return ( <View style={styles.container}> <Text style={styles.text}> //스타일에 텍스트에 따라 화면에 보여주는 장면이 다르다. {(()=>{if(name==='Hanbit') return 'My name is Hanbit'; else if(name ==='Beomjun') return 'My name is Beomjun'; else return 'My name is React Native'; })()} <StatusBar style="auto"/> </Text> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, text :{ fontSize:30, } });

생각보다 컴포넌트를 적용하는 코드는 기본초기 설치되는 소스가 있기 때문에 변경하여 적용하는것은 크게 어렵지 않은것같다.

import { StatusBar } from 'expo-status-bar'; import React,{Fragment} from 'react'; import { StyleSheet, Text, View } from 'react-native'; // import {Text} from 'react-native' //3항 연사자 실습 name의 값에 따라 화면에 표시되는 내용이 틀려진다. export default function App() { const name = "Hanbit"; return ( <View style={styles.container}> <Text style={styles.text}> My name is {name ==='Bemjun'?'Beomjun kim':'ReactNative'} </Text> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, text :{ fontSize:30, } });

가변적인 값에 따라 화면에 표시가 달라지는 예제 이다.


import { StatusBar } from 'expo-status-bar';

import React,{Fragment} from 'react'; import { StyleSheet, Text, View } from 'react-native'; // import {Text} from 'react-native' export default function App() { const name = "Beomjun"; return ( <View style={styles.container}> {name==='Beomjun' && (<Text style={styles.text}>My name is Bemjun</Text>)} {name!=='Beomjun' && (<Text style={styles.text}>My name is not Bemjun</Text>)} <StatusBar style="auto"/> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, text :{ fontSize:30, } });


아직 모든 실습을 해보지는 못했지만, 에뮬레이터를 통해 바로 실습을 확인할수있고, 쉬운예제부터 차근 차근 실습위주의 내용으로,

리액트네이티브에 대해 처음 접하고자 하는 사람에게 매우 좋은 책이라 생각한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo